私は、n回の反復のためにpxqマトリックスのConwayのGOLの実行で行われる遷移の数を計算しようとしています。例えば、最初の状態が1つの点滅(以下のように)である1回の反復が与えられた場合。 5つの移行(2人の出生、1人の生存、2人の過少人口による死亡)があります。私はすでにこれを実現していますが、このロジックをCUDAを使用して実行するように変換したいと思います。以下は私が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プログラミングなどのアイデアが必要です。 ? – Rup
申し訳ありませんが、私はどのように並列処理にアプローチすべきですか? – dnbwise