int main() { double *A, suma, tiempo; A = (double *)malloc(N*sizeof(double)); tiempo = omp_get_wtime(); #pragma parallel { #pragma omp sections { #pragma section { fill_rand(N, A); // Productor flag=1; #pragma omp flush } #pragma section { suma = Sum_array(N, A); // Consumidor } } } tiempo = omp_get_wtime() - tiempo; printf(" La suma es %f en %f segundos\n",suma, tiempo); }
int main() { double *A, sum, runtime; int numthreads, flag = 0; omp_set_num_threads(Nthreads); A = (double *)malloc(N*sizeof(double)); #pragma omp parallel { #pragma omp master { numthreads = omp_get_num_threads(); if(numthreads != 2) { printf("error: incorect number of threads, %d \n",numthreads); exit(-1); } runtime = omp_get_wtime(); } #pragma omp barrier #pragma omp sections { #pragma omp section { fill_rand(N, A); #pragma omp flush flag = 1; #pragma omp flush (flag) } #pragma omp section { #pragma omp flush (flag) while (flag != 1){ #pragma omp flush (flag) } #pragma omp flush sum = Sum_array(N, A); } } #pragma omp master runtime = omp_get_wtime() - runtime; } printf(" with %d threads and %lf seconds, The sum is %lf \n",numthreads,runtime,sum); }
int main() { double *A, sum, runtime; int flag = 0; A = (double *)malloc(N*sizeof(double)); runtime = omp_get_wtime(); fill_rand(N, A); // Producer: fill an array of data sum = Sum_array(N, A); // Consumer: sum the array runtime = omp_get_wtime() - runtime; printf(" In %f seconds, The sum is %f \n",runtime,sum); }