Главная / Программирование / Основы параллельного программирования с использованием MPI

Основы параллельного программирования с использованием MPI - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: Курс посвящен основам разработки параллельных программ с использованием интерфейса обмена сообщениями (MPI Message Passing Interface). Приводятся основные понятия и концепции модели передачи сообщений, рассматривается архитектура MPI.
Смотрите также:
Последовательная модель программирования это:
(1) подход к разработке программного обеспечения, ориентированный на традиционную фон-неймановскую архитектуру вычислительных систем
(2) подход к разработке программного обеспечения, основанный на систематическом применении одного и того же языка программирования
(3) модель программирования, ориентированная на SISD-компьютеры по классификации Флинна
Компиляция MPI-программы выполняется командой:
(1) mpirun
(2) mpif90
(3) mpicxx
В двухточечном обмене сообщениями могут участвовать
(1) 3 процесса
(2) 2 процесса
(3) не менее двух процессов
При неблокирующем двухточечном обмене:
(1) буфер передачи/приема можно использовать сразу после завершения вызова подпрограммы инициализации обмена
(2) передача сообщения происходит одновременно с выполнением процесса
(3) не блокируется выполнение всех процессов параллельной программы
В коллективном обмене принимают участие:
(1) два процесса
(2) все процессы из указанного коммуникатора
(3) произвольное количество процессов, но большее двух
В терминологии MPI "коммуникатор" - это:
(1) группа процессов, наделенная общим контекстом обмена
(2) мобильное устройство связи
(3) подпрограмма, выполняющая передачу или прием сообщения
Выберите правильную последовательность действий при создании пользовательского типа:
(1) регистрация, описание, аннулирование
(2) описание, регистрация, аннулирование
(3) аннулирование, описание, регистрация
Атрибут коммуникатора:
(1) дополнительная информация, добавляемая к коммуникатору
(2) может быть назначен пользователем
(3) может быть системным или пользовательским
Особенностью параллельной модели программирования является:
(1) нелокальный и динамический характер ошибок
(2) вероятность утраты детерминизма выполнения программы
(3) вероятность возникновения блокировок
В MPI-программах на языке C устанавливается следующее соответствие между типами MPI и стандартными типами языка:
(1) MPI_FLOAT и float
(2) MPI_CHAR и signed char
(3) MPI_INT и unsigned int
В MPI существуют следующие типы двухточечных обменов:
(1) блокирующие
(2) неблокирующие
(3) полублокирующие
Неблокирующая стандартная передача выполняется подпрограммой:
(1) MPI_Isend
(2) MPI_Issend
(3) MPI_Nonblocking_send
Широковещательная рассылка сообщения выполняется подпрограммой:
(1) MPI_Bcast
(2) MPI_Bsend
(3) MPI_Send
Создание коммуникатора выполняется подпрограммой:
(1) MPI_Comm_create
(2) MPI_Comm_dup
(3) MPI_Comm_split
Создание производного типа в MPI выполняется подпрограммой:
(1) MPI_Comm_create
(2) MPI_Type_create
(3) MPI_Type_struct
Потоки выполнения, относящиеся к одному параллельному приложению, характеризуются:
(1) общим адресным пространством
(2) общими дескрипторами файлов
(3) разными и непересекающимися адресными пространствами
Коммуникатор это:
(1) область взаимодействия процессов, объединяющая все процессы с общим контекстом обмена
(2) устройство связи между вычислительными узлами кластера
(3) процедура MPI, выполняющая передачу сообщения от одного процесса другому
Стандартная блокирующая двухточечная передача выполняется подпрограммой
(1) MPI_Send
(2) MPI_Ssend
(3) MPI_Bsend
Первый этап выполнения неблокирующего обмена это:
(1) проверка доступности буфера обмена
(2) создание буфера обмена
(3) инициализация обмена
К числу коллективных обменов относятся:
(1) распределение данных
(2) сбор данных
(3) операция приведения
Процесс:
(1) не может одновременно принадлежать нескольким группам
(2) может одновременно принадлежать только непересекающимся группам
(3) может одновременно принадлежать нескольким группам
Карта типа:
(1) позволяет сделать выборку данных базового типа
(2) используется для создания производного типа MPI
(3) представляет собой набор пар (базовый_тип, смещение)
Данная подпрограмма выполняет операцию одностороннего обмена:
(1) MPI_Send
(2) MPI_Sendrecv
(3) MPI_Put
На программирование для систем с распределённой памятью ориентированы:
(1) POSIX Threads
(2) Intel (R) Cluster OpenMP
(3) OpenMP
Первым по порядку вызовом подпрограммы MPI может быть вызов:
(1) MPI_Initialized
(2) MPI_Init
(3) MPI_Comm_size
При организации двухточечного обмена с буферизацией размер буфера должен превосходить объём пересылаемых данных на величину:
(1) MPI_BSEND_OVERHEAD
(2) MPI_BUFFER_ATTACH
(3) 100 байт
Подпрограмма MPI_Wait предназначена для:
(1) блокирующей проверки выполнения обмена
(2) неблокирующей проверки выполнения обмена
(3) приостановки выполнения программы на заданный период времени
Подпрограмма MPI_Bcast:
(1) пересылает всем остальным процессам разные фрагменты данных
(2) пересылает одну и ту же порцию данных всем остальным процессам
(3) выполняет операцию частичного приведения
Подпрограмма MPI_Comm_size:
(1) позволяет определить количество процессов в указанном коммуникаторе
(2) позволяет задать количество процессов в указанном коммуникаторе
(3) является операцией двухточечного обмена
Следующие подпрограммы являются конструкторами векторного типа:
(1) MPI_Type_indexed
(2) MPI_Type_vector
(3) MPI_Type_hvector
В MPI-2 включены следующие возможности:
(1) неблокирующие обмены
(2) декодирование производных типов
(3) поддержка многопоточности
При стандартной блокирующей двухточечной передаче сообщения:
(1) после завершения вызова можно использовать любые переменные, использовавшиеся в списке параметров
(2) выполнение параллельной программы приостанавливается до тех пор, пока сообщение будет принято процессом-адресатом
(3) после завершения вызова нельзя использовать переменные, использовавшиеся в списке параметров
Подпрограммы-пробники предназначены для:
(1) тестирования программ
(2) проверки фактической доставки сообщений
(3) тестирования коммуникационной подсистемы
Какие подпрограммы выполняют сборку данных?
(1) MPI_Gather
(2) MPI_Gatherv
(3) MPI_Allgather
Подпрограмма выполняет объединение двух коммуникаторов:
(1) MPI_Intercomm_merge
(2) MPI_Comm_union
(3) MPI_Group_union
Виртуальная топология:
(1) является одним из атрибутов коммуникатора
(2) отражает топологические свойства решаемой задачи
(3) отражает топологию коммуникационной подсистемы параллельного компьютера
Двухточечный обмен "по готовности" позволяет:
(1) упростить процесс отладки
(2) увеличить производительность параллельной MPI-программы
(3) повысить предсказуемость поведения параллельной программы
Подпрограмма MPI_Testall выполняет проверку:
(1) завершения любого числа обменов
(2) завершения всех обменов
(3) завершения одного обмена
"Толщина барьера" при барьерной синхронизации это:
(1) количество процессов, в которых для продолжения выполнения должен быть выполнен вызов процедуры барьерной синхронизации
(2) величина которая определяется пропускной способностью сети
(3) один из параметров при вызове подпрограммы барьерной синхронизации
Подпрограмма является деструктором:
(1) MPI_Group_free
(2) MPI_Comm_free
(3) MPI_Intercomm_create
Виртуальная топология графа характеризуется:
(1) количеством вершин графа
(2) порядками узлов
(3) связностью графа
Параллельная модель программирования это
(1) подход к разработке программного обеспечения, основанный на декомпозиции задачи и распределении вычислительной работы между разными вычислительными узлами и/или ядрами процессора
(2) подход к разработке программного обеспечения, состоящий в том, что одновременно разрабатываются несколько различных версий одной программы
(3) модель программирования, ориентированная, в том числе, и на MIMD-компьютеры по классификации Флинна
Запуск MPI-программы выполняется командой:
(1) mpdboot
(2) mpirun
(3) mpiexec
При двухточечном обмене:
(1) пересылаются данные одного типа
(2) принадлежность одному коммуникатору не имеет значения
(3) важна принадлежность одному коммуникатору
Неблокирующий вариант операций передачи сообщений существует для:
(1) стандартного обмена
(2) обмена с буферизацией
(3) обмена «по готовности»
Операции коллективного обмена для инициировавших их процессов являются:
(1) блокирующими
(2) неблокирующими
(3) понятия "блокирующий/неблокирующий обмен" к ним неприменимы
В терминологии MPI "интракоммуникатор" - это:
(1) подпрограмма, выполняющая передачу или прием сообщения
(2) коммуникатор, обеспечивающий обмены сообщениями внутри группы
(3) коммуникатор, обеспечивающий обмены сообщениями между группами
Производный тип данных MPI используется для:
(1) описания в MPI-программах тех типов, для которых нет аналога в соответствующем языке программирования
(2) преодоления ограничений в организации пересылаемых данных
(3) создания сложных структур данных
Атрибут коммуникатора:
(1) связан с ключом
(2) создается вызовом подпрограммы MPI_Attr_put
(3) аннулируется вызовом подпрограммы MPI_Key_free
Особенностью последовательной модели программирования является:
(1) хорошая масштабируемость приложений
(2) плохая масштабируемость приложений
(3) универсальность
Получить значение ранга процесса можно с помощью подпрограммы MPI:
(1) MPI_Comm_size
(2) MPI_Comm_rank
(3) MPI_Init
В MPI существуют следующие типы двухточечных обменов:
(1) обмен "по готовности"
(2) обмен с буферизацией
(3) быстрый обмен
Неблокирующий прием в MPI выполняется подпрограммой:
(1) MPI_Nonblocking_recv
(2) MPI_Irecv
(3) MPI_Recv
Создание группы выполняется подпрограммой:
(1) MPI_Group_incl
(2) MPI_Group_excl
(3) MPI_Group_difference
Создание структурного типа в MPI выполняется подпрограммой:
(1) MPI_Type_struct
(2) MPI_Type_commit
(3) MPI_Create_struct
Запуск процесса из MPI-программы выполняется подпрограммой:
(1) MPI_Comm_spawn
(2) MPI_Proc_start
(3) MPI_Comm_spawn_multiple
Процессы, относящиеся к одному параллельному приложению, характеризуются:
(1) общим адресным пространством
(2) разными и непересекающимися адресными пространствами
(3) в операционных системах UNIX одинаковым значением идентификатора PID (Process IDentifier)
MPI_COMM_NULL это:
(1) имя процедуры MPI
(2) имя стандартного "пустого" коммуникатора
(3) обозначение "нулевого" указателя в MPI
Двухточечная передача с буферизацией выполняется подпрограммой
(1) MPI_Send
(2) MPI_Bsend
(3) MPI_Buffer_attach
Второй этап выполнения неблокирующего обмена это:
(1) создание буфера обмена
(2) проверка выполнения обмена
(3) проверка доступности буфера обмена
К числу коллективных обменов не относится:
(1) обмен с буферизацией
(2) обмен по готовности
(3) векторная операция распределения данных
Регистрация производного типа выполняется подпрограммой:
(1) MPI_Type_commit
(2) MPI_Comm_create
(3) MPI_Type_registration
Данная подпрограмма используется при организации одностороннего обмена:
(1) MPI_Win_create
(2) MPI_Get
(3) MPI_Accumulate
Одним из распространённых средств разработки многопоточных программ является:
(1) OpenMP
(2) PVM
(3) MPI
Последним по порядку вызовом подпрограммы MPI может быть вызов:
(1) MPI_Abort
(2) MPI_Finalize
(3) MPI_Finalized
"Джокер" используется в подпрограмме двухточечного приема сообщения:
(1) для задания буфера приёма произвольного размера
(2) для обозначения произвольного источника сообщения
(3) для обозначения произвольного тега сообщения
Подпрограмма MPI_Test предназначена для:
(1) блокирующей проверки выполнения обмена
(2) неблокирующей проверки выполнения обмена
(3) проверки доступности коммуникационной среды
Подпрограмма MPI_Gather:
(1) выполняет сбор данных
(2) является операцией коллективного обмена
(3) выполняет широковещательную рассылку
Подпрограмма MPI_Comm_compare возвращает значение MPI_CONGRUENT:
(1) если первая из сравниваемых групп является надмножеством второй
(2) если группы, соответствующие двум коммуникаторам, содержат одни и те же процессы, но контекст обмена у них разный
(3) если первая из сравниваемых групп является подмножеством второй
Следующие подпрограммы позволяют сконструировать производный тип из однотипных базовых наборов:
(1) MPI_Type_indexed
(2) MPI_Type_contiguous
(3) MPI_Type_struct
В MPI-2 появились следующие новые возможности:
(1) односторонние обмены
(2) динамический запуск процессов
(3) виртуальные топологии
При выполнении блокирующей передачи "по готовности":
(1) передача сообщения выполняется, как только будет готов результат вычислений, выполняемых процессом-источником сообщения
(2) передача должна начинаться до того, как зарегистрирован прием
(3) передача должна начинаться, если уже зарегистрирован соответствующий прием
Подпрограмма MPI_Testany выполняет проверку:
(1) завершения любого из нескольких обменов
(2) завершения всех обменов
(3) завершения первого обмена
Подпрограмма MPI_Alltoall:
(1) выполняет передачу данных по схеме "каждый-всем"
(2) выполняет операцию сканирования (частичной редукции)
(3) выполняет операцию полной редукции
Подпрограмма позволяет определить количество процессов в коммуникаторе:
(1) MPI_Comm_sum
(2) MPI_Comm_size
(3) MPI_Comm_rank
Подпрограмма MPI_Cart_sub:
(1) используется для создания составных виртуальных топологий
(2) используется для регистрации новой топологии
(3) используется для расщепления коммуникатора, наделенного декартовой топологией, на подгруппы, соответствующие декартовым подрешеткам меньшей размерности
Размер полученного сообщения можно определить с помощью подпрограммы:
(1) MPI_Get_count
(2) MPI_Count
(3) MPI_Comm_size
Подпрограмма выполняет сбор данных:
(1) MPI_Get_count
(2) MPI_Scatterv
(3) MPI_Allgather
Подпрограмма дает доступ к удаленной группе:
(1) MPI_Comm_remote_group
(2) MPI_Comm_group
(3) MPI_Group_union
В MPI имеются следующие виртуальные топологии:
(1) топология гиперкуба
(2) декартова топология
(3) топология графа
Параллельное программирование с использованием MPI имеет дело с параллелизмом на уровне:
(1) задач
(2) заданий
(3) машинных команд
Запуск демонов mpd выполняется командой:
(1) mpdtrace
(2) mpdboot
(3) mpirun
При двухточечном обмене:
(1) допускается передача только одного скалярного значения
(2) количество вариантов отправки сообщений превосходит количество вариантов приёма
(3) за одну операцию обмена допускается передача структуры
Неблокирующий прием сообщений реализован в MPI:
(1) одной подпрограммой
(2) двумя подпрограммами
(3) тремя подпрограммами
Для выполнения коллективного обмена:
(1) не требуется создание специального коммуникатора, если это не диктуется особенностями задачи
(2) требуется создание специального "коллективного" коммуникатора
(3) требуется инициализация посредством вызова подпрограммы MPI_Collective_init
В терминологии MPI "интеркоммуникатор" - это:
(1) коммуникатор, обеспечивающий обмены сообщениями внутри группы
(2) коммуникатор, обеспечивающий обмены сообщениями между группами
(3) подпрограмма, выполняющая передачу или прием сообщения
Виртуальная топология:
(1) является атрибутом коммуникатора
(2) не является атрибутом коммуникатора
(3) является пользовательским атрибутом
Одной из схем организации параллельных программ является:
(1) схема "первый вошёл - первый вышел" (FIFO)
(2) иерархическая схема "хозяин-работник" (master-slave)
(3) схема "хозяин-работник" (master-slave)
Ранг процесса:
(1) принимает как отрицательные, так и положительные целые значения
(2) назначается процессу системой
(3) принимает неотрицательные целые значения
В MPI существуют следующие типы двухточечных обменов:
(1) стандартный обмен
(2) синхронный обмен
(3) обмен с буферизацией
Неблокирующая передача с буферизацией выполняется подпрограммой:
(1) MPI_Ibsend
(2) MPI_Bsend
(3) MPI_Immediate_bsend
Коллективная передача данных может сочетаться с двухточечным приемом:
(1) нет
(2) да
(3) иногда
Создание коммуникатора выполняется подпрограммой:
(1) MPI_Group_intersection
(2) MPI_Group_union
(3) MPI_Comm_create
Создание векторного типа в MPI выполняется подпрограммой:
(1) MPI_Vector_commit
(2) MPI_Type_vector
(3) MPI_Comm_create
"Кольцо демонов":
(1) создается один раз и может быть использовано многократно, разными программами одного пользователя
(2) не может взаимодействовать с демонами mpd других пользователей
(3) может взаимодействовать с демонами mpd других пользователей
MPICH это:
(1) программный пакет, позволяющий разрабатывать параллельные программы на основе модели обмена сообщениями
(2) язык программирования, позволяющий разрабатывать многопоточные программы для вычислительных систем с общей памятью
(3) коммерческая библиотека, реализующая операции обмена сообщениями
MPI_COMM_WORLD это:
(1) имя стандартного коммуникатора, включающего все запущенные процессы MPI-программы
(2) имя стандартного коммуникатора, включающего все запущенные процессы, исполняющиеся в операционной системе
(3) имя процедуры MPI
При организации двухточечного обмена с буферизацией используется подпрограмма:
(1) MPI_Bsend
(2) MPI_Buffer_detach
(3) MPI_Buffer_attach
Неблокирующий обмен позволяет:
(1) повысить производительность параллельной программы
(2) повысить предсказуемость поведения программы
(3) повысить надежность передачи сообщений
Данная операция является операцией приведения:
(1) умножение двух матриц
(2) суммирование элементов массива
(3) определение максимального элемента
Расщепление коммуникатора выполняется подпрограммой:
(1) MPI_Comm_difference
(2) MPI_Comm_split
(3) MPI_Comm_compare
Аннулирование производного типа выполняется подпрограммой:
(1) MPI_Comm_free
(2) MPI_Type_null
(3) MPI_Type_free
Данная подпрограмма используется для синхронизации одностороннего обмена:
(1) MPI_Comm_free
(2) MPI_Win_fence
(3) MPI_Attr_put
Одним из распространённых средств разработки программ, основанных на модели обмена сообщениями, является:
(1) OpenMP
(2) POSIX Threads
(3) любая реализация MPI
Отметьте правильную последовательность обращений к подпрограммам MPI:
(1) MPI_Comm_rank, MPI_Comm_size
(2) MPI_Comm_size, MPI_Comm_rank
(3) MPI_Comm_size, MPI_Init
Пусть значение параметра count в подпрограмме приёма двухточечного сообщения больше, чем количество элементов в принятом сообщении. Тогда:
(1) выполнение программы завершится аварийно
(2) выполнение подпрограммы приёма завершится с кодом ошибки, но выполнение параллельной программы продолжится
(3) в буфере приёма изменится значение только тех элементов, которые соответствуют элементам фактически принятого сообщения
После завершения вызова MPI_Wait:
(1) неблокирующий обмен выполнен
(2) неблокирующий обмен не выполнен
(3) возобновляется выполнение всех процессов, относящихся к данной параллельной программе
Подпрограмма MPI_Scatter:
(1) выполняет распределение данных
(2) выполняет широковещательную рассылку
(3) выполняет синхронизацию процессов
Подпрограмма MPI_Comm_dup:
(1) создает точную копию коммуникатора
(2) выполняет сравнение двух коммуникаторов
(3) выполняет синхронизацию процессов
Подпрограмма MPI_Type_extent:
(1) позволяет получить количество элементов в одном объекте производного типа
(2) позволяет определить экстент пересылаемого массива
(3) позволяет определить объем памяти, выделяемый для хранения одного элемента производного типа
MPI-2 поддерживает:
(1) параллельные операции ввода-вывода
(2) механизм внешних интерфейсов
(3) многопоточность
Укажите, является ли данное утверждение верным для буферизованного двухточечного обмена:
(1) при выполнении буферизованного обмена программист должен заранее создать буфер достаточного размера
(2) при выполнении буферизованного обмена к процессу можно подключить до 1024 буферов передачи
(3) после завершения работы с буфером его необходимо отключить
Подпрограмма MPI_Iprobe:
(1) является подпрограммой неблокирующей проверки сообщения
(2) является подпрограммой блокирующей проверки сообщения
(3) не является подпрограммой проверки сообщения
Подпрограмма является векторным вариантом операции коллективного обмена:
(1) MPI_Alltoallv
(2) MPI_Alltoall
(3) MPI_Allgatherv
Подпрограмма создает интеркоммуникатор:
(1) MPI_Comm_create
(2) MPI_Intercomm_dup
(3) MPI_Intercomm_create
Декартова топология характеризуется:
(1) размерностью решетки
(2) размером решетки
(3) граничными условиями
Операция совместных приёма и передачи:
(1) существует для двухточечных обменов
(2) не существует для двухточечных обменов
(3) существует только для коллективных обменов
Подпрограмма MPI_Waitall выполняет проверку:
(1) завершения любого числа обменов
(2) завершения всех обменов
(3) завершения одного обмена
Подпрограмма MPI_Scan:
(1) выполняет операцию полной редукции
(2) выполняет проверку доступности узлов многопроцессорной вычислительной системы
(3) выполняет операцию частичной редукции
Вызов подпрограммы MPI_Comm_group:
(1) дает доступ к группе процессов
(2) должен предшествовать любым операциям над группой процессов
(3) позволяет определить характеристики указанной группы процессов
Вызов подпрограммы MPI_Cart_create:
(1) создает новый коммуникатор, наделенный декартовой топологией
(2) создает новый коммуникатор, наделенный топологией графа
(3) не создает нового коммуникатора
Проверка взаимодействия демонов между собой выполняется командой:
(1) mpdboot
(2) mpdtrace
(3) mpdallexit