Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ALL_otvety_na_ekzamen_PRO.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
473.05 Кб
Скачать

7. Для чего используется раздел reduction?

Над локальными копиями переменных после выполнения всех операторов параллельной области выполняется заданный оператор. Порядок выполнения операторов не определен.

Формат директивы: reduction(оператор: список)

Возможные операторы — "+", "*", "-", "&", "|", "^", "&&", "||".

Список — перечисляет имена общих переменных. У переменных должен быть скалярный тип (например, float, int или long, но не std::vector, int [] и т. д).

Принцип работы:

Для каждой переменной создаются локальные копии в каждом потоке.

Локальные копии инициализируются соответственно типу оператора. Для аддитивных операций — 0 или его аналоги, для мультипликативных операций — 1 или ее аналоги.

Пример:

#pragma omp parallel for reduction(+:sum)

for (intptr_t i = 0; i < 1000; i++)

sum += A[i];

8. Как и для чего применяется синхронизация потоков?

Как:

#pragma omp barrier

#pragma omp critical [имя]

#pragma omp single и другие директивы.

Неявная барьерная синхронизация выполняется также в конце каждого блока #pragma omp for, #pragma omp single и #pragma omp sections.

Применяется для корректной работы с данными разными потоками.

10. Назовите основные ошибки при создании параллельной программы.

Отсутствие ключевого слова parallel - может возникнуть при неправильном написании директив OpenMP. Поскольку эти директивы имеют достаточно сложный формат, такую ошибку по тем или иным причинам может допустить любой программист

Неправильное применение блокировок - если программист использует для синхронизации и/или защиты объекта от одновременной записи функции вида omp_set_lock, каждый поток должен содержать вызовы соответствующих функций omp_unset_lock, причем с теми же переменными. Попытка освобождения блокировки, захваченной другим потоком, или отсутствие вызова разблокирующей функции может привести к ошибкам во время выполнения программы и бесконечному ожиданию.

Незащищенный доступ к общей памяти - эта ошибка может встретиться в любой параллельной программе, написанной на любом языке. Также она называется состоянием гонок (race condition) и суть ее заключается в том, что значение общей переменной, изменяемой одновременно из нескольких потоков, в результате может оказаться непредсказуемым.

9.Дайте характеристику анализатора Intel vTune Performance analyzer.

Intel VTune Performance analyzer -анализатор производительности. Коммерческое приложение для анализа производительности программ для компьютеров на базе x86-процессоров, причем программа имеет как графический интерфейс пользователя, так и поддержку командной строки. Программа доступна и для Linux и для Microsoft Windows.

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

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

Семплирование на основе временных характеристик и событий

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

Просмотр исходного кода результаты семплирования отображаются построчно на исходный/оттранслированный код.

Мониторинг показаний обеспечивает информацию о производительности на системном уровне, как например, потребление ресурсов во время выполнения приложения

Intel Thread Profiler (Профилировщик потоков) временная шкала показывает, что именно делают потоки и как они взаимодействуют. Он также показывает распределение работы по потокам и выявляет дисбаланс нагрузки.

Performance Tuning Utility (PTU) (Утилита настройки производительности)

PTU — отдельно загружаемое приложение, предоставляющее пользователям анализатора VTune доступ к экспериментальной технологии настройки. Сюда входит, например, Анализ доступа к данным (Data Access Analysis), который способен обнаруживать критические участки памяти и соотносить их с критическими участками кода.

Intel Parallel Amplifier (усилитель параллельности) Parallel Amplifier — профилировщик производительности, являющийся компонентом Intel Parallel Studio. Если вы приобрели анализатор VTune, то вы также можете скачать и использовать Parallel Amplifier. Он добавляет статистическое дерево вызовов (анализ критических участков кода), причем при этом используется меньше накладных расходов, чем для построения VTune точного дерева вызовов, плюс анализ распараллеливаемости, блокировок и ожиданий.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]