c - Why does OpenMP forbid use lastprivate in "#pragma omp parallel"? -
my openmp program this:
#include <stdio.h> #include <omp.h> int main (void) { int = 10; #pragma omp parallel lastprivate(i) { printf("thread %d: = %d\n", omp_get_thread_num(), i); = 1000 + omp_get_thread_num(); } printf("i = %d\n", i); return 0; } use gcc compile , generate following errors:
# gcc -fopenmp test.c test.c: in function 'main': test.c:8:26: error: 'lastprivate' not valid '#pragma omp parallel' #pragma omp parallel lastprivate(i) ^~~~~~~~~~~ why openmp forbid use lastprivate in #pragma omp parallel?
the meaning of lastprivate, assign "the sequentially last iteration of associated loops, or lexically last section construct [...] original list item."
hence, there no meaning pure parallel construct. not idea use meaning "the last thread exit parallel construct" - race condition.
Comments
Post a Comment