Главная /
Параллельное программирование с OpenMP /
Способ распределения витков цикла между нитями группы задается при помощи клаузы schedule(<алгоритм планирования>[,<число итераций>]). Найдите ошибку в следующем фрагменте программы: #pragma omp parallel default(shared) { int i; #pragma omp fo
Способ распределения витков цикла между нитями группы задается при помощи клаузы schedule(<алгоритм планирования>[,<число итераций>])
.
Найдите ошибку в следующем фрагменте программы:
#pragma omp parallel default(shared)
{
int i;
#pragma omp for schedule(dynamic, omp_get_thread_num())
for (i=0; i<n; i++) {
work(i);
}
}
вопрос
Правильный ответ:
при динамическом планировании, задаваемом клаузой
schedule(dynamic)
, параметр <число итераций>
задать нельзя
значение параметра
<число итераций>
клаузы schedule
отличается для каждой нити группы
в данном фрагменте программы ошибки нет
Сложность вопроса
78
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Если бы не опубликованные подсказки - я бы сломался c этими тестами интуит.
08 апр 2018
Аноним
Зачёт защитил. Иду пить отмечать 5 в зачётке по тесту
03 июн 2017
Другие ответы на вопросы из темы программирование интуит.
- # Причинная модель консистентности памяти определяется следующим условием:
- # Исполняемыми директивами в OpenMP являются:
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 #include "omp.h" void work(int i); int main () { #pragma omp parallel { omp_set_schedule (omp_sched_dynamic); #pragma omp for for (int i=0;i<N;i++) work (i); } }
- # Найдите ошибку в следующем фрагменте программы: #pragma omp parallel { int me; me = omp_get_thread_num (); if (me == 0) goto Master; #pragma omp barrier Master: #pragma omp single }
- # Найдите ошибку в следующем фрагменте MPI/OpenMP-программы, вычисляющей число Пи: #include <mpi.h> #include <omp.h> #define num_steps 100000 void main (int argc, char *argv[]) { int numprocs, myid, mysteps; double pi, step, sum = 0.0 ; MPI_Init(&argc, &argv) ; MPI_Comm_Rank(MPI_COMM_WORLD, &myid) ; MPI_Comm_Size(MPI_COMM_WORLD, &numprocs) ; step = 1.0/(double) num_steps ; mysteps = num_steps/numprocs ; #pragma omp parallel shared(myid, mysteps, step) { #pragma omp for reduction(+:sum) for (int i=myid*mysteps; i<(myid+1)*mysteps ; i++){ double x = (i+0.5)*step; sum += 4.0 /(1.0+x*x); } sum *= step ; } MPI_Reduce(&sum, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Finalize(); }