Главная /
Параллельное программирование с 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 используется: