Главная /
Параллельное программирование с 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: | R(x)a | R(x)b | S | ||
P3: | R(x)b | R(x)a | S |
Правильный ответ:
допустима при слабой модели консистентности
не допустима при слабой модели консистентности
допустима при модели консистентности по выходу
Сложность вопроса
95
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Я сотрудник университета! Оперативно заблокируйте сайт vtone.ru с ответами на интуит. Пишу жалобу
22 дек 2019
Аноним
Кто ищет вот эти ответы с интуитом? Это же безумно легко
20 авг 2019
Аноним
Я завалил сессию, почему я не увидел данный сайт с ответами по интуит до зачёта
23 июн 2016
Другие ответы на вопросы из темы программирование интуит.
- # Пусть перед входом в параллельную область вызывается функция omp_set_num_threads. Пусть в директиве создания этой параллельной области указана клауза num_threads. Количество создаваемых нитей будет:
- # Найдите ошибку в следующем фрагменте программы: #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; }
- # Найдите ошибку в следующем фрагменте программы: int x=0; omp_lock_t lcka, lckb; omp_init_lock (&lcka); omp_init_lock (&lckb); #pragma omp parallel { int iam=omp_get_thread_num(); if (iam ==0) { omp_set_lock (&lcka); omp_set_lock (&lckb); x = x + 1; omp_unset_lock (&lckb); omp_unset_lock (&lcka); } else { omp_set_lock (&lckb); omp_set_lock (&lcka); x = x + 2; omp_unset_lock (&lcka); omp_unset_lock (&lckb); } } } omp_destroy_lock (&lcka); omp_destroy_lock (&lckb);
- # Найдите ошибку в следующем фрагменте программы: #define N 1000 int main (void){ float a[N]; #pragma omp parallel { #pragma omp for for(int i=0; i<N;i++) { float tmp; tmp= a[i]*a[i]; a[i]=1-tmp; } } }
- # Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #include <omp.h> #include <stdio.h> #define N 100 int c[N]; int val= 1; int main (void) { omp_set_num_threads (8); #pragma omp parallel shared(val, c) { #pragma omp for for (int i=0; i<N; i++) { #pragma omp critical val = val && (c[i]<100); } } printf (“Result=%4.2f\n”, val); }