Библиотека Data.Array.Accelerate создаёт встроенный язык для вычислений с массивами, позволяя разрабатывать высокопроизводительный код на Haskell. Разработчики выразили операции над многомерными массивами через параметризованные коллективные действия, такие как map, reduction и перестановка данных. Ядро библиотеки компилируется на лету и запускается на самых разных архитектурах, включая GPU. Код почти идентичен обычным Haskell-программам, если не смотреть на типы, которые указывают на возможность онлайн-компиляции для ускорения. Специально написанные функции, например через модуль Data.Array.Accelerate.LLVM.PTX.run, могут сразу отправлять задачи на графические процессоры.
Утилита для быстрой установки Haskell-сборки — это GHCup, а сами пакеты доступны на Hackage. В отдельной коллекции accelerate-examples собраны готовые приложения и вычислительные ядра. Здесь можно найти реализацию детектора канни для обработки изображений, генератор множества Мандалбро, симулятор гравитационного взаимодействия частиц N-body, алгоритм PageRank, простой трассировщик лучей, симуляцию стабильных потоков на основе частиц, клеточные автоматы и инструмент восстановления паролей через поиск хешей MD5. Также есть реализация мини-приложения Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics (LULESH), которое упрощает решение задачи Sedov blast на неструктурированной сетке. Пользователи реализовали множество собственных проектов: от симуляции электромагнитной гидродинамики (GPUVAC) до решателя судоку, криптографической библиотеки на основе решеток (lol-accelerate) и рендерера расстояния поля.
Команда проекта состоит из учёных, поэтому ссылки на их исследования важны. Авторы рекомендуют цитировать работы Мануэля Чакраварты, Габриэля Келлера, Сиана Ли и других. Публикации описывают методы ускорения кода на многоядерных GPU, оптимизацию чистых функциональных программ и безопасную генерацию кода на уровне LLVM. Список поддерживаемых библиотек и недостающих функций доступен в документации. Поддерживаемые дополнения можно скачать как отдельные пакеты на Hackage, где также размещена Haddock-документация. Если вы планируете использовать библиотеку в научных целях, ссылка на указанные научные статьи поможет расширить круг авторов и пользователей инструмента.