summaryrefslogtreecommitdiff
path: root/cuda-global/src
diff options
context:
space:
mode:
Diffstat (limited to 'cuda-global/src')
-rw-r--r--cuda-global/src/game.cu2
-rw-r--r--cuda-global/src/main.cu18
2 files changed, 10 insertions, 10 deletions
diff --git a/cuda-global/src/game.cu b/cuda-global/src/game.cu
index 9021916..b0b5f61 100644
--- a/cuda-global/src/game.cu
+++ b/cuda-global/src/game.cu
@@ -5,7 +5,7 @@ __device__ int neighbors(struct GAME game, int x, int y) {
for (int dy = -1; dy <= 1; dy++) {
for (int dx = -1; dx <= 1; dx++) {
- if (!(dx == 0 && dy == 0) && (x+dx) > 0 && (y+dy) > 0 && (x+dx) < game.width+(game.padding*2) && (y+dy) < game.height+(game.padding*2)) {
+ if (!(dx == 0 && dy == 0) && (x+dx) >= 0 && (y+dy) >= 0 && (x+dx) < game.width+(game.padding*2) && (y+dy) < game.height+(game.padding*2)) {
if (game.grid[(y+dy) * (game.width+game.padding*2) + (x+dx)]) {
n++;
}
diff --git a/cuda-global/src/main.cu b/cuda-global/src/main.cu
index 1aea812..f906b2a 100644
--- a/cuda-global/src/main.cu
+++ b/cuda-global/src/main.cu
@@ -18,7 +18,7 @@
*/
#define BLOCK 32
#define PADDING 10
-//#define VERBOSE 1
+#define VERBOSE 1
#define SEED 100
// gpuErrchk source: https://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the-cuda-runtime-api
@@ -39,7 +39,7 @@ void simulate(int argc, char** argv) {
char* filename;
struct GAME game;
game.padding = PADDING;
- int iterations, log_each_step, block_size;
+ int iterations, log_each_step;
if (argc == 7) {
filename = argv[2];
game.width = atoi(argv[3]);
@@ -47,7 +47,7 @@ void simulate(int argc, char** argv) {
iterations = atoi(argv[5]);
log_each_step = atoi(argv[6]);
} else {
- printf("Usage: ./gol simulate <filename | random> <width> <height> <iterations> <log-each-step?1:0> <block-size>\n");
+ printf("Usage: ./gol simulate <filename | random> <width> <height> <iterations> <log-each-step?1:0>\n");
filename = "random";
game.height = 10;
game.width = 10;
@@ -69,10 +69,10 @@ void simulate(int argc, char** argv) {
char iteration_file[1024];
unsigned char* grid_d;
- unsigned char* newGrid_d;
+ unsigned char* newGrid;
gpuErrchk(cudaMalloc(&grid_d, size));
gpuErrchk(cudaMemcpy(grid_d, game.grid, size, cudaMemcpyHostToDevice));
- gpuErrchk(cudaMalloc(&newGrid_d, size));
+ gpuErrchk(cudaMalloc(&newGrid, size));
unsigned char* grid_h = (unsigned char*)malloc(size);
unsigned char* temp;
@@ -92,15 +92,15 @@ void simulate(int argc, char** argv) {
for (int i = 0; i <= iterations; i++) {
if (i > 0) {
cudaEventRecord(startLife);
- next<<<dim_grid, dim_block>>>(game, newGrid_d);
+ next<<<dim_grid, dim_block>>>(game, newGrid);
cudaEventRecord(stopLife);
cudaEventSynchronize(stopLife);
cudaEventElapsedTime(&localTime, startLife, stopLife);
timeComputingLife += localTime/1000;
temp = game.grid;
- game.grid = newGrid_d;
- newGrid_d = temp;
+ game.grid = newGrid;
+ newGrid = temp;
}
if (log_each_step) {
gpuErrchk(cudaMemcpy(grid_h, game.grid, size, cudaMemcpyDeviceToHost));
@@ -125,7 +125,7 @@ void simulate(int argc, char** argv) {
clock_t totalEnd = clock();
printf("\n===Timing===\nTime computing life: %f\nClock time: %f\n", timeComputingLife, ((double)totalEnd - (double)totalStart)/CLOCKS_PER_SEC);
- cudaFree(&newGrid_d);
+ cudaFree(&newGrid);
cudaFree(&grid_d);
cudaFree(&game.grid);
free(grid_h);