Параллельное программирование на Фортране 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

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

    курсовая работа [286,0 K], добавлен 20.06.2012

  • Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц.

    курсовая работа [5,8 M], добавлен 24.05.2014

  • Введение в API-программирование. Транслирование клавиатурных сообщений в ASCII-коды. Текст программы на 32-битном ассемблере с применением API-функций. Функция для создания диалогового окна. Определение открываемого диска, каталога и имени файла.

    курсовая работа [40,6 K], добавлен 18.05.2014

  • Ознакомление с лямбда-выражениями и функциями языка Lisp. Этапы разработки алгоритма функции, производящей удаление из исходного списка всех элементов с четными номерами. Код программы, адаптированной для использования в базах данных больниц и ВУЗов.

    лабораторная работа [65,5 K], добавлен 21.05.2014

  • Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.

    отчет по практике [83,8 K], добавлен 08.06.2010

  • Международный стандарт на язык программирования Паскаль. Приемы объектно-ориентированного программирования в Турбо Паскале. Символы языка, его алфавит. Этапы разработки программы. Понятие алгоритмов и алгоритмизации. Структура программ на Паскале.

    курсовая работа [29,8 K], добавлен 28.02.2010

  • Характеристика модульного программирования: процедуры и функции, модули и их структура, открытые массивы и строки, нетипизированные параметры. Способы передачи параметров в подпрограммы в Borland Pascal. Объектно-ориентированное программирование.

    контрольная работа [28,9 K], добавлен 28.04.2009

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

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

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

    отчет по практике [77,4 K], добавлен 18.10.2012

  • Характеристика языка программирования С++. Описание классов и методов. Выполнение решения вычислительных процессов по заданным формулам. Создание диалогового приложения. Разработка инструкции пользователя. Операции над одномерными и двумерными массивами.

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

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