Мегаобучалка Главная | О нас | Обратная связь


Расширения существующих языков программирования



2015-11-27 1785 Обсуждений (0)
Расширения существующих языков программирования 0.00 из 5.00 0 оценок




Кроме использования комментариев для получения параллельной программы, часто идут на расширение существующих языков программирования. Вводятся дополнительные операторы и новые элементы описания переменных, позво­ляющие пользователю явно задавать параллельную структуру программы и в некоторых случаях управлять исполнением параллельной программы. Так язык High Performance Fortran (HPF), помимо традиционных операторов Фортрана и системы спецкомментариев, содержит новый оператор FORALL, введенный для описания параллельных циклов программы. Наиболее интересной чертой HPF представляется многоуровневое отображение массив - массив-шаблон - вирту­альный процессорный массив - физические процессоры, позволяющее макси­мально гибко отображать пользовательские данные на реальный компьютер.

 

Другим примером служит язык mpC, разработанный в Институте системного программирования РАН как расширение ANSI С. Основное назначение mpC — создание эффективных параллельных программ для неоднородных вычисли­тельных систем. Пользователь может задать топологию сети, распределение данных и вычислений и необходимые пересылки данных. Посылка сообщений организована с использованием интерфейса MPI.

 

DVM-система предназначена для создания переносимых и эффективных вы­числительных приложений на языках C-DVM и Fortran-DVM для параллельных компьютеров с различной архитектурой. Аббревиатура DVM соответствует двум понятиям: Distributed Virtual Memory и Distributed Virtual Machine. Первое отражает наличие единого адресного пространства. Второе отражает использо­вание виртуальных машин для двухступенчатой схемы отображения данных и вычислений на реальную параллельную машину. Модель программирования предполагает задание DVM-указаний с помощью спецкомментариев, а значит, один вариант программы для последовательного и параллельного исполнения. Поддерживаются три группы директив: директивы распределения данных, ди­рективы распределения вычислений и спецификации удаленных данных. Ком­пилятор переводит программу на язык Фортран или Си, используя для органи­зации межпроцессорного взаимодействия одну из существующих технологий параллельного программирования (MPI, PVM, Router). В систему DVM также входят библиотека поддержки LIB-DVM, DVM-отладчик, предсказатель вы­полнения DVM-программ, анализатор производительности DVM-программ. Система разработана в Институте прикладной математики им. М.В.Келдыша РАН.

 

 

Специальные языки программирования

Если нужно точнее отразить либо специфику архитектуры параллельных сис­тем, либо свойства какого-то класса задач некоторой предметной области, то используют специальные языки параллельного программирования. Для про­граммирования транспьютерных систем был создан язык Occam, для програм­мирования потоковых машин был спроектирован язык однократного присваи­вания Sisal. Очень интересной и оригинальной разработкой является деклара­тивный язык НОРМА, созданный под руководством И.Б.Задыхайло в Институ­те прикладной математики им. М.В.Келдыша РАН для описания решения вы­числительных задач сеточными методами. Высокий уровень абстракции языка позволяет описывать задачи в нотации, близкой к исходной постановке про­блемы математиком, что условно авторы языка называют программированием без программиста. Язык с однократным присваиванием, не содержит традици­онных конструкций языков программирования, фиксирующих порядок вычис­ления и тем самым скрывающих естественный параллелизм алгоритма.

 

 

Библиотеки и интерфейсы, поддерживающие взаимодейст­вие параллельных процессов

С появлением массивно-параллельных компьютеров широкое распространение получили библиотеки и интерфейсы, поддерживающие взаимодействие па­раллельных процессов. Типичным представителем данного направления являет­ся интерфейс Message Passing Interface (MPI), реализация которого есть прак­тически на каждой параллельной платформе, начиная от векторно-конвейерных супер-ЭВМ до кластеров и сетей персональных компьютеров. Программист сам явно определяет какие параллельные процессы приложения в каком месте про­граммы и с какими процессами должны либо обмениваться данными, либо син­хронизировать свою работу. Обычно адресные пространства параллельных процессов различны. В частности, такой идеологии следуют MPI и PVM. В других технологиях, например Shmem, допускается использование как локаль­ных (private) переменных, так и общих (shared) переменных, доступных всем процессам приложения, и реализуется схема работы над общей памятью с по­мощью операций типа Put/Get.

5. Linda

Несколько особняком стоит система Linda, добавляющая в любой последова­тельный язык лишь четыре дополнительные функции in, out, read и eval, что и позволяет создавать параллельные программы. К сожалению, простота зало­женной идеи оборачивается большими проблемами в реализации, что делает данную красивую технологию скорее объектом академического интереса, чем практическим инструментом.

 

Параллельные предметные библиотеки

Часто на практике прикладные программисты вообще не используют никаких явных параллельных конструкций, обращаясь в критических по времени счета фрагментах к подпрограммам и функциям параллельных предметных библио­тек. Весь параллелизм и вся оптимизация спрятаны в вызовах, а пользователю остается лишь написать внешнюю часть своей программы и грамотно восполь­зоваться стандартными блоками. Примерами подобных библиотек являются Lapack, ScaLapack, Cray Scientific Library, HP Mathematical Library, PETSc и многие другие.

 

Некоторые параллельные предметные библиотеки

• BLAS и LAPACK - библиотеки, реализующие базовые операции линейной алгебры, такие как перемножение матриц, умножение матрицы на вектор и т.д.

• ScaLAPACK включает подмножество процедур LAPACK, перера­ботанных для использования на MPP-компьютерах, включая: реше­ние систем линейных уравнений, обращение матриц, ортогональ­ные преобразования, поиск собственных значений и др.

• FFTW, DFFTPack - быстрое преобразование Фурье.

• PETSc - набор процедур и структур данных для параллельного ре­шения научных задач с моделями, описываемыми в виде диффе­ренциальных уравнений с частными производными.

 

 

Специализированные пакеты и программные комплексы

И, наконец, последнее направление, о котором стоит сказать, это использование специализированныю пакетов и программныю комплексов. Как правило, в этом случае пользователю вообще не приходится программировать. Основная зада­ча — это правильно указать все необходимые входные данные и правильно воспользоваться функциональностью пакета. Так, многие химики для выполне­ния квантово-химических расчетов на параллельных компьютерах пользуются пакетом GAMESS, не задумываясь о том, каким образом реализована парал­лельная обработка данных в самом пакете.

 

 



2015-11-27 1785 Обсуждений (0)
Расширения существующих языков программирования 0.00 из 5.00 0 оценок









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

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1785)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)