игра брюс 2048
Главная / Программирование / Параллельное программирование с использованием технологии MPI / Тест 4

Параллельное программирование с использованием технологии MPI - тест 4

Упражнение 1:
Номер 1
Каких коллективных операций в MPI не существует?

Ответ:

 (1) с блокировкой 

 (2) без блокировки 

 (3) как тех, так и других 


Номер 2
Могут ли использоваться в коллективных операциях те же коммуникаторы, использовавшиеся для операций точка-точка?

Ответ:

 (1) да 

 (2) иногда 

 (3) нет 


Номер 3
В MPI сообщения, вызванные коллективными операциями, не могут...

Ответ:

 (1) иметь доступ к буферу приема или посылки 

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

 (3) пересекаться с сообщениями, появившимися в результате индивидуального взаимодействия процессов 


Упражнение 2:
Номер 1
Возможна ли синхронизация процессов с помощью коллективных операций?

Ответ:

 (1) да 

 (2) не всегда 

 (3) нет 


Номер 2
С помощью какой коллективной процедуры возможна синхронизация процессов

Ответ:

 (1) MPI_STARTAL 

 (2) MPI_WAITALL 

 (3) MPI_BARRIER 


Номер 3
Какой атрибут не используется в коллективных операциях?

Ответ:

 (1) номер процесса 

 (2) тег 

 (3) номер в коммутаторе 


Упражнение 3:
Номер 1
Какая из перечисленных процедур используется для барьерной синхронизации процессов?

Ответ:

 (1) DOUBLE PRECISION MPI_WTIME(IERR) INTEGER IERR  

 (2) MPI_START (REQUEST, IERR) INTEGER REQUEST, IERR  

 (3) MPI_BARRIER (COMM, IERR) INTEGER COMM, IERR  


Номер 2
Для чего используется процедура

MPI_BARRIER (COMM, IERR)
INTEGER COMM, IERR

Ответ:

 (1) для барьерной синхронизации процессов 

 (2) для совмещенного приема и передачи сообщений с блокировкой 

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


Номер 3
Какая из предложенных процедур является коллективной?

Ответ:

 (1) DOUBLE PRECISION MPI_WTIME(IERR) INTEGER IERR  

 (2) MPI_START (REQUEST, IERR) INTEGER REQUEST, IERR  

 (3) MPI_BARRIER (COMM, IERR) INTEGER COMM, IERR  


Упражнение 4:
Номер 1
С помощьюкакой процедуры использование отложенных запросов позволяет инициализировать посылку данных только один раз?

Ответ:

 (1) MPI_START 

 (2) MPI_BARRIER 

 (3) MPI_INIT 


Номер 2
С помощью какой процедуры можно проиллюстрировать действие процедуры MPI_BCAST?

Ответ:

 (1) files 

 (2) files 

 (3) files 


Номер 3
С помощью какой процедуры можно проиллюстрировать действие процедуры MPI_GATHER?

Ответ:

 (1) files 

 (2) files 

 (3) files 


Упражнение 5:
Номер 1
Какие значения в данной процедуре должны быть одинаковыми у всех процессов?

MPI_BCAST(BUF, COUNT, DATATYPE, ROOT, COMM, IERR)
<type>BUF(*)
INTEGER COUNT, DATATYPE, ROOT, COMM, IERR

Ответ:

 (1) COUNT 

 (2) ROOT 

 (3) COMM 


Номер 2
Каким образом собирающий процесс сохраняет данные в буфере RBUF?

Ответ:

 (1) в порядке возрастания номеров процессов 

 (2) в порядке убывания номеров процессов 

 (3) в произвольном порядке 


Номер 3
Значения каких параметров должны быть одинаковыми у всех процессов?

Ответ:

 (1) ROOT 

 (2) STYPE 

 (3) COMM 


Упражнение 6:
Номер 1
Каким массивом задается порядок расположения данных в результирующем буфере RBUF?

Ответ:

 (1) RCOUNTS 

 (2) DISPLS 

 (3) RTYPE 


Номер 2
Какой массив содержит количество элементов, передаваемых от каждого процесса?

Ответ:

 (1) RCOUNTS 

 (2) DISPLS 

 (3) RTYPE 


Номер 3
В каком массиве индекс равен рангу посылающего процесса, размер массива равен числу процессов в коммуникаторе COMM?

