我一直在玩修复和加速 - 他们都很有趣,但是当我使用一个而另一个时,我无法解决问题.他们在一起成长,竞争对手,还是仅仅针对不同的问题?
Hea*_*ink 14
Repa是一个用于高效数组构造和遍历的库,在Haskell中编程并在Haskell运行时运行.Repa依靠GHC的优化器和线程来提高性能.您可以将任意Haskell代码与Repa(map将Haskell函数作为参数的Repa函数)混合使用.
Accelerate是GPU编程的嵌入式语言.Accelerate依靠自己的编译器和GPU并行性来提高性能.使用Accelerate库的一段代码实际上并不进行数组计算.它生成一个Accelerate程序,由Accelerate自己的编译器处理,以生成实际处理阵列数据的代码.
如果要在Haskell中编程GPU,则Accelerate是主要选项.如果您希望代码在CPU上运行,则可以使用Repa.Accelerate不会生成多核代码.它的构建方式可以支持另一个目标,但据我所知,使用Accelerator支持CPU的动机很低,因为竞争更激烈.
编辑: Obsidian和Nikola是GPU编程的替代品.从对文件的简要调查来看,黑曜石的范围似乎较窄; 它可以表达形式的管道(f >=> g >=> h).Nikola的功能集似乎更接近Accelerate.我没有真正比较它们的经验.