Основные типы данных MPI соответствуют типам данных основного языка, за исключением MPI_BYTE и MPI_PACKED. Мой вопрос заключается в том, что полезно использовать эти базовые типы данных MPI? Или, что то же самое, почему плохо использовать типы данных языка хоста?Какая польза от MPI Datatype?
Я прочитал учебник Уильяма Gropp и т.д. В слайде 31 «Почему Datatypes», он говорит:
- Поскольку все данные помечены типом, реализация MPI может поддерживать связь между процессами на машинах с очень различные представления памяти и длины элементарных типов данных (гетерогенная связь).
- Указание приложений, ориентированных на расположение данных в памяти
- уменьшает память-память копий в реализации
- позволяет использовать специальное оборудование (разброс/собирать) при наличии
Я не понимаю объяснения. Во-первых, если элементарные типы данных различны, я не понимаю, почему использование типов данных MPI может решить эту проблему, поскольку базовые типы данных MPI соответствуют базовому типу языка хоста (элементарные типы данных). Во-вторых, почему это ориентированное на приложения расположение данных в памяти имеет два преимущества?
Любые ответы, которые касаются моих первоначальных вопросов, будут приняты. Любой ответ разрешает мои вопросы объяснению Уильяма Гроппа, также будут приняты.
У меня нет идеи последнего примера. Предположим, что 'd' является переменной, которая будет отправлена из одного процесса в другой. Когда мы определяем 'd', мы обязательно используем' MPI_DOUBLE d', а не 'double d', правильно? – user2196452
Вы используете 'double d' в своей программе. Посмотрите на прототип, скажем, MPI_Send. Обратите внимание, что в качестве отправляемого буфера требуется 'void *'. Он также запрашивает тип MPI_Datatype, чтобы сообщить ему, что находится в буфере. Вот где вы кладете MPI_DOUBLE. – Adam
Я понимаю, что вы имеете в виду. Другими словами, мы можем использовать либо «double d;», либо «MPI_DOUBLE d;» в программе (если компилятор не жалуется). Есть ли у вас представление о двух преимуществах, а именно: копирование mem-to-mem и использование специального оборудования? – user2196452