Ответ:

 (1) RCOUNTS 

 (2) DISPLS 

 (3) RTYPE 


Упражнение 7:
Номер 1
Какая из перечисленных процедур является обратной по своему действию MPI_SCATTER

Ответ:

 (1) MPI_BCAST 

 (2) MPI_BARRIER 

 (3) MPI_GATHER 


Номер 2
Какая из перечисленных схем иллюстрирует действие процедуры MPI_SCATTER?

Ответ:

 (1) files 

 (2) files 

 (3) files 


Номер 3
Какому процессу соответствует данная схема
files

Ответ:

 (1) MPI_ALLTOALLV(SBUF, SCOUNTS, SDISPLS, STYPE, RBUF, RCOUNTS, RDISPLS, RTYPE, COMM, IERR) <type> SBUF(*), RBUF(*) INTEGER SCOUNTS(*), SDISPLS(*), STYPE, RCOUNTS(*), RDISPLS(*), RTYPE, COMM, IERR  

 (2) MPI_ALLTOALL(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE, COMM, IERR) <type> SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, COMM, IERR  

 (3) MPI_ALLGATHERV(SBUF, SCOUNT, STYPE, RBUF, RCOUNTS, DISPLS, RTYPE, COMM, IERR) <type> SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNTS(*), DISPLS(*), RTYPE, COMM, IERR  


Упражнение 8:
Номер 1
С помощью какой процедуры возможна рассылка каждым процессом коммуникатора COMM различных порций данных всем другим процессам

Ответ:

 (1) MPI_ALLTOALL 

 (2) MPI_ALLGATHER 

 (3) MPI_BARRIER 


Номер 2
С помощью какой процедуры можно задать свою функцию для выполнения глобальной операции

Ответ:

 (1) MPI_OP_CREATE 

 (2) MPI_INIT 

 (3) MPI_COMM_RANK 


Номер 3
какая схема моделирования операции глобального суммирования по эффективности сравнивается с коллективной операцией MPI_REDUCE

Ответ:

 (1) схема сдваивания с использованием асинхронных процедур 

 (2) схема сдваивания с использованием пересылок данных типа точка-точка 

 (3) схема сдваивания с использованием синхронных пересылок данных 


Упражнение 9:
Номер 1
С помощью каких констант можно задать логические "И", "ИЛИ", исключающее "ИЛИ"

Ответ:

 (1) MPI_MINLOC, MPI_MAXLOC 

 (2) MPI_LAND, MPI_LOR, MPI_LXOR 

 (3) MPI_BAND, MPI_BOR, MPI_BXOR 


Номер 2
С помощью каких констант возможно определение максимального и минимального значения

Ответ:

 (1) MPI_BAND, MPI_BOR 

 (2) MPI_MINLOC, MPI_MAXLOC 

 (3) MPI_MAX, MPI_MIN 


Номер 3
С помощью каких констант возможно вычисление глобальной суммы

Ответ:

 (1) MPI_PROD 

 (2) MPI_BOR 

 (3) MPI_SUM 


Упражнение 10:
Номер 1
С помощью какого процесса возможно задать интерфейс пользовательской функции для создания глобальной операции

Ответ:

 (1) MPI_SCAN(SBUF, RBUF, COUNT, DATATYPE, OP, COMM, IERR) <type> SBUF(*), RBUF(*) INTEGER COUNT, DATATYPE, OP, COMM, IERR  

 (2) MPI_OP_CREATE(FUNC, COMMUTE, OP, IERR) EXTERNAL FUNC LOGICAL COMMUTE INTEGER OP, IERR  

 (3) FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) <type> INVEC(LEN), INOUTVEC(LEN) INTEGER LEN, TYPE  


Номер 2
Какой функцией будет вычисляться создание пользовательской глобальной операции OP

Ответ:

 (1) FUNC 

 (2) COMMUTE 

 (3) LEN 


Номер 3
Какая процедура отвечает за уничтожение пользовательской глобальной операции

Ответ:

 (1) FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) <type> INVEC(LEN), INOUTVEC(LEN) INTEGER LEN, TYPE  

 (2) MPI_OP_FREE(OP, IERR) INTEGER OP, IERR  

 (3) MPI_ALLGATHERV(SBUF, SCOUNT, STYPE, RBUF, RCOUNTS, DISPLS, RTYPE, COMM, IERR) <type> SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNTS(*), DISPLS(*), RTYPE, COMM, IERR  


