Hello I am beginner and would like to convert this code in C, game of life, to Cuda, but I find it difficult to write the kernel.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
const int r = 22, c = 80;
void display(int size_2[80]);
void display2(int size_2[80]);
void vizinho(int size_2[80], int size_2hold[80]);
void vizinho2(int size_2[80], int size_2hold[80]);
int main()
{
char a;
int size_2[r][c], size_2hold[r][c];
printf("Se voce quer gerar aperte enter.\n");
printf("Se voce quer sair pressione 'n'\n");
srand(time(0));
while(a != ‘n’ )
{
vizinho(size_2, size_2hold);
vizinho2(size_2, size_2hold);
display(size_2);
display2(size_2);
scanf(“%c”, &a);
}
return 0;
}
// 1 vivo e 0 morto
//faz uma varredura e aplica a regra//
//se uma celula esta sozinha ela morre de solidão
//se tem tres vizinhos morre de superpopulação
//se tem dois vive
//com o Ãndice controla-se a posição das células e seus estados
//pois se a é incrementado tres vezes joga “0” na próxima iteração
void vizinho(int size_2[80], int size_2hold[80])
{
int x;
for(x = 0; x < r; x++)
{
int y;
for(y = 0; y < c; y++)
{
int a = 0;
{
if (size_2[y-1] == ‘1’)
a++;
else
if (size_2[x-1][y-1] == ‘1’)
a++;
else
if (size_2[x-1][y] == ‘1’)
a++;
else
if (size_2[x-1][y+1] == ‘1’)
a++;
else
if (size_2[y+1] == ‘1’)
a++;
else
if (size_2[x+1][y+1] == ‘1’)
a++;
else
if (size_2[x+1][y] == ‘1’)
a++;
else
if (size_2[x+1][y-1] == ‘1’)
a++;
if(a == 3 || a == 1)
{
size_2hold[y] == ‘0’;
}
else
{
size_2hold[y] == ‘1’;
}
}
}
}
printf(“\n”);
}
//varre a matrix e atualiza.
void vizinho2(int size_2[80], int size_2hold[80])
{
int x;
int y;
for(x = 0; x < r; x++)
{
for(y = 0; y < c; y++)
{
size_2[y] = size_2hold[y];
}
}
printf("\n");
}
//varre a matrix e gera numeros aleatórios para os Ãndices atribuindo estados para a matrix.
void display(int size_2[80])
{
int x;
int y;
for(x = 0; x < r; x++)
{
for(y = 0; y < c; y++)
{
if(size_2[y] != ‘0’)
{
size_2[rand()%22][rand()%80] = ‘0’;
size_2[y] = ‘1’;
}
}
}
}
//imprime na tela
void display2(int size_2[80])
{
int x;
for(x = 0; x < r; x++)
{
int y;
for(y = 0; y < c; y++)
{
printf(“%c”, size_2[y]);
}
printf(“\n”);
}
}
Thank you! very much.