Главная /
Параллельное программирование с OpenMP /
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #define N 100 omp_set_num_threads (4); #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 100
omp_set_num_threads (4);
#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,25)
для циклов, выполнение витков которых распределяется между нитями при помощи директивы
for
, добавить клаузу schedule(dynamic)
для циклов, выполнение витков которых распределяется между нитями при помощи директивы
for
, добавить клаузу nowait
Сложность вопроса
52
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Я завалил зачёт, почему я не нашёл этот великолепный сайт с всеми ответами интуит в начале сессии
03 сен 2016
Другие ответы на вопросы из темы программирование интуит.
- # При реализации компилятором редукционного оператора, описанного при помощи клаузы reduction (*: prod), где переменная prod имеет тип integer, для каждой нити создается локальная копия переменной prod, начальное значение которой будет инициализировано:
- # Найдите ошибку в следующем фрагменте программы: #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; }
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 void work(int i); int main () { #pragma omp parallel { #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(omp_get_level ()); } } printf("Team Size=%d\n",team_size); }
- # Реализация технологии Intel Cluster OpenMP стала возможной, поскольку в OpenMP используется: