Главная / Программирование /
Параллельное программирование с использованием технологии MPI / Тест 7
Параллельное программирование с использованием технологии MPI - тест 7
Упражнение 1:
Номер 1
Сообщение в MPI
- это...
Ответ:
 (1) массив разнотипных данных, расположенных в последовательных ячейках памяти 
 (2) массив однотипных данных, расположенных в последовательных ячейках памяти 
 (3) массив данных, расположенных в параллельных ячейках памяти 
Номер 2
Какие способы пересылки разнотипных данных в MPI
существуют
Ответ:
 (1) производственные типы данных 
 (2) упаковка данных 
 (3) временная буферизация 
Номер 3
Пересылка каких данных возможна в MPI
Ответ:
 (1) однотипных данных 
 (2) разнотипных данных 
 (3) данных, расположенных не в последовательных ячейках памяти 
Упражнение 2:
Номер 1
Какие типы данных создаются во время выполнения программы с помощью процедур-конструкторов на основе существующих к моменту вызова конструктора типов данных
Ответ:
 (1) коллективные 
 (2) предопределенные 
 (3) производные 
Номер 2
Назовите основные этапы создания типа данных
Ответ:
 (1) конструирование типа 
 (2) передача типа 
 (3) регистрация типа 
Номер 3
В каких операциях можно использовать производный тип после регистрации?
Ответ:
 (1) в операциях пересылки 
 (2) в коллективных операциях 
 (3) в операциях типа точка-точка 
Упражнение 3:
Номер 1
Назовите основные характеристики производственного типа данных
Ответ:
 (1) упаковка данных, расположенных не в последовательных ячейках памяти 
 (2) последовательность базовых типов данных 
 (3) набор целочисленных значений смещения элементов типа относительно начала буфера обмена 
Номер 2
В производном типе данных смещения могут быть
Ответ:
 (1) положительными 
 (2) отрицательными 
 (3) иррациональными 
Номер 3
При какой процедуре создаваемый тип данных представляет массив данных базового типа как отдельный объект
Ответ:
 (1)
MPI_TYPE_CONTIGUOUS(COUNT, TYPE, NEWTYPE, IERR)
INTEGER COUNT, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (3)
MPI_GRAPH_NEIGHBORS_COUNT(COMM, RANK, NNEIGHBORS, IERR)
INTEGER COMM, RANK, NNEIGHBORS, IERR
 
Упражнение 4:
Номер 1
С помощью каких процедур возможно создание нового типа данных NEWTYPE
Ответ:
 (1)
MPI_TYPE_CONTIGUOUS(COUNT, TYPE, NEWTYPE, IERR)
INTEGER COUNT, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (3)
MPI_GRAPH_NEIGHBORS_COUNT(COMM, RANK, NNEIGHBORS, IERR)
INTEGER COMM, RANK, NNEIGHBORS, IERR
 
