有没有办法编译 Haskell 以在 Xeon Phi 协处理器上运行?
英特尔的一些研究人员最近报告了Haskell 研究编译器 (该编译器未公开,这使得他们的结果基本上无法重现)并测量了Haskell 差距(表明在某些情况下 Haskell 性能超过 C)。他们通过称为Pillar的中间语言(类似于C--)描述编译路线并将其编译为 C,然后他们可以使用icc创建可在 Phi 上执行的目标代码。
GHC 支持编译到 LLVM 或直接生成本机代码 (NCG)。据我所知,既没有针对 Phi 的 NCG,也没有针对 Phi 的 LLVM 后端。可以访问icc,通过C的路由似乎是可能的,但是我不确定它目前有多现实(我认为 GHC 中的 C 代码生成器不再受支持,LLVM IR-to-C 后端也是如此,如我错了请纠正我)。
于是想到了三种路线:
在未注册模式下编译 GHC ,
-fvia-c
然后使用icc编译使用较旧的 GHC 版本生成 C 代码,然后使用icc
使用较旧的 LLVM 版本通过 GHC LLVM,然后从 LLVM 生成 C,然后使用icc
哪条路线最可行(为什么/为什么不)?是否还有其他可能性(我驳回了 Pillar 路线,因为诸如pillar2c之类的工具(还没有?)公开可用)。
一个相关的问题是关于 Phi 的 x86 兼容性——似乎不支持 SSE/AVX 指令,并且如果使用gcc或clang编译某些目标代码将无法运行。
更新:
在 LLVM 会议上与一些英特尔人员交谈后,他们似乎不太可能发布他们的 Phi LLVM 后端。但是,下一代至强融核将支持 AVX512。