Надежность MPI IO: запись в один и тот же файл, одинаковые данные с одинаковым смещением - PullRequest
0 голосов
/ 21 декабря 2018

Интересно, как MPI (реализации) справляется с «неправильным использованием», вызванным коллективной записью данных, которая фактически является последовательным доступом к записи (одни и те же данные в одном файле с одинаковым смещением).

Это как-то связано с темой mpi-io-mix-of-single-and-множественный-процесс-вывод .

В случае небольших наборов информации (всего несколько байтов),например, информация заголовка, mpi-запись может быть выполнена в пределах ранга == 0, если условие.Это, с другой стороны, может не одобряться чистым стилем программирования, так как это вызывает особый подход к коду, который может вызвать проблемы.Мой вопрос заключается в том, что делает MPI, если я пропускаю это условие if (rank == 0), например,

MPI_File_open(cComm, pCharFilename, MPI_MODE_RDWR | MPI_MODE_CREATE | 
MPI_MODE_EXCL, MPI_INFO_NULL, &fileHandler);

const MPI_Offset cCurrOffset = 0;
const MPI_Count cCount = 4;
uint8_t myHeader[cCount] = {1,2,3,4};
MPI_Request mpireq = MPI_REQUEST_NULL;
MPI_Status mpistat;

MPI_File_iwrite_at(fileHandler, cCurrOffset, &myHeader, cCount, 
MPI_BYTE, &mpireq);
MPI_Wait(&mpireq, &mpistat);

MPI_File_close(&fileHandler);

Строго говоря, я запускаю условие гонки, но мне все равно, поскольку данные одинаковы.Тестирование показывает, по крайней мере, никаких явных недостатков.Хотя я могу представить, что это не очень хорошо для производительности.Или реализации MPI, такие как openMPI, внутренне оптимизируют такой доступ?Есть ли другие проблемы с таким подходом, которых я не вижу?Поскольку я не нашел ответа ни в спецификации MPI, ни в каких-либо ответах по этой теме, я подумал, что стоит спросить ...

...