【发布时间】:2010-12-14 10:42:40
【问题描述】:
我正在尝试计算在 Conway 的 GOL 运行中对 pxq 矩阵进行 n 次迭代的转换次数。例如,给定 1 次迭代,初始状态为 1 个闪烁(如下所示)。将有 5 次过渡(2 人出生,1 人存活,2 人死于人口不足)。我已经完成了这项工作,但我想将此逻辑转换为使用 CUDA 运行。以下是我要移植到 CUDA 的内容。
代码:
static void gol() // call this iterations x's
{
int[] tempGrid = new int[rows * cols]; // grid holds init conditions
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
tempGrid[i * cols + j] = grid[i * cols + j];
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
int numNeighbors = neighbors(i, j); // finds # of neighbors
if (grid[i * cols + j] == 1 && numNeighbors > 3)
{
tempGrid[i * cols + j] = 0;
overcrowding++;
}
else if (grid[i * cols + j] == 1 && numNeighbors < 2)
{
tempGrid[i * cols + j] = 0;
underpopulation++;
}
else if (grid[i * cols + j] == 1 && numNeighbors > 1)
{
tempGrid[i * cols + j] = 1;
survival++;
}
else if (grid[i * cols + j] == 0 && numNeighbors == 3)
{
tempGrid[i * cols + j] = 1;
birth++;
}
}
}
grid = tempGrid;
}
【问题讨论】:
-
您具体需要什么帮助 - 如何并行化、存储、实际 CUDA 编程等方面的想法?
-
对不起,我应该如何处理并行性?
标签: cuda parallel-processing conways-game-of-life