Подтвердить что ты не робот

У Ускорение и Репа есть различные варианты использования?

Я играл с Repa и Accelerate - они оба интересны, но я не могу разобраться, когда буду использовать один, а другой. Они растут вместе, соперники или просто для разных проблем?

4b9b3361

Ответ 1

Repa - это библиотека для эффективного построения и обхода массивов, запрограммированная в Haskell и выполняемая во время выполнения Haskell. Repa использует оптимизатор GHC и потоки для производительности. Вы можете смешать произвольный код Haskell с Repa (функции Repa, такие как map принимать функции Haskell в качестве параметров).

Ускорение - это встроенный язык для программирования графического процессора. Ускорение полагается на свой собственный компилятор и графический процессор parallelism для производительности. Часть кода, использующая библиотеку Accelerate, фактически не выполняет вычисления массива. Он генерирует программу Accelerate, которая обрабатывается собственным компилятором Accelerate для генерации кода, который фактически обрабатывает данные вашего массива.

Если вы хотите запрограммировать GPU в Haskell, основным преимуществом является Accelerate. Если вы хотите, чтобы ваш код работал на процессорах, Repa - это путь. Ускорение не генерирует многоядерный код. Он был спроектирован таким образом, чтобы поддерживать другую цель, но, насколько я могу судить, мотивация поддержки процессоров с ускорителем является низкой, потому что там больше конкурентов.

Изменить: Обсидиан и Никола - альтернативы для программирования GPU. Из краткого исследования документации Obsidian кажется более узким по охвату; он может выражать трубопроводы в виде (f >=> g >=> h). Набор функций Nikola, похоже, ближе к Accelerate. У меня нет опыта, чтобы действительно сравнить их.