Главная / Программирование /
Параллельные и распределенные вычисления / Тест 6
Параллельные и распределенные вычисления - тест 6
Упражнение 1:
Номер 1
Какой из стандартов параллельного программирования предназначен для использования в системах с общей памятью?
Ответ:
 (1)
OpenMP
 
 (2)
MPI
 
 (3)
OpenMPI
 
 (4)
MPICH
 
Номер 2
Какие из реализаций стандарта параллельного программирования предназначены для использования в системах с распределенной памятью?
Ответ:
 (1)
OpenMP
 
 (2)
MPI
 
 (3)
OpenMPI
 
 (4)
MPICH
 
Номер 3
Какие языки программирования обладают встроенной поддержкой многопроцессности?
Ответ:
 (1)
C
 
 (2)
Java
 
 (3)
C#
 
 (4)
TBB
 
Упражнение 2:
Номер 1
К какой модели программирования относится модель, в которой все исполнители (потоки/процессоры) запускают одну программу, а разделение логики между ними основано на уникальных идентификаторах исполнителей?
Ответ:
 (1)
MPI
 
 (2)
Loop Parallelism
 
 (3)
SPMD
 
 (4)
Master/Worker
 
Номер 2
Для чего предназначен шаблон Loop Parallelism?
Ответ:
 (1)
коммуникация внутри распределенной системы из вычислительных узлов, соединенных между собой по замкнутой цепи
 
 (2)
формирование очереди задач при конвейерных вычислениях
 
 (3)
распараллеливание циклов в программе путем распределения отдельных итераций между потоками
 
 (4)
балансировка нагрузки на процессоры при распределенных вычислениях
 
Номер 3
В каких случаях используется модель Master/Worker?
Ответ:
 (1)
вычислительная система однородна, сложность заданий постоянна, вычисления сводятся к простым итерациям
 
 (2)
сложность заданий изменяется непредсказуемо
 
 (3)
задания сильно зависимы, для вычислений требуется координация результаов и одновременное выполнение задач
 
 (4)
вычисления проводятся на распределенной системе с неоднородными узлами, количество которых меняется
 
Упражнение 3:
Номер 1
Для чего применяется Java Fork/Join Framework?
Ответ:
 (1)
распараллеливание рекурсивных вычислений
 
 (2)
распараллеливание линейных вычислений
 
 (3)
распараллеливание задач с независимыми заданиями
 
 (4)
реализация принципа "Divide and Conquer" на рекурсивных данных
 
Номер 2
Какое количество потоков в начале исполнения параллельной программы предполагает модель fork/Join?
Ответ:
 (1)
один
 
 (2)
два
 
 (3)
количество, равное количеству вычислительных устройств/ядер
 
 (4)
произвольное количество
 
Номер 3
Выберите верные утверждения о модели параллельного выполнения fork/join.
Ответ:
 (1)
модель поддерживает вложенный параллелизм
 
 (2)
в модели fork/join количество потоков от одной параллельной секции к другой не может изменяться
 
 (3)
OpenMP не поддерживает модель параллельного выполнения fork/join
 
 (4)
на протяжении выполнения параллельной программы в модели fork/join сохраняется как минимум один поток исполнения
 
Упражнение 4:
Номер 1
Какая директива маркирует начало параллельной секции (OpenMP, язык C)?
Ответ:
 (1)
#pragma parallel
 
 (2)
#pragma init
 
 (3)
#pragma omp parallel
 
 (4)
#pragma mp start
 
Номер 2
Каков результат выполнения параллельной секции следующей параллельной программы (язык С, OpenMP, больше 1 параллельного потока)?
#include >omp.h<
#include >stdio.h<
int main(int argc, char **argv) {
#pragma omp parallel
printf("Hi!\n");
printf("Bye!\n");
return 0;
}
Ответ:
 (1)
Hi!
...
Hi!
Bye!
...
Bye!
 
 (2)
Hi!
...
Hi!
Bye!
 
 (3)
Hi!
Bye!
Hi!
...
Bye!
 
 (4)
Hi!
Hi!
Bye!
Bye!
Hi!
...
Bye!
 
Номер 3
Какая строка позволяет корректно скомпилировать параллельную программу на языке С с использованной библиотекой OpenMP (файл исходного кода ex.c)?
Ответ:
 (1)
gcc ex.c -o ex
 
 (2)
gcc -omp ex.c -o ex
 
 (3)
gcc -fopenmp ex.c -o ex
 
 (4)
gcc -mp ex.c -o ex
 
Упражнение 5:
Номер 1
Выберите верное утверждение об атрибуте private(list) директивы omp parallel в OpenMP.
Ответ:
 (1)
