Параллельный ввод-вывод: файл на процесс против библиотек, таких как HDF5
Для высокопроизводительных вычислительных приложений с параллельным вводом-выводом в файловые системы Lustre, дает ли вывод файла на процесс верхний предел производительности? Я всегда использовал HDF5, предполагая, что это какая-то высокопроизводительная библиотека, пока не понял, насколько ужасна производительность параллельного ввода-вывода по сравнению с файлом на процесс для моего конкретного приложения. Конечно, файловый процесс не так красив и может потребовать некоторой (дешевой) постобработки, чтобы получить полезный формат, но после того, как я потратил столько времени на оптимизацию HDF5 и получил ужасную производительность в конце, мне интересно, почему кто-то используйте такую библиотеку для параллельного ввода-вывода для высокопроизводительных вычислений. Что не так с выводом файла на процесс и почему его часто не одобряют? Что касается пропускной способности, есть ли способ победить ее?
1 ответ
оптимизация ввода-вывода очень зависит от кода и даже зависит от варианта использования с одним и тем же кодом.
Вообще говоря, подход «файл на процесс» не рекомендуется, когда количество файлов, созданных каждым процессом, становится большим, поскольку это может привести к задержке на MDS (сервере метаданных). Другие проблемы также связаны с количеством inode (количество файлов, которые вы можете создать, например, на суперкомпьютере пользователь не может создавать неограниченное количество файлов). Тем не менее, он может достичь высокой пропускной способности ввода-вывода по сравнению с параллельным при определенном количестве процессов.
Я рекомендую вам ознакомиться с документацией PRACE-parallel I/O , разделы 2 и 3.