Я написал простую программу для того, чтобы проверить, работает ли у меня распараллеливание 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;
}
На картинке - то , что выводит программа.
#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.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть функция сравнивающая два объекта и фиксирующая что именно различается в объектахВ словаре хранятся типы изменений и указатели на метод...
Ситуация заключается в том, что не могу отключить copy elisionВ проекте присутствуют конструкторы с глобальными побочными эффектами
Каким образом в Visual Studio Code можно организовать компиляцию многофайлового проектаК примеру имеется 3 файла: main