Я работаю над кодом, и я пытаюсь использовать больше потоков в соответствии с руководством, которое мне предоставлено. В нем говорится: «Параллелизм достигается с помощью OpenMP #pragma для динамического выделения строк изображения в разные потоки с потоком для каждого процессора или ядра». А вот в коде:OpenMP #pragma, только один поток, работающий над моим кодом
#pragma omp parallel for schedule(dynamic, 1) // OpenMP
for (int y = 0; y<height; y++){ // Loop over image rows
fprintf(stderr, "\rRendering (%d spp) %5.2f%%", samps, 100.*y/(height - 1));
for (unsigned short x = 0, rng[3] = { 0, 0, y*y*y }; x<width; x++) { // Loop cols
...
Я попытался изменить количество рабочих потоков в соответствии с этим ..
Я искал в руководстве, пытаясь найти решение. Я узнал, что расписание используется для определения того, как итерации цикла разделяются между потоками. Поэтому «динамический» используется, когда итерации цикла делятся на куски, размер которых зависит от меня. Поскольку в этой строке кода размер был установлен на «1», я попытался изменить его на большее число, но результат не изменился, и все же используется только один поток.
Так что я попытался установить его вместо «статического», но все равно не улучшился.
Я попробовал опцию «АВТО» таким образом, чтобы сеанс планирования был до компилятора .. до сих пор нет решения.
Я также обнаружил, что частное (г) означает, что переменная г является частным для каждого потока, а не общий, но что на самом деле не меняет конечный результат.
Компилятор cl.exe .. Я использую Visual Studio 2013. Любой способ увеличить количество потоков?
Да, как насчет включения OpenMP в Visual Studio. Добавьте '/ openmp' в командную строку или щелкните переключатель в конфигурации проекта. –