Параллельное программирование на Фортране 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.2015MPI - библиотека передачи сообщений на языке программирования 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