Вычислительный центр им. А.А. Дородницына РАН    

Раздел виртуального курса
Параллельное программирование в интерфейсе MPI


Вопросы по теме "Производные типы данных MPI"

  1. Предположим, Вам хочется создать типы данных для доступа к выбранным (затемненным) элементам двумерного массива, показанным на следующих рисунках:

    Вызов какой функции производного типа данных будет наилучшим для рисунка (a)?

    MPI_Type_contiguous
    MPI_Type_vector
    MPI_Type_indexed
    MPI_Type_struct

  2. Вызов какой функции производного типа данных будет наилучшим для рисунка (b)?

    MPI_Type_contiguous
    MPI_Type_vector
    MPI_Type_indexed
    MPI_Type_struct

  3. Вызов какой функции производного типа данных будет наилучшим для рисунка (c)?

    MPI_Type_contiguous
    MPI_Type_vector
    MPI_Type_indexed
    MPI_Type_struct

  4. Предположим, что Вы уже создали и ввели некий производный тип данных для доступа к выбранным (затемненным) элементам двумерного массива, показанным на рисунке (b):

    Если этот массив называется "buf", как следует определить буфер сообщения в вызове отправки?

    --- C: MPI_Send (buf, ...);
    --- C: MPI_Send (&buf[1][0], ...);

  5. Проверьте все, что применимо: если отправки и получения используют типы данных, перечисленные ниже, какие комбинации сгенерируют ошибку во время работы программы?

    Предположим, что:
    vectype1 был создан при
    count_dd=10, blocklength=5, stride=10, oldtype=MPI_INT
    vectype2 был создан при
    count_dd=10, blocklength=5, stride=20, oldtype=MPI_INT
    vectype3 был создан при
    count_dd=10, blocklength=6, stride=10, oldtype=MPI_INT

    receive: datatype=vectype1, count_msg=1

    send: datatype=vectype2, count_msg=1

    receive: datatype=vectype1, count_msg=1

    send: datatype=vectype3, count_msg=1

    receive: datatype=vectype3, count_msg=1

    send: datatype=vectype1, count_msg=1

    receive: datatype=vectype1, count_msg=1
    send: datatype=MPI_INT, count_msg=50


ФИО: