Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int min = 0;
- int myr = 0;
- int temp[SIZE][SIZE];
- int size = 0;
- ...//some initialization
- omp_set_num_threads(1);
- start_time = omp_get_wtime();
- #ifdef _OPENMP
- #pragma omp parallel for firstprivate(min, size) reduction(+:myr)
- #endif
- for(int i = 0; i < size; i++){
- min = INFINITY;
- for(int j = 0; j < size; j++){
- if (temp[i][j] < min)
- min = temp[i][j];
- }
- myr+=min;
- for(int j = 0; j < size; j++)
- temp[i][j]-=min;
- }
- end_time = omp_get_wtime();
- int const size0 = size;
- #ifdef _OPENMP
- #pragma omp parallel for reduction(+:myr)
- #endif
- for(int i = 0; i < size0; i++){
- int min = INFINITY;
- int * tmp = temp[i];
- for(int j = 0; j < size0; j++){
- if (tmp[j] < min)
- min = tmp[j];
- }
- for(int j = 0; j < size0; j++)
- tmp[j]-=min;
- myr+=min;
- }
- #pragma omp parallel private(myr_private) shared(myr)
- {
- myr_private = 0;
- #pragma omp for
- for(int i = 0; i < size; i++){
- int min = INFINITY;
- int * tmp = temp[i];
- for(int j = 0; j < size; j++){
- if (tmp[j] < min)
- min = tmp[j];
- }
- for(int j = 0; j < size; j++)
- tmp[j]-=min;
- myr_private+=min;
- }
- #pragma omp critical
- {
- myr+=myr_private;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement