Главная /
Параллельное программирование с OpenMP /
Пусть W(x)a – операция записи в переменную x значения a. Пусть R(x)a – операция чтения переменной x, где a – прочитанное значение переменной x. Пусть S - операция синхронизации. Следующая последовательность событий: [таблица]
Пусть W(x)a
– операция записи в переменную x
значения a. Пусть R(x)a
– операция чтения переменной x
, где a
– прочитанное значение переменной x
. Пусть S
- операция синхронизации. Следующая последовательность событий:
P1: W(x)a | W(x)b | S | ||
---|---|---|---|---|
P2: | S | R(x)a |
Правильный ответ:
допустима при слабой модели консистентности
не допустима при слабой модели консистентности
допустима при модели консистентности по выходу
Сложность вопроса
69
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Это очень заурядный тест интуит.
08 авг 2018
Другие ответы на вопросы из темы программирование интуит.
- # Причинная модель консистентности памяти определяется следующим условием:
- # Найдите ошибку в следующем фрагменте программы: #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]; } }
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 #include "omp.h" void work(int i); int main () { #pragma omp parallel { omp_set_schedule (omp_sched_static); #pragma omp for for (int i=0;i<N;i++) work (i); } }
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #define N 100 #include "omp.h" void work(int i); int main () { #pragma omp parallel { omp_set_schedule (omp_sched_dynamic); #pragma omp for for (int i=0;i<N;i++) work (i); } }
- # Выберите наилучшую стратегию распределения витков цикла между нитями, которая для следующего фрагмента программы даст минимальное время выполнения: #include <omp.h> #include <unistd.h> #define msec 1000 int main (void){ omp_set_num_threads (8); #pragma omp parallel { #pragma omp for schedule (runtime) for(int i=0; i<80;i++) { sleep (msec); } } }