- •Дослідження перспективних стеганографічних методів приховування данних у нерухомих зображеннях методом дармстедтера-делейгла-квисквотера-макка
- •Использование case-средств в проектировании и разработке информационных систем
- •Исследование эффективности эвристического метода решения задачи о минимальном вершинном покрытии для оптимизации размещения управляющих серверов в распределенных информационных системах
- •Оптимизация размещения управляющих серверов в распределенных информационных системах на основе решения задачи о минимальном вершинном покрытии: постановка задачи и точный метод решения
- •Регистрация и анализ контактов с клиентами
- •Применение нейронных сетей в экономической безопасности
- •Аналіз існуючих підходів до побудови ефективної корпоративної інформаційної системи
- •Алгоритми оптимального розподілу обчислювальних ресурсів у кластері з невідчужуваними ресурсами
- •Аналіз можливостей itil для управління інфраструктурою підприємства
- •Використання систем підтримки прийняття рішень для проектування інтернет-ресурсів фармацевтичних компаній
- •Економічна безпека – завдання вимірювання, оцінки і аналізу
- •Технологии и языки параллельного программирования
- •Автоматизація сервісного обслуговування автомобілів
- •Програми авторизації бізнес-процесів компаній грузоперевізників
- •Можливості підвищення ефективності цифрової системної передачі
- •Розробка автоматизованого модуля «управління кар’єрою працівників підприємства»
- •Основные компоненты системы экономической безопасности предприятия
- •Оптимізація постачання палива для підвищення рівня екологічної безпеки
Технологии и языки параллельного программирования
Цель работы – анализ современных языковых средств для распараллеливания программ для решения задач в распределенной среде разработки приложений.
Широкое распространение вычислительных систем с массовым параллелизмом, таких как многоядерные процессоры, кластеры и 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