Номер 2
В какой процедуре полученный тип данных можно считать обобщением векторного типа
Ответ:
 (1)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_INDEXED(COUNT, BLOCKLENS, DISPLS, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLENS(*), DISPLS(*), TYPE, NEWTYPE, IERR
 
 (3)
MPI_TYPE_HVECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT,
BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
Номер 3
Какой тип данных newtype
задается в данном примере
do i = 1, n
blocklens (i) = n-i + 1
displs(i) = n*(i-1)+i-1 end do call MPI_TYPE_INDEXED(n, blocklens, displs,
MPI_DOUBLE_PRECISION, newtype, ierr)
Ответ:
 (1) который в дальнейшем может использоваться для пересылки пяти расположенных подряд целых чисел 
 (2) который после регистрации может быть использован для пересылки как единого целого шести элементов данных 
 (3) для описания нижнетреугольной матрицы типа double precision
 
Упражнение 5:
Номер 1
Какая процедура отвечает за создание нового типа данных NEWTYPE
, состоящего из COUNT
блоков по BLOCKLEN
элементов базового типа данных TYPE
Ответ:
 (1)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_CONTIGUOUS(COUNT, TYPE, NEWTYPE, IERR)
INTEGER COUNT, TYPE, NEWTYPE, IERR
 
 (3)
MPI_TYPE_HVECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT,
BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
Номер 2
В какой процедуре следующий блок начинается через STRIDE элементов базового типа данных после начала предыдущего блока
Ответ:
 (1)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_CONTIGUOUS(COUNT, TYPE, NEWTYPE, IERR)
INTEGER COUNT, TYPE, NEWTYPE, IERR
 
 (3)
MPI_TYPE_HVECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT,
BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
Номер 3
В какой процедуре следующий блок начинается через STRIDE
байт после начала предыдущего блока
Ответ:
 (1)
MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_CONTIGUOUS(COUNT, TYPE, NEWTYPE, IERR)
INTEGER COUNT, TYPE, NEWTYPE, IERR
 
 (3)
MPI_TYPE_HVECTOR(COUNT, BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR)
INTEGER COUNT,
BLOCKLEN, STRIDE, TYPE, NEWTYPE, IERR
 
Упражнение 6:
Номер 1
В какой процедуре I
-й блок начинается через DISPLS (I)
байт с начала буфера посылки
Ответ:
 (1)
MPI_TYPE_INDEXED(COUNT, BLOCKLENS, DISPLS, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLENS(*), DISPLS(*), TYPE, NEWTYPE, IERR
 
 (2)
MPI_TYPE_STRUCT(COUNT, BLOCKLENS, DISPLS, TYPES, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLENS(*), DISPLS(*), TYPES(*), NEWTYPE, IERR
 
 (3)
MPI_TYPE_HINDEXED(COUNT, BLOCKLENS, DISPLS, TYPE, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLENS(*), DISPLS(*), TYPE, NEWTYPE, IERR
 
Номер 2
С помощью данной процедуры возможно...
MPI_TYPE_STRUCT(COUNT, BLOCKLENS, DISPLS, TYPES, NEWTYPE, IERR)
INTEGER COUNT, BLOCKLENS(*), DISPLS(*), TYPES(*), NEWTYPE, IERR
Ответ:
 (1) создание нового типа данных NEWTYPE
, состоящего из COUNT
блоков по BLOCKLENS (I)
элементов базового типа данных 
 (2) создание структурного типа данных NEWTYPE
из COUNT
блоков по BLOCKLENS (I)
элементов типа TYPES (I)
 
 (3) создание нового типа данных NEWTYPE
, состоящего из COUNT
блоков 
Номер 3
Какие типы данных не могут быть аннулированы этой процедурой
MPI_TYPE_FREE(DATATYPE, IERR)
INTEGER DATATYPE, IERR
Ответ:
 (1) структурированные типы данных 
 (2) производственные типы данных 
 (3) предопределенные типы данных 
Упражнение 7:
Номер 1
Какая процедура отвечает за регистрацию созданного производственного типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_COMMIT(DATATYPE, IERR)
INTEGER DATATYPE, IERR
 
 (2)
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
 
 (3)
MPI_TYPE_FREE(DATATYPE, IERR)
INTEGER DATATYPE, IERR
 
Номер 2
С помощью какой процедуры возможно аннулировать производственного типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_COMMIT(DATATYPE, IERR)
INTEGER DATATYPE, IERR
 
 (2)
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
 
 (3)
MPI_TYPE_FREE(DATATYPE, IERR)
INTEGER DATATYPE, IERR
 
Номер 3
С помощью какой процедуры можно определить объем памяти, занимаемого одним элементом типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_SIZE(DATATYPE, SIZE, IERR)
INTEGER DATATYPE, SIZE, IERR
 
 (2)
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
 
 (3)
MPI_TYPE_FREE(DATATYPE, IERR)
INTEGER DATATYPE, IERR
 
Упражнение 8:
Номер 1
С помощью данной процедуры возможно определить...
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
Ответ:
 (1) размер типа данных DATATYPE
в байтах 
 (2) абсолютный байт-адрес размещения массива LOCATION
в оперативной памяти компьютера 
 (3) зарегистрировать абсолютный байт-адрес массива 
Номер 2
В какой системной константе содержится базовый адрес
Ответ:
 (1) MPI_ADDRESS
 
 (2) MPI_TYPE_COMMIT
 
 (3) MPI_BOTTOM
 
Номер 3
В каком языке параметр ADDRESS
имеет тип MPI_Aint
Ответ:
 (1) Фортан 
 (2) Си 
 (3) Си+ 
Упражнение 9:
Номер 1
С помощью какой процедуры можно определить разницу между верхней и нижней границами элемента типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_LB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (2)
MPI_TYPE_UB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (3)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR)
INTEGER DATATYPE, EXTENT, IERR
 
Номер 2
С помощью какой процедуры можно определение смещения DISPL
нижней границы элемента типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_LB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (2)
MPI_TYPE_UB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (3)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR)
INTEGER DATATYPE, EXTENT, IERR
 
Номер 3
С помощью какой процедуры можно определение смещения DISPL
верхней границы элемента типа данных DATATYPE
Ответ:
 (1)
MPI_TYPE_LB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (2)
MPI_TYPE_UB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (3)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR)
INTEGER DATATYPE, EXTENT, IERR
 
Упражнение 10:
Номер 1
Для пересылки разнородных данных можно использовать...
Ответ:
 (1) упаковку данных 
 (2) распаковку данных 
 (3) буферизация данных 
Номер 2
После выполнения данной процедуры
MPI_PACK(INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, COMM, IERR) <type> INBUF(*), OUTBUF(*)
INTEGER INCOUNT, DATATYPE, OUTSIZE, POSITION, COMM, IERR
какой параметр увеличивается на число байт, равное размеру записи
Ответ:
 (1) POSITION
 
 (2) DATATYPE
 
 (3) OUTSIZE
 
Номер 3
Какой тип данных используется для пересылки упакованных данных
Ответ:
 (1) MPI_PACK
 
 (2) MPI_UNPACKED
 
 (3) MPI_PACKED
 
Упражнение 11:
Номер 1
Из какого массива происходит упаковка элементов типа DATATYPE
Ответ:
 (1) INBUF
 
 (2) OUTBUF
 
 (3) INCOUNT
 
Номер 2
Какой размер имеет массив INBUF
в данной процедуре
MPI_UNPACK(INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, COMM, IERR)
<type> INBUF(*), OUTBUF(*)
INTEGER INSIZE, POSITION, OUTCOUNT, DATATYPE, COMM, IERR
Ответ:
 (1) не менее OUTSIZE
байт 
 (2) не менее COMM
байт 
 (3) не менее INSIZE
байт 
Номер 3
Для каких элементов можно определить необходимый объем памяти с помощью данной процедуры
MPI_PACK_SIZE(INCOUNT, DATATYPE, COMM, SIZE, IERR)
INTEGER INCOUNT, DATATYPE, COMM, SIZE, IERR
Ответ:
 (1) INCOUNT
 
 (2) OUTCOUNT
 
 (3) для тех и других 
Упражнение 12:
Номер 1
С помощью какой процедуры можно упаковать INCOUNT
элементы типа DATATYPE
Ответ:
 (1)
MPI_PACK(INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, COMM, IERR)
<type> INBUF(*), OUTBUF(*)
INTEGER INCOUNT, DATATYPE, OUTSIZE, POSITION, COMM, IERR
 
 (2)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR)
INTEGER DATATYPE, EXTENT, IERR
 
 (3)
MPI_TYPE_UB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
Номер 2
С помощью какой процедуры можно распаковать OUTCOUNT
элементы типа DATATYPE
Ответ:
 (1)
MPI_TYPE_UB(DATATYPE, DISPL, IERR)
INTEGER DATATYPE, DISPL, IERR
 
 (2)
MPI_UNPACK(INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, COMM, IERR)
<type> INBUF(*), OUTBUF(*)
INTEGER INSIZE, POSITION, OUTCOUNT, DATATYPE, COMM, IERR
 
 (3)
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
 
Номер 3
С помощью какой процедуры можно определить необходимый объем памяти для упаковки INCOUNT
элементов типа DATATYPE
Ответ:
 (1)
MPI_ADDRESS(LOCATION, ADDRESS, IERR)
<type> LOCATION(*) INTEGER ADDRESS, IERR
 
 (2)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR)
INTEGER DATATYPE, EXTENT, IERR
 
 (3)
MPI_PACK_SIZE(INCOUNT, DATATYPE, COMM, SIZE, IERR)
INTEGER INCOUNT, DATATYPE, COMM, SIZE, IERR