Как я могу передать файл из одного процесса ко всем другим с помощью MPI? - PullRequest
1 голос
/ 11 марта 2012

У меня есть текстовый файл, который доступен только на одном компьютере, и мне нужны другие компьютеры, чтобы иметь возможность читать этот файл тоже.Как я могу отправить файл, используя mpich2 (c ++)?

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

Ответы [ 2 ]

2 голосов
/ 02 мая 2012

ОК, это секретный ответ ниндзя на ваш вопрос.Ответ 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/

0 голосов
/ 02 мая 2012

так что в итоге я прочитал файл и передал его остальным процессам как массив символов.
спасибо @ haraldkl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...