В рубрику "Решения корпоративного класса" | К списку рубрик | К списку авторов | К списку публикаций
Лариса Меньшикова
экономический советник
департамента информационных систем
Банка России, к.ф.-м.н., доцент МИРЭА
Если организация передачи данных и управления ими проводится проектировщиком АС, а не заложена в логику средств разработки АС, то используются следующие два вида организации передачи данных при использовании параллельных вычислений:
Системы передачи сообщений используют каналы и блокировку сообщений, что создает дополнительный трафик на шине и требует дополнительных затрат памяти для организации очередей сообщений. В современных процессорах могут быть предусмотрены специальные коммутаторы (кроссбары) с целью уменьшения влияния обмена сообщениями на время выполнения задачи. Существует большой выбор математических теорий для изучения и анализа систем с передачей сообщений. Наиболее известный - модель акторов.
Передача сообщений может быть эффективно реализована на симметричных мультипроцессорах как с разделяемой кэш-памятью, так и без нее. У параллелизма с разделяемой памятью и с передачей сообщений разная производительность, так как время, необходимое на переключение подзадач в системе с передачей сообщений, меньше чем время, необходимое на доступ к ячейке памяти, однако передача самих сообщений требует дополнительных ресурсов, в отличие от вызова процедур.
При распараллеливании важно учитывать не только формальный параллелизм структуры алгоритма, но и то, что операции обмена данными в параллельных ЭВМ происходят, как правило, значительно медленнее арифметических.
Еще одной проблемой, связанной с использованием параллельных алгоритмов, является балансировка нагрузки. Проблемы балансировки нагрузки усугубляются при использовании гетерогенных вычислительных сред, в которых вычислительные элементы существенно отличаются по производительности и доступности. Разновидность параллельных алгоритмов, называемая распределенными алгоритмами, специально разрабатывается для применения на кластерах и в вышеуказанных распределенных вычислительных системах.
Распараллеливание программ - процесс адаптации алгоритмов, записанных в виде программ, для их эффективного исполнения на вычислительной системе параллельной архитектуры.
Распараллеливание программ проводят двумя способами:
Кроме того, можно использовать POSIX Threads - стандарт реализации потоков выполнения программ.
В случае распределенных вычислений используется PVM (Parallel Vir tual Machine), позволяющий объединить разнородный (но связанный сетью) набор компьютеров в общий вычислительный ресурс.
ОрепМР - это стандарт параллельного программирования в среде с общей памятью. ОрепМР предоставляет программистам набор прагм, процедур и переменных среды, позволяющих легко параллелизовать код, написанный на Фортране, С или C++.
Прагма - это директива компилятора, указывающая, как обрабатывать код, следующий за прагмой. Когда прагмы ОрепМР используются в программе, они дают указание компилятору, поддерживающему ОрепМР, создать исполнимый модуль, который будет выполняться параллельно с использованием нескольких потоков. Прагмы ОрепМР позволяют использовать единообразный и переносимый интерфейс для параллелизации программ на различных архитектурах и системах. Спецификация ОрепМР принята многими и поддерживается такими поставщиками, как Sun, Intel, IBM и SGI.
Затем с использованием модели потоков ОрепМР программируется управление ими. Все, что необходимо, это вставить соответствующие прагмы в исходный код программы и затем скомпилировать программу компилятором, поддерживающим ОрепМР, с соответствующим ключом. Компилятор при первом проходе интерпретирует прагмы и параллелизует код. При использовании компиляторов, не поддерживающих ОрепМР, прагмы ОрепМР игнорируются без дополнительных сообщений.
В ОрепМР используется модель параллельного выполнения "ветвление-слияние". Программа ОрепМР начинается как единственный поток выполнения, называемый начальным потоком. Когда поток встречает параллельную конструкцию, он создает новую группу потоков, состоящую из себя и неотрицательного числа дополнительных потоков, и становится главным в новой группе. Все члены новой группы (включая главного) выполняют код внутри параллельной конструкции. В конце параллельной конструкции имеется неявный барьер. После параллельной конструкции выполнение пользовательского кода продолжает только главный поток.
В ОрепМР поддерживаются две основных конструкции разделения работы для указания того, что работу в области параллельности следует разделить между потоками группы. Эти конструкции разделения работы - циклы и разделы. Кроме того, существует прагма, которая дает всем потокам указание ожидать друг друга перед тем, как они продолжат выполнение за барьером. В конце области параллельности имеется неявный барьер.
Message Passing Interface (MPI) - программный интерфейс для передачи информации, который позволяет процессам, выполняющим одну задачу, обмениваться сообщениями. Разработан Уильямом Гроуппом и Эвином Ласком.
MPI является наиболее распространенным стандартом интерфейса обмена данными при организации параллельных вычислений, существуют его реализации для большого числа компьютерных платформ. Этот стандарт также используется при разработке программ для кластеров и суперкомпьютеров. В стандарте MPI описан интерфейс передачи сообщений, который может поддерживаться как платформой, так и приложением пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.
Стандарт MPI ориентирован на системы с распределенной памятью, когда затраты на передачу данных велики, в то время как ОрепМР ориентирован на системы с общей памятью (для многоядерных процессоров с общей кэш-памятью). Обе технологии могут использоваться совместно для оптимизации использования многоядерных систем в одном кластере.
Первая версия MPI разрабатывалась в 1993 г. Большинство современных реализаций MPI поддерживают версию 1.1. Стандарт MPI версии 2.0 поддерживается большинством современных реализаций, но в нем пока не все функции "реализованы корректно".
В MPI 1.1 (опубликован 12 июня 1995 г., первая реализация появилась в 2002 г.) поддерживаются следующие функции:
В MPI 2.0 (опубликован 18 июля 1997 г.) дополнительно поддерживаются следующие функции:
В начале сентября 2008 г. вышла версия MPI 2.1.
Благодаря использованию параллелизации можно организовать распределение ресурсов ХД, которое позволит использовать для аналитических расчетов те части данных из ХД, которые не подлежат изменению в период загрузки или перерасчета других частей ХД. Это будет особенно важно после того, как ППК будут работать не только с ХД, но и с хранилищем неструктурированной информации, так как поиск, анализ и формирование отчетов на основе неструктурированной информации требуют больших вычислительных ресурсов по сравнению с теми же операциями над структурированными данными из ХД.
Литература
Опубликовано: Журнал "Технологии и средства связи" #3, 2012
Посещений: 34255
Статьи по теме
Автор
| |||
В рубрику "Решения корпоративного класса" | К списку рубрик | К списку авторов | К списку публикаций