Главная /
Параллельное программирование с OpenMP /
Пусть следующая программа скомпилирована компилятором, поддерживающим вложенный параллелизм. #include <stdio.h> #include "omp.h" int counter; int main() { counter=0; omp_set_nested(0); #pragma omp parallel num_threads(2) { #pragma omp parallel num_t
Пусть следующая программа скомпилирована компилятором, поддерживающим вложенный параллелизм.
#include <stdio.h>
#include "omp.h"
int counter;
int main()
{
counter=0;
omp_set_nested(0);
#pragma omp parallel num_threads(2)
{
#pragma omp parallel num_threads(2)
{
#pragma omp atomic
counter++;
}
}
printf("Counter=%d\n",counter);
}
Определите значение переменной counter
по завершении выполнения этой программы:
вопрос
Правильный ответ:
1
2
4
Сложность вопроса
79
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Спасибо за подсказками по интуиту.
26 апр 2017
Другие ответы на вопросы из темы программирование интуит.
- # Слабая модель консистентности памяти определяется следующим условием:
- # Найдите ошибку в следующем фрагменте программы: #pragma omp parallel default(shared) { int i, j; #pragma omp for for (i=0; i<n; i++) { #pragma omp for for (j=0; j<n; j++) work(i, j); } }
- # Найдите ошибку в следующем фрагменте программы: #pragma omp parallel default(shared) { int i; #pragma omp for lastprivate(i) for (i=0; i<n; i++) { i+=2; work(i); } }
- # Поиск ошибок в OpenMP-программе, выполняемый Intel Thread Checker, основан на:
- # Выберите наилучшую стратегию распределения витков цикла между нитями, которая для следующего фрагмента программы даст минимальное время выполнения: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ omp_set_num_threads (4); #pragma omp parallel { #pragma omp for schedule (runtime) for(int i=0; i<40;i++) { sleep (msec); } } }