Основы параллельного программирования: РГЗ

Порядок выполнения РГЗ

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

Примеры вариантов РГЗ

  • Реализация асинхронного вызова функций (async и future в С++11) с помощью потоков. Реализовать функцию async, которая асинхронно вызывает переданную ей подзадачу в отдельном потоке. Функция возвращает объект-future, позволяющий получить результат подзадачи. Можно создавать произвольное число асинхронных подзадач и произвольное число потоков. Реализовать задачу умножения матрицы на вектор, сравнить эффективность с OpenMP реализацией.
  • Асинхронные операции, но максимальное число потоков фиксировано, нужно производить балансировку подзадач между потоками. Реализовать задачу умножения матрицы на вектор, сравнить эффективность с OpenMP реализацией.
  • Реализация аналогов функций MPI_Send и MPI_Recv с помощью операций с сокетами. Реализовать задачу умножения матрицы на вектор, используя новые функции, сравнить с MPI-реализацией. 
  • Реализация аналогов функций MPI_Isend, MPI_Irecv и MPI_Wait с помощью операций с сокетами. Реализовать задачу умножения матрицы на вектор, используя новые функции, сравнить эффективность с MPI-реализацией.
  • Реализация аналогов функций MPI_Send, MPI_Recv и MPI_Reduce с помощью операций с сокетами. Реализовать задачу решения СЛАУ методом простых итераций, используя новые функции, сравнить эффективность с MPI-реализацией.
  • Реализация аналога функции MPI_Allgatherv с помощью операций с сокетами. Реализовать задачу умножения матрицы на вектор, используя новые функции, сравнить эффективность с MPI-реализацией на разных размерах матриц.
  • Умножение матрицы на матрицу на GPU с использованием технологии CUDA.
  • Решение 2D уравнения Пуассона (л/р №3) на GPU с использованием технологии CUDA.
  • CUDA Ray tracing
  • CUDA Реализация алгоритма параллельной сортировки Бэтчера
  • Реализация алгоритма параллельной сортировки Бэтчера в MPI.
  • Исследование скорости чтения/записи различных объемов данных средствами С/С++ и средствами MPI I/O
  • Реализация ЛР №4 (балансировка вычислительной нагрузки) с использованием функций для односторонних коммуникаций MPI_Put(), MPI_Get() для организации межпроцессных взаимодействий.
  • Реализация ЛР №3 (решение уравнения Пуассона) с использованием функций для односторонних коммуникаций MPI_Put(), MPI_Get() для организации межпроцессных взаимодействий.
  • MPI-программа для моделирования движения N гравитирующих тел 
  • Параллельная реализация в MPI одного из алгоритмов обработки графов по выбору (поиск компонент связанности, задача коммивояжера, разбиение на подграфы с заданными свойствами, обход графа в глубину, ширину и т.д.)
  • Решение задачи обработки данных (по заданию преподавателя) в технологии Map-Reduce.
  •