Библиотека параллельных алгоритмов ParaLib содержит краткие описания последовательных и параллельных алгоритмов решения ряда типовых задач вычислительной математики, а также примеры их реализаций с использованием различных технологий параллельного программирования. Для демонстрации работоспособности алгоритмов разработано визуальное приложение, используя которое можно выполнить эксперименты для оценки производительности имеющихся реализаций.
В текущей версии библиотеки рассмотрены следующие задачи:
Для всех задач представлены реализации последовательных алгоритмов и по крайней мере одна реализация параллельного алгоритма. При подготовке параллельных реализаций использовались различные языки и технологии параллельного программирования:
Наличие конкретных реализаций в текущей версии ParaLib описывается в Таблице 1, но библиотека позволяет легко добавлять дополнительные задачи и пользовательские реализации.
Таблица 1. Реализации методов и алгоритмов, содержащиеся в ParaLib.
Задача | Метод | Технология | |||
Chapel | OpenMP | CoArray Fortran | MPI | ||
Умножение матриц | последовательный | + | + | + | — |
параллельный | + | + | + | + | |
Умножение матрицы на вектор | базовый параллельный алгоритм | — | + | — | + |
последовательный | — | + | — | — | |
Сортировка массива данных | последовательный | — | + | — | — |
базовый параллельный алгоритм | — | + | — | + | |
Решение системы линейных уравнений | базовый параллельный алгоритм | — | + | — | + |
последовательный | — | + | — | — | |
Поиск всех кратчайших путей в графе | последовательный алгоритм Флойда | — | + | — | — |
базовый параллельный алгоритм Флойда | — | + | — | + | |
Решение задачи Дирихле для СДУ | базовый параллельный алгоритм Гаусса-Зейделя | — | + | — | + |
последовательный алгоритм Гаусса-Зейделя | — | + | — | — |
Визуальное приложение, входящее в состав библиотеки позволяет выполнять эксперименты для сравнительной оценки производительности имеющихся реализаций. С его помощью можно:
Общий вид приложения:
Выполнение экспериментов может осуществляться на локальном компьютере или на вычислительной системе с распределенной памятью.
Все реализации выполнены для операционной системы Windows 7/Windows 8.
Библиотека ParaLib носит учебно-исследовательский характер и может быть использована в ходе обучения специалистов различным аспектам параллельного программирования. Имеющиеся реализации могут использоваться в качестве образцов при разработке параллельных программ с использованием различных языков и технологий параллельного программирования.