Главная /
Параллельное программирование с OpenMP /
Найдите ошибку в следующем фрагменте программы: #define N 10 int i; #pragma omp parallel firstprivate(i) lastprivate(i) { for (i=0; i<N; i++) { … } }
Найдите ошибку в следующем фрагменте программы:
#define N 10
int i;
#pragma omp parallel firstprivate(i) lastprivate(i)
{
for (i=0; i<N; i++) {
…
}
}
вопрос
Правильный ответ:
одна и та же переменная не может быть указана в клаузах
firstprivate
и lastprivate
одновременно
клауза
lastprivate
не может использоваться в директиве parallel
клауза
firstprivate
не может использоваться в директиве parallel
Сложность вопроса
81
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Комментарии:
Аноним
Я сотрудник университета! Тотчас заблокируйте сайт и ответы intuit. Немедленно!
08 июн 2020
Аноним
Очень сложные тесты
24 июн 2018
Аноним
Это очень простой вопрос intuit.
02 сен 2016
Другие ответы на вопросы из темы программирование интуит.
- # Клауза copyin:
- # Определите способ распределения витков цикла между нитями для следующего фрагмента программы: #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); } }
- # Пусть следующая программа скомпилирована компилятором, поддерживающим вложенный параллелизм. #include <stdio.h> #include "omp.h" int counter; int main() { counter=0; omp_set_nested(1); #pragma omp parallel num_threads(2) { if (omp_get_thread_num() == 0) { #pragma omp parallel num_threads(2) { #pragma omp atomic counter++; } } } printf("Counter=%d\n",counter); } Определите значение переменной counter по завершении выполнения этой программы:
- # Найдите ошибку в следующем фрагменте программы: #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 (); } }
- # Выберите наиболее походящую оптимизацию, которая позволит сократить время выполнения следующего фрагмента программы: #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); }