Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Primery_tezisov.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

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

Цель работы – анализ современных языковых средств для распараллеливания программ для решения задач в распределенной среде разработки приложений.

Широкое распространение вычислительных систем с массовым параллелизмом, таких как многоядерные процессоры, кластеры и GRID-архитектуры, с особой остротой поставило вопрос о разработке высокоуровневых, мощных и удобных в использовании языков программирования. Они позволили бы создавать сложное, но и, одновременно, надежное программное обеспечение, эффективно использующее возможности параллельных, распределенных вычислений и легко масштабируемое на заданное число процессоров (ядер), узлов или машин [1].

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

К наиболее распространённым технологиям относятся:

MPI (Message Passing Interface);

OpenMP (стандарт для программирования в модели общей памяти);

V-Ray. Комплекс инструментальных средств, направленных на автоматизацию создания и оптимизацию параллельных программ для современных суперкомпьютерных систем. Разработка НИВЦ МГУ;

DVM-система. Предназначена для создания переносимых и эффективных вычислительных приложений на языках C-DVM и Fortran-DVM для параллельных компьютеров с различной архитектурой [2].

В свою очередь, данные технологии поддерживают работу с различными языками параллельного программирования, например, такими как:

ABCL (An object-Based Concurrent Language) – параллельный язык, сочетающий в себе элементы объектно-ориентированного программирования и средства посылки сообщений;

Adl – функциональный язык с небольшим числом конструкций и типов данных, разработанный для написания параллельных программ. Ориентирован на программирование абстрактной машины с распределенной памятью;

Concurrent Clean – многоцелевой язык программирования высокого уровня, позволяющий создавать как последовательные, так и параллельные программы. Существуют реализации для многих платформ;

MC# – новый проект по созданию асинхронного параллельного языка программирования, ориентированного на кластерные и GRID-архитектуры, который позволяет использовать все преимущества языка C# в параллельном программировании. Этот язык позволяет создавать эффективный и в то же время легкочитаемый программный код, который к тому же может исполняться как в локальном, так и в распределённом режимах;

Linda – параллельный язык программирования. Программа рассматривается как совокупность процессов, которые могут обмениваться данными через пространство кортежей. В чистом виде практически не встречается, чаще всего используется совместно с другими языками высокого уровня как средство общения параллельных процессов;

Modula-3 – универсальный язык программирования, дальнейшее развитие языков Pascal и Modula-2. Включает в себя возможности разработки многопоточных приложений;

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

Phantom – интерпретируемый язык, предназначенный для разработки больших распределенных интерактивных приложений. Язык базируется на языке Modula-3;

Sisal – функциональный язык програмимирования. Программист не заботится о параллельных свойсттвах программ, компилятор определяет все зависимости, распределяет работу по процессорам, вставляет необходимые пересылки и синхронизации;

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

ZPL – параллельный язык программирования. Включает в себя операции над целыми массивами и секциями массивов. Программист не задает никакого параллелизма, все параллельные свойства извлекаются компилятором [3].

Большинство из этих языков являются низкоуровневыми, что усложняет написание параллельных программ. Кроме того, такие интерфейсы как OpenMP и MPI базируются на использовании библиотек, а не на соответствующих конструкциях языков программирования [1].

В настоящее время широкое распространение получил язык MC#, который, в отличии от низкоуровневых языков программирования, включает в себя конструкции, делающие его средством высокоуровневого многопоточного программирования для многоядерных процессоров. Кроме того, высокоуровневость и прозрачность параллельных конструкций языка делает достаточно лёгким его понимание, что привлекает большое число программистов к регулярному параллельному программированию.

Список литературы: 1. Сердюк Ю.П. Введение в параллельное программирование на языке MC# / Ю.П.,Сердюк. – Переславль-Залесский: Институт программных систем РАН, 2007. – 51 с. 2. Технологии параллельного программирования [Электронный ресурс] // Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ. – Режим доступа к ресурсу: http://parallel.ru. 3. Специальные параллельные языки и расширения существующих языков [Электронный ресурс] // Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ. – Режим доступа к ресурсу: http://parallel.ru/tech/tech_dev/par_lang.html.

УДК 621.113: 21474

І.В. Радченко, студент 5 курсу

igor_rd@mail.ru