Языки высокопроизводительных вычислений
Основными языками разработки программ с параллельными и распределёнными вычислениями являются С, С++ и 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