Оптимизируйте запись в общий файл с помощью MPI

В моей программе MPI мне нужно записать результаты некоторых вычислений в один (общий) файл, где каждый процесс MPI записывает свою часть данных с разными смещениями. Достаточно просто. Я реализовал это как:

offset = rank * sizeof(double) * N;

for (i = 0; i < N; i++) {
   data = ...;
   MPI_File_write_at(file, offset, &data, 1, MPI_DOUBLE, &status);
   offset += sizeof(double);
}

Это немного упрощено, так как data на самом деле это массив, но давайте предположим, что это одно значение для краткости. Все процессы вызывают эту процедуру одновременно, и она работает правильно. Тем не менее, я не уверен, что это наиболее оптимальный способ выполнения ввода-вывода с MPI. Будет использовать MPI_File_write_at_all или же MPI_File_write_ordered привести к лучшей производительности?

К сожалению, у меня очень ограниченное время на кластере (в котором есть Luster), поэтому я не могу всесторонне протестировать все возможные реализации, и тестирование на моем ноутбуке, очевидно, не даст мне хорошего показателя производительности ввода-вывода.

0 ответов

Другие вопросы по тегам