Главная /
Параллельное программирование с 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 (); } }