игра брюс 2048
Главная / Программирование / Параллельное программирование с OpenMP / Тест 3

Параллельное программирование с OpenMP - тест 3

Упражнение 1:
Номер 1
Использование операторов перехода (goto) в структурном блоке OpenMP возможно:

Ответ:

 (1) если оператор перехода не выводит за пределы блока  

 (2) поскольку в стандарте нет никаких ограничений на операторы перехода  

 (3) в некоторых OpenMP-компиляторах (зависит от реализации)  


Номер 2
Использование оператора exit в структурном блоке OpenMP:

Ответ:

 (1) запрещено в стандарте  

 (2) разрешено в стандарте  

 (3) возможно в некоторых OpenMP-компиляторах (зависит от реализации)  


Номер 3
Исполняемыми директивами в OpenMP являются:

Ответ:

 (1) barrier  

 (2) taskwait 

 (3) threadprivate  


Упражнение 2:
Номер 1
Параллельная область в OpenMP создается при помощи:

Ответ:

 (1) вызова функции omp_set_max_active_levels  

 (2) вызова функции omp_set_num_threads  

 (3) директивы parallel  


Номер 2
Функция omp_get_num_threads возвращает:

Ответ:

 (1) количество нитей в текущей параллельной области  

 (2) максимально возможное количество нитей, которые могут быть использованы при выполнении всей программы  

 (3) номер нити в группе  


Номер 3
Функция omp_get_thread_num возвращает:

Ответ:

 (1) уникальный идентификатор нити  

 (2) номер нити в группе  

 (3) количество нитей в текущей параллельной области  


Упражнение 3:
Номер 1
При реализации компилятором редукционного оператора, описанного при помощи клаузы reduction (+: sum), где переменная sum имеет тип integer, для каждой нити создается локальная копия переменной sum, начальное значение которой будет инициализировано:

Ответ:

 (1)

 (2) -MAXINT (минимально возможное целое число)  

 (3) MAXINT (максимально возможное целое число)  


Номер 2
При реализации компилятором редукционного оператора, описанного при помощи клаузы reduction (*: prod), где переменная prod имеет тип integer, для каждой нити создается локальная копия переменной prod, начальное значение которой будет инициализировано:

Ответ:

 (1)

 (2)

 (3) MAXINT (максимально возможное целое число)  


Номер 3
При реализации компилятором редукционного оператора, описанного при помощи клаузы reduction (-: sub), где переменная sub имеет тип integer, для каждой нити создается локальная копия переменной sub, начальное значение которой будет инициализировано:

Ответ:

 (1) -MAXINT (минимально возможное целое число)  

 (2)

 (3) MAXINT (максимально возможное целое число)  


Упражнение 4:
Номер 1
Клауза copyin:

Ответ:

 (1) может быть использована только для переменных, указанных в клаузе private  

 (2) может быть использована только для переменных, указанных в директиве threadprivate  

 (3) может быть использована как для переменных указанных в директиве threadprivate, так и для переменных, указанных в клаузе private  


Номер 2
Клауза num_threads задает:

Ответ:

 (1) максимально возможное число нитей, которые будут созданы при входе в параллельную область  

 (2) число нитей, которые обязательно будут созданы при входе в параллельную область  

 (3) максимально возможное количество нитей, которые могут быть использованы при выполнении всей программы  


Номер 3
Найдите ошибку в следующем фрагменте программы:
#define N 10
int i;
#pragma omp parallel firstprivate(i) lastprivate(i)
{
    for (i=0; i<N; i++) {
         …
    }
}

Ответ:

 (1) одна и та же переменная не может быть указана в клаузах firstprivate и lastprivate одновременно  

 (2) клауза lastprivate не может использоваться в директиве parallel  

 (3) клауза firstprivate не может использоваться в директиве parallel  


Упражнение 5:
Номер 1
Рассмотрим фрагмент OpenMP-программы:
#include <omp.h>
int n=1;
int main (void)
{
	omp_set_nested(1);
	omp_set_dynamic(1);
	omp_set_num_threads(2);
      #pragma omp parallel if (n>10)
        {/*параллельная область*/
          …
         }
}
Для выполнения параллельной области будет создана группа нитей, состоящая из:

Ответ:

 (1) 1-ой нити  

 (2) 2-х нитей  

 (3) нескольких нитей (количество создаваемых нитей зависит от переменной окружения OMP_NUM_THREADS)  


Номер 2
Рассмотрим фрагмент OpenMP-программы:
#include <omp.h>
int main (void)
{
	omp_set_nested(0);
	omp_set_max_active_levels(8);
	omp_set_num_threads(2);
      #pragma omp parallel
        {
              omp_set_num_threads(2);
             #pragma omp parallel 
             { /*вложенная параллельная область*/
             …
              }
         }
}
Для выполнения вложенной параллельной области будет создана группа нитей, состоящая из:

Ответ:

 (1) 1-ой нити  

 (2) 2-х нитей  

 (3) нескольких нитей (количество создаваемых нитей зависит от переменной окружения OMP_NUM_THREADS)  


Номер 3
Пусть перед входом в параллельную область вызывается функция omp_set_num_threads. Пусть в директиве создания этой параллельной области указана клауза num_threads. Количество создаваемых нитей будет:

Ответ:

 (1) определяться клаузой num_threads  

 (2) определяться вызовом функции omp_set_num_threads  

 (3) зависеть от реализации компилятора  




Главная / Программирование / Параллельное программирование с OpenMP / Тест 3