- •1 Параллельные и распределенные вычислительной системы
- •1.1 Понятие параллельной и распределенной вычислительной системы
- •1.2 Архитектура параллельной и распределенной вычислительной системы
- •1.3 Программное обеспечение для различных высокопроизводительных систем
- •1.4 Языки высокопроизводительных вычислений
- •1.5 Интегрированная среда разработки многопоточных приложений
- •2.1 Общие сведения об Oracle Solaris Studio ide
- •2.2 Профилировщик Performance Analyzer.
- •2.3 Профилирование приложений в Oracle Solaris Studio.
- •Заключение
- •Список используемых источников
1.4 Языки высокопроизводительных вычислений
Основными языками разработки программ с параллельными и распределёнными вычислениями являются С, С++ и High Performance Fortran (HPF). В них заложены различные механизмы: программирование с разделяемыми переменными (многопоточное) и распределенное программирование.
В многопоточном программирование создаются потоки, принадлежащие одному процессу и использующие его участок памяти. Для взаимодействия между потоками используются разделяемые данные. Для управления разделяемых данных создаются объекты синхронизации.
На языках С, С++ потоки создаются:
средствами языка (начиная с С++11 и С11);
с помощью библиотек (например, библиотеки PThreads, реализующая стандарт POSIX Threads);
декларативно (например, с помощью стандарта OpenMP).
Библиотека PThreads содержит типы данных потоков, атрибутов и мьютексов, функции для работы с потоками, атрибутами потоков, синхронизации потоков.
Открытый стандарт OpenMP дает описание совокупности директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью.
В распределенном программирование взаимодействие между процессами организовано через передачу сообщений. Процессы обмениваются данными с другими процессами с помощью сообщений. Процессы создаются явно, путём вызова соответствующей функции операционной системы, а обмен сообщениями – с помощью библиотеки (например, реализация протокола MPI).
MPI – это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений. На языках С, С++ есть реализация стандарта MPI.
1.5 Интегрированная среда разработки многопоточных приложений
Интегрированная среда разработки, ИСР (англ. IDE, Integrated Development Environment или Integrated Debugging Environment) – система программных средств, используемая программистами для разработки программного обеспечения.
ИСР обычно включает в себя:
текстовый редактор;
компилятор и/или интерпретатор;
средства автоматизации сборки;
отладчик.
Интегрированные среды разработки были созданы для того, чтобы максимизировать производительность программиста благодаря тесно связанным компонентам с простыми пользовательскими интерфейсами. Это позволит разработчику делать меньше действий для переключения различных режимов, в отличие от дискретных программ разработки.
Одна из наиболее важных частей ИСР – отладчик, который представляет собой модуль среды разработки или отдельное приложение, предназначенное для поиска ошибок в программе. Отладчик позволяет выполнять пошаговую трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения программы, устанавливать и удалять контрольные точки или условия остановки и т. д.
Известные отладчики:
GNU Debugger — переносимый отладчик уровня исходного кода и дизассемблер из системы программирования GNU, работающий со многими языками программирования, операционными системами и системными архитектурами;
DBX — стандартный отладчик уровня исходного кода для языков C, C++, Fortran и Java, доступный для операционных систем Solaris, AIX, IRIX, Tru64 UNIX, GNU/Linux и BSD. Основные функции:
Поддержка отладки приложений OpenMP;
Поиск утечек памяти;
Отслеживание некорректного обращения к памяти;
Исправление кода «на лету»;
(Solaris) Работа с многопоточными приложениями в контексте потоков и LWP;
Microsoft Visual Studio Debugger — отладчик, входящий в состав всех версий Microsoft Visual Studio.
Для разработки многопоточных приложений в ИСР должны содержаться различные библиотеки параллельного и распределенного программирования, а также использоваться инструменты анализа разрабатываемых приложений. С помощью инструментов анализа можно отследить типичные ошибки, возникающие при многопоточном программирование (например, состояние гонки или дедлоки), выявить “узкие места” производительности. Наличие такого рода инструментов в ИСР помогает программисту многопоточных приложений быстро найти и исправить возникающие ошибки.
2 Oracle Solaris Studio IDE
