Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРО МЕТОДИЧКА.docx
Скачиваний:
27
Добавлен:
09.12.2018
Размер:
953.18 Кб
Скачать

Система программирования dvm.

DVM система состоит из пяти основных компонентов: компиляторы с языков Fortran DVM, C DVM, система поддержки выполнения параллельных программ, отладчик параллельных программ, анализатор производительности, предсказатель производительности.

При проектировании ЭУМ-системы авторы опирались на следующие принципы:

  • Система должна базироваться на высокоуровневой модели выполнения параллельной программы, удобной и понятной для программиста, привыкшего программировать на последовательных языках.

  • Спецификации параллелизма должны быть прозрачными для обычных компиляторов.

  • Программа на языках Fortran и C, помимо описания алгоритма средствами традиционных языков Fortran или С, содержит спецификации параллелизма — правила параллельного выполнения этого алгоритма. Эти спецификации( директивы) должны быть невидимыми для стандартных компиляторов.

  • Языки параллельного программирования должны быть представлены языками последовательного программирования с расширенной спецификацией. Эти языки должны предлагать программисту модель выполнения.

  • Основная реализация модели выполнения параллельной программы должна осуществляться динамическими системами поддерживания DVM-программы.

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

Система программирования на mPc.

Язык mPC является, по-видимому, первым языком высокого уровня, разработанным специально для программирования неоднородных сетей. Он позволяет программисту определить все основные свойства параллельного алгоритма, влияющие на скорость его выполнения в неоднородной вычислительной среде. Необходимое число параллельных процессов, объем вычислений и передаваемых данных в рамках каждого процесса, сценарий взаимодействия процессов и многие другие характеристики доступны программисту для создания эффективных программ.

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

Язык программирования mPC является строгим расширением языка С, ориентированным на параллельные вычисления на неоднородных сетях.

mPC -программа — это множество параллельных процессов, взаимодействующих посредством неявной передачи сообщений.

Используя язык mPC, программист явно нигде не указывает, сколько процессов составляют программу и на каких компьютерах эти процессы выполняются. Это делается уже пользователем программы в момент ее запуска внешними по отношению к языку средствами.

Исходный код на mPC управляет лишь тем, какие именно вычисления выполняются каждым из процессов программы. Группе процессов, совместно выполняющих некоторый параллельный алгоритм, в языке mPC соответствует понятие сети.

Сеть в mPC — это механизм, позволяющий программисту абстрагироваться от реальных физических процессов параллельной программы. В простейшем случае сетью является множество виртуальных процессоров.

Определение сети в программе вызывает создание группы реальных процессов, представляющей эту сеть: каждому виртуальному процессору соответствует отдельный процесс параллельной программы. Заметим, что в разные моменты времени выполнения параллельной программы один и тот же реальный параллельный процесс может представлять различные виртуальные процессоры различных сетей.

Определив один раз сеть, программист вызывает отображение ее виртуальных процессоров на реальные процессы параллельной программы, и это отображение сохраняется на все время жизни сети.