Не работает распараллеливание в OpenMP

135
30 ноября 2019, 19:20

Я написал простую программу для того, чтобы проверить, работает ли у меня распараллеливание OpenMp.В свойствах проекта я подключил поддержку OpenMp (C++\Язык\Поддежка OpenMp). В коде я указал количество потоков, равное 4. Функция omp_get_max_num() возвращает 4. Но я не понимаю, почему всегда работает только один поток (это видно по количеству выводов).

#include "stdafx.h" 
#include <iostream> 
#include "omp.h" 
using namespace std;
int main()
{
    omp_set_num_threads(4);
    int num;
    int max_num;
    int num_ths, th_num;
    #pragma omp parallel private (num_ths, th_num) 
    {
        th_num = omp_get_thread_num();
        num_ths = omp_get_num_threads();
        printf("I am ready %d from %d \n", th_num, num_ths);
    }
    #pragma omp parallel 
    {
        num = omp_get_num_threads();
        max_num = omp_get_max_threads();
    }
    cout<< "num of threads = " << num << endl;
    cout << "max num of threads = " << max_num << endl;
}

На картинке - то , что выводит программа.

Answer 1
#pragma omp parallel num_threads(4) private (num_ths, th_num)
{
    th_num = omp_get_thread_num();
    num_ths = omp_get_num_threads();
    printf("I am ready %d from %d \n", th_num, num_ths);
}

И не забыть ключик компилятора /openmp.

Здесь информация о директивах OpenMP.

READ ALSO
На сколько плохо такое решение?

На сколько плохо такое решение?

Есть функция сравнивающая два объекта и фиксирующая что именно различается в объектахВ словаре хранятся типы изменений и указатели на метод...

136
Как отключить оптимизацию copy elision?

Как отключить оптимизацию copy elision?

Ситуация заключается в том, что не могу отключить copy elisionВ проекте присутствуют конструкторы с глобальными побочными эффектами

134
Visual Studio Code Компиляция многофайлового проекта

Visual Studio Code Компиляция многофайлового проекта

Каким образом в Visual Studio Code можно организовать компиляцию многофайлового проектаК примеру имеется 3 файла: main

124
C++ Variadic templates

C++ Variadic templates

Здравствуйте есть следующий класс, со следующей реализацией:

120