Рекомендации по созданию переносимого прикладного программного обеспечения в вычислительной среде супер-ЭВМ

2. Проблема переносимости прикладных программ в вычислительной среде супер-ЭВМ

Под переносимостью прикладной программы (ПП) понимается возможность использования ПП на различных аппаратных и операционных платформах, отличающихся по архитектуре и характеристикам, с сохранением или небольшим изменением функций ПП. Обеспечение переносимости, прежде всего, позволяет сохранить затраты, вложенные в реализацию и апробирование ПП [1, 2].

Методом решения проблемы переносимости являются принципы и технологии открытых систем [3, 4]. Открытая система - это система, реализующая открытые спецификации на интерфейсы, службы и форматы данных, достаточные для того, чтобы обеспечить:

  • возможность переноса прикладных систем, разработанных должным образом, с минимальными изменениями на широкий диапазон систем;
  • совместную работу (интероперабельность) с другими прикладными системами на локальных и удаленных платформах;
  • взаимодействие с пользователями в стиле, облегчающем последним переход от системы к системе [5, 6].

Таким образом, для создания основы разработки переносимых ПП в вычислительной среде супер-ЭВМ необходимо определить общие черты суперкомпьютеров с различными аппаратной архитектурой и системным программным обеспечением. Эта работа была проведена специалистами IEEE и нашла отражение в группе стандартов POSIX.

2.1. Прикладные задачи, требующие больших компьютерных ресурсов.

Существует целый ряд научных и инженерных задач, эффективное решение которых возможно только с использованием мощных вычислительных ресурсов, таких как объем оперативной памяти и быстродействие [7]. Краткий перечень областей науки и техники, в которых возможно использование больших вычислительных ресурсов, приведен в [8].

2.2. Основные виды суперкомпьютерных сред

Одним из критериев, используемых для классификации компьютеров, может выступать количество потоков и данных, обрабатываемых в один момент времени. Согласно систематике Флинна [9], выделяют четыре класса:

  • скалярные однопроцессорные системы: одиночный поток команд - одиночный поток данных (SISD)
  • одиночный поток команд - множественный поток данных (SIMD)
  • множественный поток команд - множественный поток данных (MIMD)
  • множественный поток команд - одиночный поток данных (МISD)

Большинство суперкомпьютеров разработаны по технологиям SIMD и MIMD. В настоящее время особенно быстро развивается направление MIMD архитектуры. Это обусловлено тем, что при использовании процессоров средней мощности, можно достичь высокой суммарной производительности машины. Кроме того, используя возможность создания фиксированной, оптимальной для конкретной прикладной задачи, топологи соединения процессоров, на базе MIMD технологии можно создавать высокоскоростные специализированные супер-ЭВМ.

В качестве примера однопроцессорного векторного суперкомпьютера (SIMD) можно привести FACOM VP-200 (фирма Fujitsu). Общим для всех векторных суперкомпьютеров является наличие в системе команд векторных операций, например, сложение векторов, допускающих работу с векторами определенной длины.

В свою очередь для компьютеров класса MIMD параметром классификации является наличие общей (SMP) [10] или распределенной памяти (MPP) [11]. Системы с общей памятью называют также сильно связанными, а с распределенной - слабо связанными.

В архитектуре многопроцессорных векторных компьютеров (MIMD) можно отметить две важнейшие характеристики: симметричность (равноправность) всех процессоров системы и разделение всеми процессорами общего поля оперативной памяти. Как уже отмечалось выше, подобные компьютерные системы называются сильно связанными. Если в однопроцессорных векторных ЭВМ для создания эффективной программы ее надо векторизовать, то в многопроцессорных появляется задача распараллеливания программы для ее выполнения одновременно на нескольких процессорах.

К системам класса MIMD относятся и кластеры [12]: набор из нескольких ЭВМ, соединенных через некоторую коммуникационную инфраструктуру. В качестве такой структуры может выступать как обычная компьютерная сеть, так и специализированные высокоскоростные соединения. Кластеры могут быть образованы как из различных компьютеров (гетерогенные кластеры), так и из одинаковых (гомогенные кластеры) [13]. Кластер является слабо связанной системой.

2.3. Стандартизованное описание суперкомпьютерной среды.

При создании единообразного описания суперкомпьютерной вычислительной среды, необходимо определить то общее, что есть во всех перечисленных в п.2.2 видах процессорных систем.

Согласно принятым за рубежом стандартам [14], под суперкомпьютером обычно понимают ЭВМ (или их объединение), удовлетворяющую следующим требованиям:

  • наличие возможности работы с большим количеством данных, т.е. наличие большого объема как оперативной памяти, так и памяти длительного хранения (дискового пространства);
  • высокая производительность;
  • высокая надежность: время бесперебойной (непрерывной) работы должно измеряться днями и более.

Разработанные к настоящему моменту нормативные документы, определяющие создание переносимых компьютерных операционных систем и прикладных программ (в частности, стандарты группы POSIX) не налагают никаких ограничений и специальных требований на архитектуру супер-ЭВМ, что, в свою очередь, позволяет рассматривать под супер-ЭВМ машины всех 4-х классов, перечисленных в п.2.2.

