OpenMP - возможно ли использовать только lastprivate (var) вместо firstprivate (var) lastprivate (var) во всех случаях? - PullRequest
2 голосов
/ 14 июля 2020

Код для теста (у моего процессора 6 ядер, вы можете заменить omp_set_num_threads (12) на omp_set_num_threads (4), если у вас не так много ядер:

#include <stdio.h>
#include <omp.h>
#include<time.h>
int main()
{
    int A;
    omp_set_num_threads(12);
    clock_t begin, end;
    begin = clock();
#pragma omp parallel for firstprivate(A) lastprivate(A)
    for (int i = 0; i < 1000000000; i++)
    {
        A = i;
        int num = omp_get_thread_num();
        //printf("Thread %i got %d\n", num, A);
    }
    end = clock();
    printf("At the end, A will be: %i\n", A);
    printf("Time: %f", (double)(end - begin) / CLOCKS_PER_SEC);
    return 0;
}

Результат останется прежним, если Я удаляю firstprivate(A), использую lastprivate(A) только для этого l oop, поэтому мне любопытно, могу ли я использовать только lastprivate(A) вместо firstprivate(A) lastprivate(A) в любых случаях.

Среда:

Windows 10 + Visual Studio 2019, C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...