Главная /
Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний /
Пусть написан следующий параллельный код: #pragma omp parallel for shared(a) private(i,j,sum) \ schedule (dynamic, CHUNK) ordered { for (i=0; i < NMAX; i++) { sum = 0; for (j=i; j < NMAX; j++) sum += a[i][j]; #pragma omp ordered printf ("Сумма элеме
Пусть написан следующий параллельный код:
#pragma omp parallel for shared(a) private(i,j,sum) \
schedule (dynamic, CHUNK) ordered
{
for (i=0; i < NMAX; i++) {
sum = 0;
for (j=i; j < NMAX; j++)
sum += a[i][j];
#pragma omp ordered
printf ("Сумма элементов строки %d равна %f\n",i,sum);
}
Будет ли суммирование происходить параллельно?
вопрос
Правильный ответ:
да
нет
Сложность вопроса
87
Сложность курса: Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний
78
Оценить вопрос
Комментарии:
Аноним
Экзамен прошёл на пять. Спасибо vtone
07 июн 2017
Аноним
Кто ищет данные ответы inuit? Это же совсем для даунов
28 янв 2017
Другие ответы на вопросы из темы программирование интуит.
- # Как называется состояние потока, обладающего всеми необходимыми для выполнения ресурсами за исключением ресурса "время ЦП"
- # При использовании каких алгоритмов планирования возможно голодание потоков?
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { M.Lock(); Empty.P(); AddItemToBuffer(); Full.V(); M.Unlock(); }() { M.Lock(); full.P(); RemoveItemFromBuffer(); empty.V(); M.Unlock(); }
- # В программе на OpenMP распараллелен следующий цикл #pragma omp parallel(i = 0; i < 1000; i++) #pragma omp for for (j = 0; j < 1000; j++) с[i] += a[i][j] * b[j]; Является ли данная параллельная реализация корректной?
- # Пусть написана следующая параллельная программа: omp_set_num_threads(4) #pragma omp parallel num_threads(3) { … } #pragma omp parallel { … } Сколько потоков будет создано в первой и во второй секции?