Как я могу безопасно отправлять структуру C любого (неизвестного) типа и содержимого в MPI, учитывая гетерогенные процессоры. Я знаю MPI_BYTE
с MPI_Send
, поскольку тип данных может использоваться, но как я могу обеспечить согласованность и правильность представления данных со стороны приемника в гетерогенной системе.Отправка строкой C любого типа в MPI
ответ
Вы не можете. MPI не знает автоматически, как конкретные компиляторы представляют в двоичных структурах данных, поэтому он активно использует встроенную обширную систему типов данных, которая используется для явного указания библиотеке, где в памяти можно найти данные и как их интерпретировать.
Чтобы отправить структуру C между экземплярами двух разных исполняемых файлов, которые включают, например, разные исполняемые файлы для разных платформ (гетерогенные вычисления) или разные исполняемые файлы, созданные разными компиляторами или одним и тем же компилятором, но с разными параметрами выравнивания (не знаю, зачем кому-либо это делать, но это в любом случае возможно), вы должны создать тип данных MPI который описывает структуру, используя MPI_Type_create_struct
. Другой вариант - упаковать на отправляющей стороне соответствующие поля структуры с помощью MPI_Pack
, а затем распаковать их на принимающей стороне с помощью MPI_Unpack
. В обоих случаях реализация MPI, поддерживающая гетерогенные среды, будет позаботиться о преобразовании данных в некоторый промежуточный формат и из него (при этом формат XDR часто является предпочтительным форматом).
Использование MPI_BYTE
для отправки необработанных двоичных данных между машинами с различной степенью точности или даже с разным выравниванием типа просто не является вариантом.
- 1. Open MPI Отправка структуры C
- 2. Отправка строки в C++ MPI
- 3. Отправка строкового массива MPI C
- 4. Отправка данных типа size_t с помощью MPI
- 5. Возврат любого типа в C#
- 6. Отправка частичных сообщений MPI
- 7. MPI - Отправка сегментов массива
- 8. Отправка последовательности байтов через MPI без проблем для типа данных
- 9. Отправка типа в C++ класса
- 10. Отправка Lambda Closure Over MPI
- 11. Чтение любого типа файла в C#
- 12. MPI - отправка частей изображения в разные процессы
- 13. MPI: Отправка массива структуры, содержащей указатель
- 14. проблемы MPI отправка информации работников
- 15. Показать карту типа MPI
- 16. MPI - отправка и получение столбца
- 17. отправка блоков 2D-массива в C с использованием MPI
- 18. Отправка строки известного размера через mpi в C
- 19. Отправка блоков строк 2D массива с использованием MPI в C
- 20. Отправка javaMail-прикрепления любого типа из базы данных
- 21. Возвращение IQueryable любого типа
- 22. Отправка любого файла на локальный
- 23. Отправка открытых заданий MPI в SGE
- 24. C++ пользовательские литералы для любого типа
- 25. Принять и идентифицировать вход любого типа C++
- 26. Передача любого типа объекта функции C++
- 27. Отправка раздела 3D-массива с использованием MPI
- 28. C#: реализовать интерфейс с свойством любого типа
- 29. Делегат для любого типа метода - C#
- 30. Отправка STRUCT с использованием MPI коллективной коммуникации