На основе предложенной рабочей группой POSIX P1003.0 Института инженеров по электронике и электротехнике (IEEE) Эталонной Модели Среды Открытых Систем (OSE/RM), была разработана модель суперкомпьютерной среды, схема которой представлена на рис.1.

Как того требует OSE/RM, взаимодействие между прикладной программой и программно-аппаратной платформой осуществляется через интерфейс прикладных программ (API). Для суперкомпьютерной среды введены дополнительные сервисы как со стороны программной, так и со стороны аппаратной части платформы. Так, интеграцию суперкомпьютера в сеть обеспечивает процесс (или процессы), контролирующие работу узла, а операционная система должна обеспечивать доступ к внешним компьютерным сетям, используя соответствующее оборудование.

Основным отличием суперкомпьютерной среды является введение в API функций, обеспечивающих пакетный режим обработки процессов. Программно-аппаратная платформа супер-ЭВМ должна соответственно обеспечивать:

  1. получение задач в виде отдельных пакетов,

  2. формирование из них очереди задач,

  3. бесперебойное выполнение задач очереди.

Особенности реализации пакетного режима зависят от архитектуры конкретной ЭВМ, однако для пользователя супер-ЭВМ, благодаря наличию API, эти особенности не видны.

Рис.1. Модель суперкомпьютерной среды (согласно IEEE 1003.10)

 

2.4. Особенности функционирования программ на аппаратных платформах MIMD

Супер-ЭВМ, основанные на архитектуре MIMD, могут одновременно выполнять несколько процессов. Это свойство используется для увеличения скорости счета прикладной программы, допускающей независимое выполнение отдельных своих частей: в прикладной программе образуется несколько параллельно протекающих потоков (процессов), взаимодействующих между собой для обмена данными. Методы написания таких программ являются объектом исследования целого направления в программировании - так называемого "параллельного программирования".

Основными задачами при параллельных вычислениях являются:

  • синхронизация выполнения потоков;
  • обмен данными между отдельными потоками.

Для решения этих задач широко используется парадигма обмена сообщений между работающими одновременно процессами. Она лежит в основе целого ряда средств разработки параллельных прикладных программ (ППП) [15] (см. Табл.1) и реализуется производителями программного обеспечения произвольным образом.

Большинство специализированных библиотек реализованы на основе функций MPI (Message Passing Interface): это стандартизованный механизм для построения программ по модели обмена сообщениями.

Стандарт MPI был создан в 1993 году и предназначался разработчикам переносимых ППП, реализованных на языках FORTRAN 77 и C. ППП, написанные с использованием функций, могут функционировать на самых разнообразных аппаратных платформах, среди которых:

  • мультипроцессорные системы с распределенной памятью;
  • сети рабочих станций (слабосвязанные системы);
  • мультипроцессорные системы с общей памятью;
  • гетерогенные системы, представляющие собой сеть компьютеров с различной архитектурой;
  • системы со специализированным оборудованием для соединения процесоров.

В настоящее время существуют стандартные "привязки" MPI к языкам С, С++, Fortran 77, Fortran 90. Следует отметить, что MPI - наиболее широко используемый и динамично развивающийся интерфейс из своего класса. Ознакомиться с описанием стандартов MPI можно на интернет-странице [16]

Таблица 1. Примеры библиотек и сред разработки, используемых в параллельных вычислениях

№ п/п

Название

Краткое описание

1

CVM

(Coherent Virtual Machine) - библиотека для программирования компьютеров с распределенной памятью. Модули библиотеки написаны на языке C++.

2

BSPlib

коммуникационная библиотека, использующая BSP-модель параллельного программирования. BSPlib может использоваться с языками C, C++, Fortran. Поддерживает две основные парадигмы - передачу сообщений и прямой доступ в нелокальную память. Основное ядро библиотеки состоит из 20 функций

3

KELP

(Kernel Lattice Parallelism) - библиотека классов языка C++, помогающая переносить научные приложения (в первую очередь конечные разностные методы) на компьютеры с распределенной памятью.

4

MPL

библиотека передачи сообщений, разработанная корпорацией IBM. Используется на массивно-параллельных компьютерах RS/6000 SP и кластерах на базе систем RS/6000.

5

OpenMP

программный интерфейс (API) для программирования компьютеров с разделяемой памятью (SMP/NUMA). OpenMP можно использовать для программирования на языках Fortran и C/C++.

6

PVM

(Parallel Virtual Machine) - общедоступная библиотека, предоставляющая возможности управления процессами с помощью механизма передачи сообщений. Существуют реализации PVM для самых различных платформ

7

Phosphorus

надстройка над PVM, позволяющая эмулировать использование общей памяти на компьютерах с распределенной памятью

8

Quarks

библиотека, позволяющая эмулировать использование общей памяти на компьютерах с распределенной памятью

9

SVMlib

(Shared Virtual Memory Library) - библиотека, эмулирующая использование общей памяти в кластерах персональных компьютеров под управлением Windows NT.

 

Предыдущая глава

   ОГЛАВЛЕНИЕ   

Следующая глава