Главная /
Параллельное программирование с OpenMP /
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #define N 80 omp_set_num_threads (8); #pragma omp parallel shared(a,b,c,x,y,z) { #pragma omp for for (int i=0; i<N; i++) { z[i] = x[i]
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы:
#define N 80
omp_set_num_threads (8);
#pragma omp parallel shared(a,b,c,x,y,z)
{
#pragma omp for
for (int i=0; i<N; i++) {
z[i] = x[i] + y[i];
}
#pragma omp for
for (int i=0; i<N; i++) {
a[i] = b[i] + c[i];
}
}
вопрос
Правильный ответ:
для циклов, выполнение витков которых распределяется между нитями при помощи директивы
for
, добавить клаузу schedule(static,10)
для циклов, выполнение витков которых распределяется между нитями при помощи директивы
for
, добавить клаузу schedule(dynamic)
для первого цикла, выполнение витков которого распределяется между нитями при помощи директивы
for
, добавить клаузу nowait
Сложность вопроса
79
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Экзамен сдан на отлично. Спасибо сайту
11 июл 2019
Аноним
Экзамен сдан и ладушки. спс
05 апр 2016
Другие ответы на вопросы из темы программирование интуит.
- # Последовательная модель консистентности памяти определяется следующим условием:
- # Рассмотрим фрагмент 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) {/*параллельная область*/ … } } Для выполнения параллельной области будет создана группа нитей, состоящая из:
- # Способ распределения витков цикла между нитями группы задается при помощи клаузы schedule(<алгоритм планирования>[,<число итераций>]). Найдите ошибку в следующем фрагменте программы: #pragma omp parallel default(shared) { int i; #pragma omp for schedule(static, omp_get_thread_num()) for (i=0; i<n; 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 for for (i=0; i<N; i++) B[i]=A[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); }