База ответов ИНТУИТ

Intel Parallel Programming Professional (Introduction)

<<- Назад к вопросам

Имеется следующий код на OpenMP
double a = 10.0;#pragma omp parallel private(a){ ...}
Можно ли средствами OpenMP сделать так, чтобы локальные копии переменной а в каждом потоке имели то же значение, что и исходная переменная a?

(Отметьте один правильный вариант ответа.)

Варианты ответа
нет, такого способа не существует
да, это будет сделано автоматически
да, нужно заменить параметр private на параметр firstprivate(Верный ответ)
Похожие вопросы
В программе на OpenMP распараллелен следующий цикл
#pragma omp parallel for for (i = 0; i < 1000; i++) for (j = 0; j < 1000; j++)   с[i] += a[i][j] * b[j];
Является ли данная параллельная реализация корректной?
В OpenMP-программе объявлены переменные a и b типа int и массив c типа double. Отметьте верные варианты использования директивы omp atomic.
Операция изменения переменной цикла index в директиве #pragma omp parallel for может иметь следующие формы:
В OpenMP-программе имеется два распараллеленных цикла. Возможна ли ситуация, когда один поток закончит выполнение обоих циклов, в то время как другой поток все еще выполняет код первого цикла, при условии что все потоки запущены средствами OpenMP?
Пусть написан следующий параллельный код:
#pragma omp parallel for shared(a) private(i,j,sum) \                    schedule (dynamic, CHUNK) ordered{  for (i=0; i < NMAX; i++) {   sum = 0;   for (j=i; j < NMAX; j++)     sum += a[i][j]; #pragma omp ordered   printf ("Сумма элементов строки %d равна %f\n",i,sum);}
Будет ли суммирование происходить параллельно?
В программе на OpenMP распараллелен следующий цикл
#pragma omp for(i = 0; i < 1000; i++) for (j = 0; j < 1000; j++)   с[i] += a[i][j] * b[j];
Является ли данная параллельная реализация корректной?
В программе на OpenMP распараллелен следующий цикл, где выполнение функции f() может занимать существенно разное время в зависимости от значения входного аргумента
#pragma omp for(i = 0; i < 1000; i++)   с += func(i);
Каким образом можно добиться наилучшей балансировки вычислительной нагрузки между потоками?
Вы написали параллельную программу с использованием OpenMP на языке C. Распараллеливание осуществляется за счёт одной строчки: “#pragma omp parallel for”. Другие средства OpenMP не используются, переменные окружения не меняются. Вы запустили вашу программу 100 раз на 1-оядерной машине. 58 раз программа отработала корректно, 32 раза программа выдала не корректные данные, 10 раз программа не доработала до конца и завершила работу с ошибкой. Чем вы воспользуетесь в первую очередь при дальнейшей разработке программы?
Для управления распределением итераций цикла между потоками в OpenMP используется параметр schedule директивы for. При типе расписания static:
Для управления распределением итераций цикла между потоками в OpenMP используется параметр schedule директивы for. При типе расписания dynamic: