Я пытаюсь вычислить количество переходов, которые будут сделаны при запуске 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;
}