FAQ #20 говорит:
Начиная с версии 1.1, Open MPI требует, чтобы размер типов данных C, C++ и Fortran был одинаковым на всех платформах в рамках одного параллельного приложения, за исключением типов, представленных MPI_BOOL и MPI_LOGICAL — различия в размерах этих типов между процессами. правильно обрабатываются. Различия между порядком байтов между процессами в одном задании MPI корректно и автоматически обрабатываются.
До версии 1.1 Open MPI не включал никакой поддержки размера данных или разнородности байтов.
Означает ли это, что MPI_UNSIGNED_LONG должен быть либо 32-битным на всех хостах, либо 64-битным на всех хостах? Мой кластер состоит из 32-битных и 64-битных серверов Linux. Как лучше всего обеспечить, чтобы long
и unsigned long
имели одинаковый размер на всех хостах? Может быть, мне следует использовать только int
и только «long long»? Это 32 и 64 бита соответственно на всех хостах. Можно ли иметь непостоянный размер данных, пока он не используется?
Спасибо.