Задачи и цели
Вследствие повсеместного использования вычислительной техники бурно развивается направление численного моделирования (англ. numerical simulation [4]). Численное моделирование, является промежуточным элементом между аналитическими методами изучения и физическими экспериментами.[5] Рост количества задач, для решения которых необходимо использовать параллельные вычисления, обусловлен:
неопределенности[4][5][6]
При этом, использование численных моделей и кластерных систем, позволяет значительно уменьшить стоимость процесса научного и технологического поиска. Кластерные системы в последние годы широко используются во всем мире как дешевая альтернатива суперкомпьютерам. Система требуемой производительности собирается из готовых, серийно выпускаемых компьютеров, объединенных, опять же, с помощью серийно выпускаемого коммуникационного оборудования. Это, с одной стороны, увеличивает доступность суперкомпьютерных технологий, а с другой, повышает актуальность их освоения, поскольку для всех типов многопроцессорных систем требуется использование специальных технологий программирования для того, чтобы программы могли в полной мере использовать ресурсы высокопроизводительной вычислительной системы.[5] Создать программу для выполнения которой будут задействованы все ресурсы суперкомпьютера не всегда возможно. В самом деле, при разработке параллельной программы для распределенной системы мало разбить программу на параллельные потоки. Для эффективного использования ресурсов необходимо обеспечить равномерную загрузку каждого из узлов кластера, что в свою очередь означает, что все потоки программы должны выполнить примерно одинаковый объем вычислений.[5] Рассмотрим частный случай, когда при решении некоторой параметрической задачи для разных значений параметров время поиска решения может значительно различаться. Тогда мы получим значительный перекос загрузки узлов кластера. В действительности практически любая вычислительная задача выполняется в кластере не равномерно.[5] Несмотря на это, использование кластерных систем всегда более эффективно для обслуживания вычислительных потребностей большого количества пользователей, чем использование эквивалентного количества однопроцессорных рабочих станций, так как в этом случае с помощью системы управления заданиями легче обеспечить равномерную и более эффективную загрузку вычислительных ресурсов.[5] Получение высокой эффективности выполнения программ усложняет использование параллельных систем.[7] Согласно отчету Межведомственной комиссии по развитию сверхмощных вычислений США эффективность современных (2004 г.) параллельных систем в среднем составляет менее 10%.[8] Доминирующее положение при разработке параллельных программ для параллельных систем занимает стандарт MPI (англ. Message Passing Interface). Программа, разработанная в модели передачи сообщений, может быть представлена информационным графом, вершинам которого соответствуют параллельные ветви программы, а ребрам коммуникационные связи между ними. Это можно использовать для диспетчеризации заданий и их вычислительных потоков. Учитывая гетерогенность вычислительных ресурсов и сред передачи данных в кластере, можно осуществить распределение вычислительных потоков (ветвей) по вычислительным узлам так, чтобы минимизировать накладные расходы на обмен данными между потоками и выровнять вычислительную нагрузку между узлами. Для этого необходимо обладать информацией о мощности и загруженности узлов и структуре параллельных программ, которые ожидают выполнения.[9] В этой книге описываются методы управления вычислительными заданиями в параллельных кластерных системах с использованием программы мониторинга Ganglia и интерфейса передачи сообщений MPI, с целью увеличения эффективности кластеров и более равномерного распределения нагрузки между узлами кластера. Из готовых программных решений для динамического управления нагрузкой и распределения ресурсов внутри кластера можно выделить менеджер ресурсов Torque в связке с локальным планировщиком задач Maui. Именно эти программные продукты наиболее часто используются для этих целей. Большим плюсом этого ПО является то, что это продукты с открытым кодом. Менеджер ресурсов Torque позволяет автоматически распределять вычислительные ресурсы между задачами, управлять порядком их запуска, временем работы, получать информацию о состоянии очередей. При невозможности запуска задач немедленно, они ставятся в очередь и ожидают, пока не освободятся нужные ресурсы.[7]. Однако, эти программы применимы только в рамках локального кластера. Они не используются для диспетчеризации параллельных программ в пространственно распределенных (GRID, мультикопьютинг) системах. Существует множество аналогичных специализированных пакетов для централизованной диспетчеризации параллельных программ в пространственно распределенных системах: Grid-Way, CSF, Nimrod/G, Condor-G, GrADS, AppLeS, DIRAC, WMS и др.[7] Но описание методов управления пространственно распределенными (GRID, мультикопьютинг) системами выходит за рамки этой книги.
|