У меня есть приложение, которое можно тривиально распараллелить, но его производительность в значительной степени связана с вводом / выводом. Приложение считывает один входной массив, хранящийся в файле, размер которого обычно составляет 2-5 ГБ (но я ожидаю, что это число будет расти в будущем). Типичные вычисления применяют одну и ту же операцию к каждой строке или столбцу этого массива. Для операций с высокой загрузкой процессора я получаю очень хорошее масштабирование примерно до 100 процессоров, но при более медленных операциях преобладают операции ввода-вывода и связанных с ними коммуникаций (доступ по NFS), и я не могу эффективно использовать более нескольких процессоров.
Каковы эффективные и портативные (идеально переносимые) варианты для такой ситуации? Параллельная HDF5 кажется многообещающей. У кого-нибудь есть реальный опыт с этим?
Будет ли стоить изучить MPI-I / O? Может ли он эффективно работать с заданным форматом файла, или мне нужно все адаптировать?