Организация параллельного ввода-вывода для кластеров с многоядерными процессорами, страница 2
Описание файла
PDF-файл из архива "Организация параллельного ввода-вывода для кластеров с многоядерными процессорами", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 12 семестр (4 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
МодельMPI-IO поддерживает ослабленную модель консистентности, возлагающую ответственность за создание согласованной версии файла на приложение. К недостаткам MPI-IO можно отнести их низкий уровень.Параллельный ввод-вывод с использованием MPI-IO далеко не всегда обеспечивает кросплатформенность. Для организации эффективноговвода-вывода с помощь MPI-IO важно учитывать, как влияют на времяработы такие параметры как: тип используемой функции ввода-вывода,размер файла, размер блока записи, представление файла на диске. Дляразных платформ эти решения могут отличаться. Средства MPI IO невсегда хорошо согласованы с файловыми системами параллельных компьютеров.94.3.
OpenMPВ этой модели параллельная программа представляет собой системупотоков, взаимодействующих посредством общих переменных и примитивов синхронизации. Основная идея модели параллелизма по управлению заключалась в следующем: Вместо программирования в терминахпотоков предлагается расширить языки специальными управляющимиконструкциями – параллельными циклами и параллельными секциями.Создание и уничтожение потоков, распределение между ними витков параллельных циклов или параллельных секций (например, вызовов процедур) – все это берет на себя компилятор. OpenMP – это интерфейс прикладной программы, расширяющий языки последовательного программирования (Си, Си++ и Фортран 90/95) набором директив компилятора, вызовов функций библиотеки поддержки выполнения и переменныхсреды.В настоящее время для приложений, использующих OpenMP, возможности ввода-вывода существенно ограничены.
Возможны два подхода. Для того, чтобы поддерживать согласованность результирующегофайла, операции чтения и записи должны выполняться вне параллельных областей. В случае, если несколько потоков обращаются к одномуфайлу, доступ к дескриптору файла (общему для всех потоков) долженбыть защищен, например, с использованием механизма критических секций. Другой подход – позволить каждому потоку использовать отдельный файл, чтобы избежать ошибок типа race condition или синхронизаций при доступе к общему дескриптору файла.
Хотя такой подход часто приводит к более высокой производительности, чем описанный ранее, он имеет три основных недостатка. Во-первых, он требует дополнительных (достаточно дорогостоящих) шагов пред- и пост-обработки,для того чтобы создать необходимое количество входных файлов и объединить выходные файлы, записанные разными потоками. Во-вторых,такой сценарий работы трудно поддерживать в случае, когда число потоков может меняться динамически во время выполнения программы.В-третьих, управление большим количеством файлов часто является узким местом для сервера метаданных параллельной файловой системы.Последнее может стать актуальным в ближайшее время, как количествоядер современных микропроцессоров, как ожидается, вырастет до сотенили даже тысяч.Для повышения производительности операций ввода-вывода в OpenMPприложениях разработан новый интерфейс параллельного ввода-вывода,который обеспечивает доступ нескольких потоков к одному файлу без10необходимости явного использования операций синхронизации.
Разработанные спецификации очень близки к спецификациям MPI-IO. Основноеотличие от MPI-IO – отсутствие неблокирующих операций ввода-вывода,а также отсутствие поддержки работы с производными типами данных(их нет в OpenMP).4.4. Выводы о состоянии дел в предметной областиНа сегодняшний день многое сделано для обеспечения параллельноговвода-вывода на вычислительных кластерах.
Однако, некоторые аспекты работы остаются в неудволетворительном состоянии:∙ Для достижения хорошей производительности необходимо расширение интерфейсов традиционных файловых систем∙ Для повышения удобства использования необходимо разрабатывать специфичные модель-ориентированные библиотеки вводавывода∙ Невозможность эффективного использования систем специалистами, знакомыми с разрабатываемой моделью программирования, ноне знающими тонкостей системы ввода-вывода.115. Исследование и построение решенияВ ходе работы была исследована производительность нескольких методов организации параллельного ввода-вывода:1.
Метод на основе индивидуальных операций ввода-вывода.Запись каждым процессом в отдельный файл. При такомподходе каждый процесс записывает в отдельный файл толькосвою часть распределённого массива.∙ Преимущества: малый объём записываемых каждым процессом данных, эффективное использование возможностей параллельных файловых систем.∙ Недостатки: С большим числом файлов работать сложнее. Получая вывод программы в виде множества отдельных файлов,пользователю ещё нужно приложить усилия для объединенияданных перед началом их анализа.2. Метод на основе индивидульных операций с общим файловым дескриптором. Все процессы пишут одновременно в одинфайл, используя MPI_set_view или seek для позиционированиявнутри файла.∙ Недостатки: хуже поддерживается файловыми системами,чем первый метод.∙ Преимущества: все данные находятся в одном файле.3.
Ввод-вывод на основе коллективных операций MPI. Всепроцессы вызывают фунцию для коллективной записи в одинфайл. Например, MPI_File_write_all. Полностью полагаемся нареализацию MPI, которая может лучше учитывать архитектуруконкретной системы.4. Метод на основе выделения процессов ввода-вывода. Всепроцессы делятся на группы. В каждой группе выделяется одинпроцесс ввода-вывода. Каждый процесс, используя индивидуальные операции ввода-вывода, записывает в отдельный файл данныеот всех процессов своей группы.∙ Преимущества: разделение на меньшее число файлов, большевозможностей для совмещения операций ввода-вывода с вычислениями на не участвующих в записи узлах.12Была разработана система тестов, позволяющая замерить время работы каждого из методов на разных вычислительных комплексах. Тестирование производилось на трёх суперкомпьютерах:1.
pSeries 690 HPC Regatta - система с общей памятью на процессорах Power4 с пиковой производительностью 83.2 Тфлоп/c. Характеристики:∙ 16 процессоров Power4∙ Объём оперативной памяти: 64 Гб∙ На данной машине установлен специальный блок хранениядля 16 SCSI дисков. В этот блок установлено 12 дисков на146 GB каждый для домашних каталогов пользователей и 4дисков на 70GB для ОС.∙ Параллельная файловая система: GPFS2. МВС-100К - массивно-параллельная вычислительная система.Пиковая производительность: 227,94 Тфлоп/c.
Характеристики:∙ 1275 вычислительных модулей (10572 процессорных ядер, 152GPU); по два 6-12 ядерных процессора на узле∙ коммуникационная сеть Infiniband DDR, построенная с использованием коммутаторов Voltaire и Cisco;∙ транспортная сеть Gigabit Ethernet/10 Gigabit Ethernet;∙ процессоры, используемые в узлах: Intel Xeon E5450, IntelXeon X5365, Intel Xeon X5670, Intel Xeon X5675.∙ оперативная память на узлах: от 8 до 192 Гб.∙ Параллельная файловая система: GPFS3.
"Ломоносов" - массивно-параллельная вычислительная системас пиковой производительностью 1,7 Пфлоп/c. Характеристики:∙ Число процессоров/ядер x86: 12346 / 52168∙ Оперативная память: 92 ТБ∙ Общий объем дисковой памяти вычислителя: 1,75 ПБ∙ Основной тип процессора: Intel Xeon X5570/Intel Xeon 5670,Nvidia X2070∙ Параллельная файловая система: Lustre13Тесты проводились на разных процессорных сетках (4 - 256 процессоров) и разных объёмах данных (1 - 256 * 106 чисел с плавающей запятойдвойной точности).Результаты тестов, полученные на МВС-100К:Таблица 2: Время, затраченое на чтение массива данных на 16-ти процессорах, при использовании различных методов ввода-вывода (в секундах)МетодFILE_RW_ALLFILE_RWFILE_SEEK_RWFILE_RW_SEP_FILESIO_SERV_SEP_FILES 1IO_SERV_SEP_FILES 2IO_SERV_SEP_FILES 4IO_SERV_SEP_FILES 8Размер массива данных(double)22252262272280,3122 0,6430 1,1870 2,2097 4,27950,2921 0,6324 1,1718 2,1706 4,24710,2846 0,6216 1,1904 2,1996 4,27520,1281 0,2522 0,5984 1,0220 1,90020,4045 0,6738 1,3030 2,66250,2067 0,5711 0,8640 1,8148 3,48300,1961 0,4592 0,8692 2,0530 3,17300,1486 0,3078 0,6658 1,1607 2,279924Рис.
1: Результат на МВС-100К, 16 процессоров14Таблица 3: Время, затраченое на чтение массива данных на 64 процессорах, при использовании различных методов ввода-вывода (в секундах)Размер массива данных(double)2225226227228FILE_RW_ALL0,3952 0,6119 0,9462 1,8537 3,9205FILE_RW0,4351 0,6107 0,8952 1,8231 3,9733FILE_SEEK_RW0,4855 0,5984 0,8983 1,8196 4,0051FILE_RW_SEP_FILES 0,3429 0,3826 0,9993 1,2098 2,0551IO_SERV_SEP_FILES 1 0,5337 0,7189 1,3398 2,6308IO_SERV_SEP_FILES 2 0,2684 0,6559 0,9777 1,9616 4,5100IO_SERV_SEP_FILES 4 0,2362 0,4950 0,7902 1,5468 2,9786IO_SERV_SEP_FILES 8 0,3348 0,4876 0,7058 0,9753 1,9254IO_SERV_SEP_FILES 16 0,3477 0,5828 0,9499 1,3186 2,7522IO_SERV_SEP_FILES 32 0,2968 0,3914 0,9419 1,1003 2,2293Метод24Рис.
2: Результат на МВС-100К, 64 процессора15Таблица 4: Время, затраченое на чтение массива данных на 256-ти процессорах, при использовании различных методов ввода-вывода (в секундах)Размер массива данных(double)2225226227228FILE_RW_ALL0,4652 0,7681 1,2198 2,4442 5,2201FILE_RW0,4629 0,6829 1,1200 2,4024 5,3693FILE_SEEK_RW0,4861 0,6887 1,1652 2,4450 5,3385FILE_RW_SEP_FILES0,3446 0,5540 1,1995 1,7521 3,0154IO_SERV_SEP_FILES 1 0,4818 0,6703 1,3249 2,7188IO_SERV_SEP_FILES 2 0,3000 0,6844 1,1987 1,9759 4,3650IO_SERV_SEP_FILES 4 0,1137 0,2913 0,7339 1,0852 2,0177IO_SERV_SEP_FILES 8 0,3350 0,3828 0,6055 0,9408 1,7892IO_SERV_SEP_FILES 16 0,3801 0,4466 0,6774 1,0151 1,7488IO_SERV_SEP_FILES 32 0,3230 0,5103 0,7862 1,1349 1,9715IO_SERV_SEP_FILES 64 0,3698 0,5139 1,0823 1,3668 2,4893IO_SERV_SEP_FILES 128 0,3248 0,5946 1,5029 1,6013 3,4130Метод24Рис.
3: Результат на МВС-100К, 256 процессоров16Здесь:∙ IO_TEST_FILE_RW_ALL - Ввод-вывод на основе коллективныхопераций MPI∙ IO_TEST_FILE_RW - Метод на основе индивидульных операцийс общим файловым дескриптором. Навигиция внутри файла с помощью MPI_set_view∙ IO_TEST_FILE_SEEK_RW - Метод на основе индивидульныхопераций с общим файловым дескриптором.