Главная /
Параллельное программирование с OpenMP /
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ int i; omp_set_num_threads (8); #pragma omp parallel f
Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы:
#include <omp.h>
#include <unistd.h>
#define msec 1000
int main (void){
int i;
omp_set_num_threads (8);
#pragma omp parallel for
for (i=0; i<80; i++)
sleep (msec);
#pragma omp parallel for
for (i=0; i<80; i++)
sleep (msec);
}
вопрос
Правильный ответ:
для первого цикла, выполнение витков которого распределяется между нитями при помощи директивы
for
, добавить клаузу schedule(dynamic)
для второго цикла, выполнение витков которого распределяется между нитями при помощи директивы
for
, добавить клаузу schedule(dynamic)
объединить две подряд стоящие параллельные области в одну
Сложность вопроса
27
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Пишет вам помощник профессора! Оперативно заблокируйте этот ваш сайт с ответами интуит. Пишу жалобу
26 авг 2019
Аноним
Кто ищет данные ответы интуит? Это же элементарно
25 янв 2018
Другие ответы на вопросы из темы программирование интуит.
- # Определите класс по умолчанию для переменной numt: int i=0; int numt = omp_get_max_threads(); #pragma omp parallel for for(i=0; i< numt; i++) Work(i);
- # Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N], sum; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); if (A[iam] > 0) { #pragma omp critical (update_a) sum +=A[iam]; } if (B[iam] > 0) { #pragma omp critical (update_b) sum +=B[iam]; } }
- # Найдите ошибку в следующем фрагменте программы: int numt=0; #pragma omp parallel { #pragma omp master { #pragma omp critical { numt=omp_get_num_threads(); } #pragma omp barrier } }
- # Определите значение переменной team_size по завершении выполнения следующей программы: #include <stdio.h> #include "omp.h" int main() { int team_size; team_size=omp_get_team_size(omp_get_level ()); printf("Team Size=%d\n",team_size); }
- # Найдите ошибку в следующем фрагменте программы: #include <omp.h> int main (void){ #pragma omp parallel { int numt; #pragma omp single numt=omp_get_num_threads(); if (numt < 4) do_small_work(); else do_big_work (); } }