Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N]; #pragma omp parallel default(shared) { int i; #pragma omp master for (i=0; i<N; i++) { A[i]=0; } #pragma omp barrier B[N-1]=B[N-1] + A[N-1]; }
Найдите ошибку в следующем фрагменте программы:
#define N 10
int A[N],B[N];
#pragma omp parallel default(shared)
{
int i;
#pragma omp master
for (i=0; i<N; i++) {
A[i]=0;
}
#pragma omp barrier
B[N-1]=B[N-1] + A[N-1];
}
вопрос
Правильный ответ:
оператор
for
не может быть использован внутри конструкции master
оператор, в котором изменяется значение общей переменной
B[N-1]
выполняется без какой-либо синхронизации
в данном фрагменте программы ошибки нет
Сложность вопроса
64
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Зачёт сдал. Иду в клуб отмечать 5 в зачётке по тесту
21 апр 2019
Аноним
Я провалил зачёт, какого рожна я не углядел этот чёртов сайт с всеми ответами по тестам интуит месяц назад
15 сен 2018
Другие ответы на вопросы из темы программирование интуит.
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 #include "omp.h" void work(int i); int main () { #pragma omp parallel { omp_set_schedule (omp_sched_guided); #pragma omp for for (int i=0;i<N;i++) work (i); } }
- # Определите значение переменной team_size по завершении выполнения следующей программы: #include <stdio.h> #include "omp.h" int main() { int team_size; team_size=0; #pragma omp parallel num_threads(2) { if (omp_get_thread_num() == 0) { team_size=omp_get_team_size(0); } } printf("Team Size=%d\n",team_size); }
- # Поиск ошибок в OpenMP-программе, выполняемый Intel Thread Checker, основан на:
- # Для выделения памяти для SHARABLE-переменных в технологии Intel Cluster OpenMP требуется использовать:
- # Найдите ошибку в следующем фрагменте MPI/OpenMP-программы, вычисляющей число Пи: #include <mpi.h> #include <omp.h> #define num_steps 100000 void main (int argc, char *argv[]) { double pi, step, sum = 0.0 ; step = 1.0/(double) num_steps ; #pragma omp parallel { int numprocs, myid, mysteps; MPI_Init(&argc, &argv) ; MPI_Comm_Rank(MPI_COMM_WORLD, &myid) ; MPI_Comm_Size(MPI_COMM_WORLD, &numprocs) ; mysteps = num_steps/numprocs ; #pragma omp for reduction(+:sum) for (int i=myid*mysteps; i<(myid+1)*mysteps ; i++){ double x = (i+0.5)*step; sum += 4.0*step/(1.0+x*x); } MPI_Reduce(&sum, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); } MPI_Finalize(); }