Запись файла в mpi используя python без условия гонки
Я использую mpi4py для моделирования распределенного приложения и хочу, чтобы все процессы записывали в общий файл. Есть ли функция, которая позволяет это без условия гонки?
3 ответа
Вам следует ознакомиться с одним из множества руководств по использованию ввода-вывода MPI. Я уверен, что есть какой-то способ использовать его в mpi4py.
У меня была похожая проблема. Для меня самый простой способ обойти это - записать каждый процесс в свой собственный файл и добавить метку времени. Этот файл затем может быть обработан, чтобы привести все в порядок.
Например, include (python3-style) печатает как:
print ("Процесс%d только что получил точку%r в%s" % (rank, point,str(datetime.datetime.now())))
Просто укажите дату и время сверху. Кажется, что mpi4py интересным образом буферизирует некоторые операции ввода-вывода, поэтому каждый процесс, поддерживающий собственный вывод, является наиболее надежным решением.
Возможно, стоит посмотреть на параллельную реализацию h5py
http://docs.h5py.org/en/latest/mpi.html
Который очень хорошо работает с mpi4py, если вы правильно его построили