有没有一种方法可以将Haskell编译成可在Xeon Phi协处理器上运行的代码?
英特尔的一些研究人员最近报告了Haskell Research Compiler(该编译器并不公开,这使得他们的结果基本上无法再现),并测量了Haskell Gap(显示在某些情况下,Haskell的性能超过了C语言)。他们描述了一条编译路径,通过一个名为Pillar(类似于C--)的中间语言进行编译,然后将其编译为C语言,以便使用icc创建可在Phi上执行的目标代码。
GHC支持编译到LLVM或直接生成本地代码(NCG)。据我所知,没有针对Phi的NCG可用,也没有针对Phi的LLVM后端。通过C通过icc的路线似乎是可能的,但目前我不确定它有多现实(我认为GHC中的C代码生成器不再受支持,对于LLVM IR-to-C后端也是如此,请纠正我如果我错了)。因此,有三条路线可以考虑:1、在未注册模式下编译GHC,并使用-fvia-c
然后使用icc;2、使用旧版本的GHC生成C代码,然后使用icc;3、使用旧版本的LLVM通过GHC LLVM,然后从LLVM生成C,然后使用icc。哪种路线最可行(为什么/为什么不)?还有其他可能性吗(我放弃了Pillar路线,因为诸如pillar2c之类的工具尚未(尚未?)公开)?
一个相关的问题是关于Phi的x86兼容性 - 看起来不支持SSE / AVX指令,如果使用例如gcc或clang编译,则会导致某些目标代码无法运行。
更新:
在与LLVM会议上的一些Intel人员交谈后,他们似乎不太可能发布他们的Phi LLVM后端。但是,下一代Xeon Phi将支持AVX512。