Comments 9
Чтобы не посылать длину строки до посылки самой строки можно использовать
MPI_Probe()
, а вообще по-хорошему рекоммендую всем использовать Boost.MPI (reminder: оно не билдится by default когда собираете Boost), т.к. в этом случае посылка и получение композитных объектов становятся тривиальными, и плюс вы получаете дополнительные плюшки, как например возможность не вызывать больше MPI_Initialize()/MPI_Finalize()
. Плюс к этому все становится такое «объектно-ориентированное, упорядоченное и вообще няшное»™.+3
А разве boost.mpi билдится с intel'евской либой? Как то пробывал собрать буст с Microsoft MPI, пришлось пилить напильником скрипты инсталяции буста, т.к. он не саппортил последние версии msmpi
+1
А поддержка UDP/Multicast есть? Как-то нелогично делать массовую рассылку по TCP.
0
UDP/Mulicast не поддерживаются.
TCP — лишь один из поддерживаемых видов транспорта, причем не основной.
К основным относятся специфичные для Infiniband программно-аппаратные интерфейсы и протоколы, например, DAPL (Direct Access Programming Library).
В частности в DAPL есть режим UD (User Datagram), который похож по концепции на UDP.
Полный список поддерживаемых интерфейсов транспорта доступен в Intel® MPI Library Reference Manual (на англ.).
TCP — лишь один из поддерживаемых видов транспорта, причем не основной.
К основным относятся специфичные для Infiniband программно-аппаратные интерфейсы и протоколы, например, DAPL (Direct Access Programming Library).
В частности в DAPL есть режим UD (User Datagram), который похож по концепции на UDP.
Полный список поддерживаемых интерфейсов транспорта доступен в Intel® MPI Library Reference Manual (на англ.).
0
Расширение .exe в тексте меня пугает :)
0
Динамическое подключение/отключение узлов возможно? Допустим идёт долгий (сутками) расчёт без промежуточного сохранения, и не хочется потерять данные при отказе одного из узлов. Или добавить мощности «на ходу» за счёт подключения нового сервера
0
Это существенно более высокоуровневая задача — сам алгоритм должен позволять динамически добавлять и убирать узлы. MPI, фактически, только отвечает за доставку, причем классический MPI своей близостью к фортрану-77 способен вызвать тошноту:
Полное собрание гадостей, начиная со знакового int в качестве счетчика элементов массива (конечно, кто бы мог подумать, что в массиве может быть больше 2147483647 элементов, на 64 разрядной машине-то) и заканчивая тем, что приходится работать с сырым указателем, а тип передавать отдельной константой — широчайшее поле для отстрела конечностей.
Очень жаль, что большинство вузовских курсов по параллельному программированию излагают именно классический MPI вместе с 77 фортраном (boost? Не знаем такое! Хотя какой там boost, некоторые и об STL понятия не имеют), Остается только надеяться на энтузиазм студентов.
int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
Полное собрание гадостей, начиная со знакового int в качестве счетчика элементов массива (конечно, кто бы мог подумать, что в массиве может быть больше 2147483647 элементов, на 64 разрядной машине-то) и заканчивая тем, что приходится работать с сырым указателем, а тип передавать отдельной константой — широчайшее поле для отстрела конечностей.
Очень жаль, что большинство вузовских курсов по параллельному программированию излагают именно классический MPI вместе с 77 фортраном (boost? Не знаем такое! Хотя какой там boost, некоторые и об STL понятия не имеют), Остается только надеяться на энтузиазм студентов.
0
Sign up to leave a comment.
Обмен данными с использованием MPI. Работа с библиотекой MPI на примере Intel® MPI Library