From 2b1f00349ab69e5bfdd9990194aa0768c1e8dfb8 Mon Sep 17 00:00:00 2001 From: Alejandro Rico Date: Tue, 1 Sep 2020 17:57:50 -0500 Subject: [PATCH] Fix stencil_calc OpenMP implementation --- openmp/Makefile | 4 ++-- openmp/stencil.c | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/openmp/Makefile b/openmp/Makefile index 136f146..fc370a7 100644 --- a/openmp/Makefile +++ b/openmp/Makefile @@ -1,5 +1,5 @@ -CC = cc -LD = cc +CC = mpicc +LD = mpicc CPPFLAGS = -I. CFLAGS = -O3 -fopenmp LDFLAGS = diff --git a/openmp/stencil.c b/openmp/stencil.c index 7055bc3..2d7b1c7 100644 --- a/openmp/stencil.c +++ b/openmp/stencil.c @@ -82,16 +82,16 @@ void stencil_driver(int var, int cacl_stage) void stencil_calc(int var, int stencil_in) { int i, j, k, in; - double sb, sm, sf, work[x_block_size+2][y_block_size+2][z_block_size+2]; + double sb, sm, sf; block *bp; int tid; if (stencil_in == 7) { -#pragma omp parallel default(shared) private(i, j, k, bp) -{ +#pragma omp parallel for default(shared) private(i, j, k, bp) for (in = 0; in < sorted_index[num_refine+1]; in++) { bp = &blocks[sorted_list[in].n]; + double work[x_block_size+2][y_block_size+2][z_block_size+2]; for (i = 1; i <= x_block_size; i++) for (j = 1; j <= y_block_size; j++) for (k = 1; k <= z_block_size; k++) @@ -107,15 +107,14 @@ void stencil_calc(int var, int stencil_in) for (k = 1; k <= z_block_size; k++) bp->array[var][i][j][k] = work[i][j][k]; } -} total_fp_divs += (double) num_active*num_cells; total_fp_adds += (double) 6*num_active*num_cells; } else { -#pragma omp parallel default(shared) private (i, j, k, bp, sb, sm, sf) -{ +#pragma omp parallel for default(shared) private (i, j, k, bp, sb, sm, sf) for (in = 0; in < sorted_index[num_refine+1]; in++) { bp = &blocks[sorted_list[in].n]; + double work[x_block_size+2][y_block_size+2][z_block_size+2]; for (i = 1; i <= x_block_size; i++) for (j = 1; j <= y_block_size; j++) for (k = 1; k <= z_block_size; k++) { @@ -153,7 +152,6 @@ void stencil_calc(int var, int stencil_in) for (k = 1; k <= z_block_size; k++) bp->array[var][i][j][k] = work[i][j][k]; } -} total_fp_divs += (double) num_active*num_cells; total_fp_adds += (double) 26*num_active*num_cells;