Параллельное программирование на Фортране GNS

Описание элементов языка Фортран GNS, ориентированного на программирование параллельных вычислительных процессов методом передачи сообщений. Идентификация отправителей и получателей. Структура элементов списка передаваемых сообщений; конструкция выбора.

Рубрика Программирование, компьютеры и кибернетика
Вид научная работа
Язык русский
Дата добавления 28.10.2018
Размер файла 45,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

C Прием суммируемого массива по синхронному протоколу

RECEIVE (TASKID=T) (NA(I),I=1,N)

S = 0.0

DO I = 1,N

S = S + NA(I)

ENDDO

C Отсылка результата в вызывающий процесс, асинхронно

SEND (TAG=NT+1,TASKID=T) S

C Переход в начало для многократного суммирования

GO TO 1

END

Обращение к процессу суммирования может многократно производится по имени процесса SUM из любого процесса программы последовательностью операторов:

SEND (SUM,TAG=NT) N

SEND (SUM) (A(I),I=1,N)

RECEIVE (TAG=NT+1) S

Естественно, значение NT должно быть согласовано со значением тега в программе SUM. В вызывающем процессе должны находиться описания A и SUM(TASK EXTERNAL SUM), определено значение N.

Модификация программы для параллельного суммирования с коэффициентом распараллеливания, равным числу инициализированных при задании конфигурации процессов класса SUM, может быть проведена так:

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

Перед обращением определяется число процессов SUM и квота элементов массива суммирования для каждого процесса SUM (общая его длина принимается за N).

NSUM = NVIRPR(SUM,MCPU,NNAME(SUM))

C Вычисление квоты для суммируемых сегментов массива

N1 = N/NSUM

N2 = N1

SSUM = 0.0

DO J=1,NSUM

C Последняя длина может быть длиннее N1, если N не кратно NSUM

IF (J.EQ.NSUM) N2 = N-(J-1)*N1

SEND (TASKID=GETTASKID(MCPU(J)),TAG=NT) N2

SEND (TASKID=GETTASKID(MCPU(J)))(A(I),I=1+J*N1-N1,1+J*N1-

# N1+N2)

SELECT MASSAGE

CASE (TAG=NT+1)

RECEIVE (TAG=NT+1) S

SSUM = SSUM+S

END SELECT

ENDDO

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

Для управления параллельными работами в самой процедуре суммирования (или иной распараллеливаемой процедуре) можно использовать другие приемы программирования.

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

NSUM = NVIRPR(SUM,MCPU,NNAME(SUM))

Далее, процесс отправляет первому (возможно единственному) массив для обработки и принимает результаты.

SEND (TASKID=GETTASKID(MCPU(1)),TAG=NT) N

SEND (TASKID=GETTASKID(MCPU(1)))(A(I),I=1,N)

RECEIVE (TAG=NT+1) S

Теперь необходима модификация описания процедуры SUM.

TASK PROGRAM SUM

PARAMETR (NA=100000,NT=13,MAXCPU(100))

REAL A(NA)

TASKID T

INTEGER MCPU(MAXCPU)

NSUM = NVIRPR(SUM,MCPU,NNAME(SUM))

1 IF (MCPU(1).NQ.MYVR()) GO TO 2

RECEIVE (TAG=NT,SENDER=T) N

RECEIVE (TASKID=T) (NA(I),I=1,N)

N1 = N/NSUM

N2 = N1

SSUM = 0.0

DO J=2,NSUM

IF (J.EQ.NSUM) N2 = N-(J-1)*N1

SEND (TASKID=GETTASKID(MCPU(J)),TAG=NT) N2

SEND (TASKID=GETTASKID(MCPU(J)))(A(I),I=1+J*N1-N1,1+J*N1-

# N1+N2)

SELECT MASSAGE

CASE (TAG=NT+1)

RECEIVE (TAG=NT+1) S

SSUM = SSUM+S

END SELECT

ENDDO

DO I = 1,N1

SSUM = SSUM + NA(I)

ENDDO

SEND (TAG=NT+1,TASKID=T) SSUM

GO TO 1

2 RECEIVE (TAG=NT,SENDER=T) N

RECEIVE (TASKID=T) (NA(I),I=1,N)

S = 0.0

DO I = 1,N

S = S + NA(I)

ENDDO

SEND (TAG=NT+1,TASKID=T) S

GO TO 1

END

Литература

1. Горелик А.М., Задыхайло И.Б. Расширения Фортрана для многопроцессорных систем с распределенной памятью. Препринт Института прикладной математики им. М.В.Келдыша РАН N55, Москва, 1992, 22 сс.

2. Абрамова В.А.,Вершубский В.Ю., Горелик А.М., Поздняков Л.А., Титова Т.И., Фисун В.А., Храмцов М.Ю., Шеина Н.П.. Система программирования GNS. Описание языка Фортран-GNS. Препринт Института прикладной математики им. М.В.Келдыша РАН N59, Москва, 1997, 20 сс.

3. Абрамова В.А.,Вершубский В.Ю., Горелик А.М., Поздняков Л.А., Титова Т.И., Фисун В.А., Храмцов М.Ю., Шеина Н.П. Система программирования GNS. Описание языка Си-GNS. Препринт Института прикладной математики им. М.В.Келдыша РАН N64, Москва, 1997, 22 сс.

4. Абрамова В.А.,Вершубский В.Ю., Поздняков Л.А., Храмцов М.Ю., Шеина Н.П. Система программирования GNS. Конфигуратор. Препринт Института прикладной математики им. М.В.Келдыша РАН N61, Москва, 1998, 18 сс.Размещено на Allbest.ru


Подобные документы

  • Особенности параллельного программирования высокопроизводительных многопроцессорных или многомашинных вычислительных комплексов. Основные положения и понятия стандартов MPI и OpenMP. Средства компиляции параллельных операторов для языков C и Fortran.

    лекция [177,9 K], добавлен 22.10.2014

  • Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.

    контрольная работа [51,7 K], добавлен 22.01.2013

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

    контрольная работа [118,1 K], добавлен 02.06.2014

  • Описание используемых понятий и механизмов объектно-ориентированного программирования. Разработка и описание необходимых классов. Демонстрационный модуль с кратким описанием использованных стандартных компонентов. Внешний вид и листинг программы.

    курсовая работа [1,3 M], добавлен 24.07.2013

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Почему C++. Возникновение и эволюция языка C++. Сравнение языков С++ и С. Эффективность и структура. Процедурное программирование. Модульное программирование. Абстракция данных. Объектно-ориентированное программирование. Улучшенный С.

    реферат [26,4 K], добавлен 03.06.2004

  • Общая характеристика информационных систем, предназначенных для передачи, преобразования и хранения информации. Изучение форм представления детерминированных сигналов. Энтропия сложных сообщений. Рассмотрение основных элементов вычислительных машин.

    лекция [1,5 M], добавлен 13.04.2014

  • Аналитический обзор средств и языков описания интеллектуальных порталов. Устройство и особенности языка технологии OSTIS, результаты ее анализа. Разработка предметно-ориентированного языка проектирования интеллектуальных порталов. Описание пример модели.

    дипломная работа [2,5 M], добавлен 08.11.2015

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

    презентация [116,4 K], добавлен 10.02.2014

  • Методы языка программирования C#. Алгоритмизация и программирование задач на языке высокого уровня C#. Внутренний цикл, ветвление, внешний цикл, вложенные друг в друга структуры ветвления. Вывод элементов массива на экран. Остальные элементы матрицы.

    курсовая работа [250,2 K], добавлен 27.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.