Openmp #pragma omp parallel vs #pragma omp parallel for - PullRequest
0 голосов
/ 06 августа 2020

Когда я пишу этот код:

    int i = 0;
    int total = 0;
#pragma omp parallel
    {
        int iID = omp_get_thread_num();
        printf("1.I am Thread %d\n", omp_get_thread_num());
#pragma omp for
        for (i = 0; i < 20000; i++)
        {
            total += i;
            int iID = omp_get_thread_num();
            printf("2.I am Thread %d\n", omp_get_thread_num());
        }
    }
    std::cout << "OpenMP total:" << total<< std::endl;

, я получаю правильный результат. Но у меня есть вопрос. В for l oop разве не требуется #pragma omp atomic, чтобы убедиться, что «total» вычисляется правильно?

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