Вычислительный центр им. А.А. Дородницына РАНРаздел виртуального курса
|
|
A.
все процессы в данном задании не завершили это предложение
B. все процессы названного
коммуникатора не завершили это предложение
C. локальный процесс не
завершил это предложение
D. корневой процесс не
завершил это предложение.
A.
все процессы в данном задании подтвердили получение данных
B. все процессы названного
коммуникатора подтвердили получение данных
C. все процессы названного
коммуникатора достигли этого вызова
D. все данные поставлены в
очередь на отправку, даже если некоторые процессы могли еще не достичь этого
вызова.
ierror = MPI_Comm_rank(MPI_COMM_WORLD, rank)
═══════if (rank == 0) {ierror = MPI_Bcast(buf, 1, MPI_INTEGER, 0, MPI_COMM_WORLD)} else {// нет вызова MPI_Bcast}
rbuf = 1000;
══════ do while (rbuf .gt. 1)
══════ // расчет sbuf не показан
══════ ierror = MPI_Reduce (sbuf, rbuf, 1, MPI_REAL, MPI_MAX, root, MPI_COMM_WORLD);
══════ end do
ierror = MPI_Reduce(buf, buf, 1, MPI_INTEGER, MPI_SUM, 0, MPI_COMM_WORLD);
ierror = MPI_Scatter(sbuf, 5, MPI_REAL, rbuf, 10, MPI_REAL, 0, MPI_COMM_WORLD);
ierror = MPI_Comm_size (MPI_COMM_WORLD, size);
══════ ierror = MPI_Gather(sbuf, 5, MPI_REAL, rbuf, 5*size, MPI_REAL, 0, MPI_COMM_WORLD);
Отправляющий
буфер может быть безопасно переписан
Получающий буфер может быть
благополучно использован
Все участвующие процессы
возвратили управление из вызова
A.
каждый процесс должен получить столько элементов, сколько отправил корневой
процесс
B. каждый процесс должен
получить столько байт, сколько отправил корневой процесс
C. каждый процесс в названном
коммуникаторе должен вызвать MPI_Scatter, определяя тот же самый корневой
процесс
D. каждый процесс должен
определить получающийся буфер, размер которого равен, по крайней мере, 1/N всех
данных, отправленных корневым процессом
A.
получающий буфер на корневом узле имеет размер более чем в N раз больше размера
буферов на других узлах
B. буфер на корневом узле
равен размеру буферов на узлах отправки
C. один из некорневых
процессов переходит к своему сообщению прежде, чем это делает корневой процесс
D. корневой процесс переходит
к следующему сообщению прежде, чем один из некорневых процессов достигает его
вызова MPI_Gather
A.
буфером получателя
B. буфером отправителя
C. count
и datatype, при этом произведение числа и
размера типа данных то же самое, как у других процессов
D. корневым рангом
A.
буфер получателя
B. буфер отправителя
C. count
и datatype, при этом произведение числа и
размера типа данных то же самое, как у других процессов
D. корневой ранг
Ранг в коммуникаторе |
||||
|
процесс 1 |
процесс 2 |
процесс 3 |
процесс 4 |
comm1 |
0 |
1 |
2 |
3 |
comm2 |
3 |
2 |
1 |
0 |
После следующего фрагмента SPMD-кода на С:
MPI_Comm_rank (comm1, &rank1);
MPI_Gather(&rank1, 1, MPI_INT, &rbuf, 1,
MPI_INT, 0, comm1);
рассмотрим вопрос: Что содержит массив rbuf на корневом процессе?
{0,1,2,3}
{3,2,1,0}
MPI_Comm_rank
(comm2, &rank2);
MPI_Gather(&rank2, 1, MPI_INT, &rbuf, 1, MPI_INT, 0, comm2);
{0,1,2,3}
{3,2,1,0}
11. Может ли тот же самый процесс быть корневым для вызовов MPI_Gather в вопросах 9 и 10?
да
нет
A.
целые от 1 до 4 по порядку
B. целые от 1 до 4 в обратном
порядке
C. все 0-ые
D. все 7-ки
A.
целые от 1 до 4 по порядку
B. целые от 1 до 4 в обратном
порядке
C. все 0-ые
D. все 7-ки
A. 1
B.
log2(N)
C.
2*log2(N)
D. N
A.
MPI_Bcast
B. MPI_Send в цикле на задаче
0
C. MPI_Isend в цикле на
задаче 0, сопровожденная вызовом MPI_Waitall непосредственно после цикла
D. все стратегии примерно
одинаковы
ФИО (требуется для получения оценки):