Упражнение 11:
Номер 1
Из какого параметра данной процедуры берется первый аргумент

FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) 
<type> INVEC(LEN), INOUTVEC(LEN) 
INTEGER LEN, TYPE

Ответ:

 (1) INVEC 

 (2) INOUTVEC 

 (3) LEN 


Номер 2
Какой из параметров данной процедуры задает количество элементов входного и выходного массивов

FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) 
<type> INVEC(LEN), INOUTVEC(LEN) 
INTEGER LEN, TYPE

Ответ:

 (1) INOUTVEC 

 (2) LEN 

 (3) TYPE 


Номер 3
Какой из параметров данной процедуры задает тип входных и выходных данных

FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) 
<type> INVEC(LEN), INOUTVEC(LEN) 
INTEGER LEN, TYPE

Ответ:

 (1) INOUTVEC 

 (2) LEN 

 (3) TYPE 


Упражнение 12:
Номер 1
Какая функция в данном процессе вычисляет поэлементную сумму по модулю 5 векторов целочисленных аргументов

MPI_OP_FREE.
program example15
include 'mpif.h'
integer ierr, rank, i, n
parameter (n = 1 000)
integer a(n), b(n)
integer op
external smod5
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
do i = 1, n
a(i) = i + rank end do
print *, 'process ', rank, ' a(1) =', a(1)
call MPI_OP_CREATE(smod5, .TRUE., op, ierr)
call MPI_REDUCE(a, b, n, MPI_INTEGER, op, 0,
&	MPI_COMM_WORLD, ierr)
call MPI_OP_FREE(op, ierr) if(rank .eq. 0) print *, ' b(1) =', b(1) call MPI_FINALIZE(ierr) end
integer function smod5(in, inout, l, type)
integer l, type
integer in(l), inout(l), i
do i = 1, l
inout(i) = mod(in(i)+inout(i), 5) end do return end

Ответ:

 (1) smod5 

 (2) inout 

 (3) op 


Номер 2
В вызове какой процедуры функция smod5 объявляется в качестве глобальной процедуры op

MPI_OP_FREE.
program example15
include 'mpif.h'
integer ierr, rank, i, n
parameter (n = 1 000)
integer a(n), b(n)
integer op
external smod5
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
do i = 1, n
a(i) = i + rank end do
print *, 'process ', rank, ' a(1) =', a(1)
call MPI_OP_CREATE(smod5, .TRUE., op, ierr)
call MPI_REDUCE(a, b, n, MPI_INTEGER, op, 0,
&	MPI_COMM_WORLD, ierr)
call MPI_OP_FREE(op, ierr) if(rank .eq. 0) print *, ' b(1) =', b(1) call MPI_FINALIZE(ierr) end
integer function smod5(in, inout, l, type)
integer l, type
integer in(l), inout(l), i
do i = 1, l
inout(i) = mod(in(i)+inout(i), 5) end do return end

Ответ:

 (1) MPI_OP_CREATE 

 (2) MPI_REDUCE 

 (3) MPI_OP_FREE 


Номер 3
С помощью вызова какой процедуры удаляется функция smod5

MPI_OP_FREE.
program example15
include 'mpif.h'
integer ierr, rank, i, n
parameter (n = 1 000)
integer a(n), b(n)
integer op
external smod5
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
do i = 1, n
a(i) = i + rank end do
print *, 'process ', rank, ' a(1) =', a(1)
call MPI_OP_CREATE(smod5, .TRUE., op, ierr)
call MPI_REDUCE(a, b, n, MPI_INTEGER, op, 0,
&	MPI_COMM_WORLD, ierr)
call MPI_OP_FREE(op, ierr) if(rank .eq. 0) print *, ' b(1) =', b(1) call MPI_FINALIZE(ierr) end
integer function smod5(in, inout, l, type)
integer l, type
integer in(l), inout(l), i
do i = 1, l
inout(i) = mod(in(i)+inout(i), 5) end do return end

Ответ:

 (1) MPI_OP_CREATE 

 (2) MPI_REDUCE 

 (3) MPI_OP_FREE 




Главная / Программирование / Параллельное программирование с использованием технологии MPI / Тест 4