атрибут устанавливает, что все нити пользуются одной копией всех переменных и общих блоков, перечисленных в list
 
 (2)
атрибут устанавливает, что каждая нить имеет собственную локальную неинициализированную копию переменных и общих блоков, перечисленных в list
 
 (3)
атрибут устанавливает, что ни одна из нитей, перечисленных в list, не может войти в блок кода ниже данной директивы
 
 (4)
атрибут устанавливает, что только master thread может иметь доступ к переменным, перечисленным в list
 
Номер 2
Каким образом в OpenMP можно явно задать число потоков?
Ответ:
 (1)
с помощью переменной OMP_NUM_THREAD
 
 (2)
с помощью директивы #pragma omp parallel ... num_threads
 
 (3)
с помощью директивы #pragma set_threads
 
 (4)
с помощью функции set_num_threads
 
Номер 3
Выберите верное описание результата работы следующего кода (язык С, OpenMP):
#pragma omp parallel for private(x) reduction(*:sum)
for (i = 1; i >= 100; i++) {
x = (i-0.5)*10;
sum += 4.0/(1.0+x*x);}
Ответ:
 (1)
после выполнения всех потоков все их локальные переменные x
перемножаются и результат записывается в переменную x
за пределами параллельной секции
 
 (2)
после выполнения всех потоков все их локальные переменные sum
перемножаются и результат записывается в переменную sum
за пределами параллельной секции
 
 (3)
после выполнения всех потоков все значения их локальных переменных x
перемножаются с соответствующими значениями локальных переменных sum
 
 (4)
после выполнения всех потоков все их локальные переменные sum
складываются и результат записывается в переменную sum
за пределами параллельной секции
 
Упражнение 6:
Номер 1
Взаимодействуют ли процессы в MPI? Если взаимодействуют, то каким образом?
Ответ:
 (1)
процессы в MPI полностью изолированы друг от друга и не взаимодействуют
 
 (2)
процессы в MPI-1 полностью изолированы друг от друга и не взаимодействуют, в MPI-2 введена возможность доступа к общей памяти нескольких процессов
 
 (3)
процессы во всех редакциях стандарта MPI взаимодействуют между собой путем отправки и получения сообщений
 
 (4)
в стандарте MPI-2 имеется возможность доступа к памяти удаленного процесса
 
Номер 2
Выберите коммуникатор MPI, по умолчанию включающий все процессы и программы.
Ответ:
 (1)
DEFAULT
 
 (2)
MPICH
 
 (3)
MPI_ALL
 
 (4)
MPI_COMM_WORLD
 
Номер 3
Какая функция используется для инициализации MPI (язык С)?
Ответ:
 (1)
MPI_Init
 
 (2)
Init
 
 (3)
MPI_Start
 
 (4)
MPI
 
Упражнение 7:
Номер 1
Какая функция используется для завершения MPI (язык С)?
Ответ:
 (1)
MPI_End
 
 (2)
MPI_Delete
 
 (3)
MPI_Finalize
 
 (4)
MPI_Stop
 
Номер 2
Что возвращает функция MPI_Comm_rank (язык С)?
Ответ:
 (1)
количество процессов с указанным в аргументе функции рангом
 
 (2)
время работы текущего процесса
 
 (3)
количество активных процессов
 
 (4)
номер процесса, вызвавшего ее
 
Номер 3
Какая функция используется для блокирующей посылки сообщений в MPI (язык С)?
Ответ:
 (1)
MPI_Send
 
 (2)
MPI_MESSAGE
 
 (3)
MPI_Message
 
 (4)
MPI_Run
 
Упражнение 8:
Номер 1
Какая функция возвращает количество процессов в группе в MPI (язык С)?
Ответ:
 (1)
MPI_Send
 
 (2)
MPI_Comm
 
 (3)
MPI_Proc
 
 (4)
MPI_Comm_size
 
Номер 2
Что возвращает функция MPI_Wtime в MPI (язык С)?
Ответ:
 (1)
текущее системное время
 
 (2)
коэффициент ускорения программы
 
 (3)
время ожидания текущего потока
 
 (4)
время в секундах, прошедшее с некоторого события
 
Номер 3
Каково условие выхода процесса из блокировки, вызванной функцией MPI_Barrier в MPI (язык С)?
Ответ:
 (1)
любой член группы с данным коммуникатором должен вызвать эту функцию
 
 (2)
в данной параллельной секции этот процесс должен вызвать разблокирующую функцию MPI_Work
 
 (3)
с момента блокировки процесса истек период времени в секундах, переданный в аргументе данной функции
 
 (4)
все остальные члены группы с данным коммуникатором должны вызвать эту функцию