Главная /
Параллельное программирование с OpenMP /
Определите количество нитей, между которыми будет распределена работа в параллельной области: #include "omp.h" void work(int i); int main () { int n; n=10; omp_set_num_threads(2); #pragma omp parallel num_threads(4) if (n>20) { #pragma omp for for (int
Определите количество нитей, между которыми будет распределена работа в параллельной области:
#include "omp.h"
void work(int i);
int main () {
int n;
n=10;
omp_set_num_threads(2);
#pragma omp parallel num_threads(4) if (n>20)
{
#pragma omp for
for (int i=0;i<n;i++) work (i);
}
}
вопрос
Правильный ответ:
1
2
4
Сложность вопроса
78
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Если бы не данные решения - я бы не смог решить c этими тестами интуит.
24 ноя 2018
Аноним
Я помощник профессора! Незамедлительно удалите сайт с ответами на интуит. Пишу жалобу
30 июл 2017
Другие ответы на вопросы из темы программирование интуит.
- # Пусть W(x)a – операция записи в переменную x значения a. Пусть R(x)a – операция чтения переменной x, где a – прочитанное значение переменной x. Пусть S - операция синхронизации. Следующая последовательность событий: P1: W(x)aW(x)bSP2:R(x)aR(x)bSP3:R(x)bR(x)aS
- # Рассмотрим фрагмент OpenMP-программы: #include <omp.h> int n=1; int main (void) { omp_set_nested(1); omp_set_dynamic(1); omp_set_num_threads(2); #pragma omp parallel if (n>10) {/*параллельная область*/ … } } Для выполнения параллельной области будет создана группа нитей, состоящая из:
- # Пусть следующая программа скомпилирована компилятором, поддерживающим вложенный параллелизм. #include <stdio.h> #include "omp.h" int counter; int main() { counter=0; omp_set_nested(0); #pragma omp parallel num_threads(2) { if (omp_get_thread_num() == 0) { #pragma omp parallel num_threads(2) { #pragma omp atomic counter++; } } } printf("Counter=%d\n",counter); } Определите значение переменной counter по завершении выполнения этой программы:
- # Найдите ошибку в следующем фрагменте программы: #define N 1000 int main (void){ float a[N], tmp; #pragma omp parallel { #pragma omp for for(int i=0; i<N;i++) { tmp= a[i]*a[i]; a[i]=1-tmp; } } }
- # Найдите ошибку в следующем фрагменте программы: #define N 1000 int main (void){ float a[N]; #pragma omp parallel { #pragma omp for for(int i=0; i<N;i++) { float tmp; tmp= a[i]*a[i]; a[i]=1-tmp; } } }