Языки высокопроизводительных вычислений

Основными языками разработки программ с параллельными и распределёнными вычислениями являются С, С++ и High Performance Fortran (HPF). В них заложены различные механизмы: программирование с разделяемыми переменными (многопоточное) и распределенное программирование.

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

На языках С, С++ потоки создаются:

• средствами языка (начиная с С++11 и С11);

• с помощью библиотек (например, библиотеки PThreads, реализующая стандарт POSIX Threads);

• декларативно (например, с помощью стандарта OpenMP).

Библиотека PThreads содержит типы данных потоков, атрибутов и мьютексов, функции для работы с потоками, атрибутами потоков, синхронизации потоков.

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

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

MPI – это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений. На языках С, С++ есть реализация стандарта MPI.

Интегрированная среда разработки многопоточных приложений

Интегрированная среда разработки, ИСР (англ. IDE, Integrated Development Environment или Integrated Debugging Environment) – система программных средств, используемая программистами для разработки программного обеспечения.

ИСР обычно включает в себя:

• текстовый редактор;

• компилятор и/или интерпретатор;

• средства автоматизации сборки;

• отладчик.

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

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

Известные отладчики:

· GNU Debugger — переносимый отладчик уровня исходного кода и дизассемблер из системы программирования GNU, работающий со многими языками программирования, операционными системами и системными архитектурами;

· DBX — стандартный отладчик уровня исходного кода для языков C, C++, Fortran и Java, доступный для операционных систем Solaris, AIX, IRIX, Tru64 UNIX, GNU/Linux и BSD. Основные функции:

o Поддержка отладки приложений OpenMP;

o Поиск утечек памяти;

o Отслеживание некорректного обращения к памяти;

o Исправление кода «на лету»;

o (Solaris) Работа с многопоточными приложениями в контексте потоков и LWP;

· Microsoft Visual Studio Debugger — отладчик, входящий в состав всех версий Microsoft Visual Studio.

Для разработки многопоточных приложений в ИСР должны содержаться различные библиотеки параллельного и распределенного программирования, а также использоваться инструменты анализа разрабатываемых приложений. С помощью инструментов анализа можно отследить типичные ошибки, возникающие при многопоточном программирование (например, состояние гонки или дедлоки), выявить “узкие места” производительности. Наличие такого рода инструментов в ИСР помогает программисту многопоточных приложений быстро найти и исправить возникающие ошибки.

Oracle Solaris Studio IDE

Наши рекомендации