Главная /
Параллельное программирование с OpenMP /
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #include <omp.h> #include <stdio.h> #define N 100 float c[N]; float sum = 0.0; int main (void) { omp_set_num_threads (8); #pra
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы:
#include <omp.h>
#include <stdio.h>
#define N 100
float c[N];
float sum = 0.0;
int main (void) {
omp_set_num_threads (8);
#pragma omp parallel shared(sum, c)
{
#pragma omp for
for (int i=0; i<N; i++) {
#pragma omp critical
sum += c[i];
}
}
printf (“Sum of array=%4.2f\n”, sum);
}
вопрос
Правильный ответ:
заменить директиву
critical
на директиву atomic
заменить директиву
critical
на директиву critical (<имя_критической_секции>)
добавить к директиве for клаузу
reduction(+:sum)
и убрать директиву critical
Сложность вопроса
88
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Это очень заурядный решебник intuit.
16 дек 2016
Другие ответы на вопросы из темы программирование интуит.
- # PRAM модель консистентности памяти определяется следующим условием:
- # Найдите ошибку в следующем фрагменте программы: int i=0; int numt = omp_get_max_threads(); #pragma omp parallel default (none) private (i) { #pragma omp for for(i=0; i< numt; i++) Work(i); }
- # Найдите ошибку в следующем фрагменте программы: #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 single B[N-1]=A[N-1]; }
- # Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N],tmp; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); tmp=A[iam]; B[iam]=tmp; }
- # Найдите ошибку в следующем фрагменте программы: #include <omp.h> int numproc; #pragma omp threadprivate(numproc) int main (void){ numproc=omp_get_num_procs(); #pragma omp parallel { if (numproc < 4) do_small_work(); else do_big_work (); } }