Лабораторная работа № 1: определение достижимости параллелизма и реализация параллельных алгоритмов.
Шаги выполнения:
- Выберите один из алгоритмов обхода графа (BFS или BFS).
- Разберитесь с выбранным алгоритмом и выделите основные этапы его выполнения. Идентифицируйте зависимости между этапами и выберите те, которые можно эффективно распараллелить (для этого постройте граф зависимостей (можно в голове))
- Напишите программу на выбранном вами языке программирования (java, c++), реализующую выбранный алгоритм с учётом параллельных возможностей.
- С помощью инструментов (ThreadSanitizer && Helgrind для С++, JCStress тесты для Java) проанализировать программу на предмет отсутствия ошибок синхронизации данных. Если ошибок не нашлось, то внести их и найти.
- Эксперименты и анализ результатов:
Проведите эксперименты, измеряя производительность параллельной реализации алгоритма на различных объемах входных данных. Сравните результаты с последовательной версией и опишите полученные выводы.
- Постройте график зависимости времени выполнения параллельной версий алгоритма от выделенных ресурсов. Смотрите раздел с экспериментом 7
- Постройте график зависимости времени выполнения параллельной и последовательной версий алгоритма в зависимости от объема входных данных. Смотрите раздел с экспериментом 8
Загрузить графики в отдельную директорию в репозитории
Для построения графиков можно воспользоваться чем угодно