Параллельные вычисления и многопоточное программирование

Курсовые проекты и лабораторные работы к курсу

Показывать лекцию целиком

Курсовые проекты

Общая часть

Курсовой проект предполагает создание проекта на С#, отвечающего требованиям стиля:

  • создание DLL;
  • визуальный интерфейс, выделенный в отдельный поток, позволяющий наблюдать и управлять процессом бизнес-логики;
  • визуализация результатов работы;
  • другие правила хорошего стиля.
  • Содержательно проект предполагает создание как последовательной, так и параллельной версии решаемой задачи. Теоретическое и практическое сравнение эффективности работы разных версий в зависимости от числа используемых процессоров (ядер). В результате проведенного анализа должны быть сделаны обоснованные выводы о целесообразности распараллеливания данной задачи и какой эффект может дать распараллеливание.

    Варианты проектов:

  • Игра "Жизнь";
  • Множество Мандельброта и его аналоги;
  • Обедающие философы;
  • Алгоритмы Data Mining
  • кластеризации K-Means (k- средних);
  • кластеризации, основанный на мере близости;
  • Apriori;
  • C4.5;
  • Cart.
  • Лабораторные работы

    Общая часть

    Лабораторная работа включает:

  • создание C# проекта с классами;
  • проведение численных экспериментов;
  • отчет, включающий анализ результатов экспериментов, оценку эффективности, ускорения, накладных расходов на организацию параллелизма;
  • выводы о целесообразности (нецелесообразности) распараллеливания.
  • Последовательный и параллельные алгоритмы (пирамидальный, шаговый, сегментный) решения задач линейной сложности:
  • Суммы и Произведения;
  • Максимумы и минимумы;
  • Последовательный и параллельный алгоритм поиска по образцу
  • Линейный поиск;
  • Бинарный поиск.
  • Последовательный и параллельные алгоритмы сортировки линейной сложности для случая фиксированного числа сортируемых элементов:
  • Задача "Красное и черное" (n = 2);
  • Задача Дейкстры о цветах Голландского (Российского) флага (n = 3);
  • Задача о сортирующей шляпе Хогвартса (n = 4).
  • Последовательный и параллельные алгоритмы сортировки сложности O(n2)
  • Пузырьковая сортировка;
  • Сортировка "чет –нечет"
  • Последовательный и параллельные алгоритмы сортировки сложности O(n * log(n))
  • Быстрая сортировка Хоара;
  • Сортировка Шелла;
  • Сортировка слиянием.
  • Последовательный и параллельные алгоритмы суммирования сходящихся рядов
  • Ex;
  • Sin(x); Tg(x);
  • ArcSin(x); ArcTg(x)
  • Log(x).
  • Последовательный и параллельные алгоритмы вычисления определенного интеграла
  • Для гладких подынтегральных функций;
  • Для осциллирующих функций.
  • Последовательный и параллельные алгоритмы линейной алгебры
  • Умножение матриц;
  • Решение систем уравнений и обращение матриц;
  • Операции над слабо заполненными матрицами.
  • Многопоточные приложения. Работа с классом Thread
  • На примерах реализации параллельных алгоритмов.
  • Гонка данных и блокировка
  • Задачи типа "банковский счет".
  • Клинч
  • Задачи типа "Кольцо и серьги"
  • Пул потоков
  • На примерах реализации параллельных алгоритмов.
  • Мягкие методы блокировки
  • Задачи типа "Параллельная разработка программного проекта"
  • Мониторы и семафоры
  • Задачи типа "Взаимодействующие процессы";
  • Обедающие философы.
  • Библиотека параллельных задач. Работа с классами Task и Parallel
  • На примерах реализации параллельных алгоритмов;
  • Задача "Золушки".
  • Прерывания и исключения в параллельных циклах
  • Задачи типа "Числа – градины";
  • Задачи типа "Превышение температурного режима"
  • Управляющий и управляемый процессы
  • Управление, основанное на ссылках;
  • Управление, основанное на событиях.
  • Вернуться к учебному плану