ОК, это секретный ответ ниндзя на ваш вопрос.Ответ haraldkl является самым простым, но есть и другой способ: ROMIO (реализация MPI-IO в MPICH2) имеет мало документированную функцию, называемую отложенным открытием: если вы сообщаете ROMIO, что не будете делать независимый ввод-вывод, а будете делать толькоколлективные вызовы, тогда только «агрегатор ввода / вывода» откроет файл, и двухфазная оптимизация коллективного ввода / вывода отправит эти данные всем процессорам.
<code></p>
<p>MPI_Info_set(info, "romio_no_indep_rw" "true");
MPI_File_open(comm, filename, mode, info, &fh);
MPI_File_read_all(fh, buf, count, MPI_CHAR, &status);
Чтение и трансляция - это, вероятно, путь, поскольку каждый процесс читает одни и те же данные.Просто подумал, что упомяну это, если вы окажетесь в другой ситуации, когда не каждый процесс имеет доступ к файлу.
У меня есть более подробная запись в блоге ROMIO: http://press3.mcs.anl.gov/romio/2003/08/05/deferred-open/