19

有没有办法编译 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 后端也是如此,如我错了请纠正我)。

于是想到了三种路线:

  1. 在未注册模式下编译 GHC ,-fvia-c 然后使用icc编译

  2. 使用较旧的 GHC 版本生成 C 代码,然后使用icc

  3. 使用较旧的 LLVM 版本通过 GHC LLVM,然后从 LLVM 生成 C,然后使用icc

哪条路线最可行(为什么/为什么不)?是否还有其他可能性(我驳回了 Pillar 路线,因为诸如pillar2c之类的工具(还没有?)公开可用)。

一个相关的问题是关于 Phi 的 x86 兼容性——似乎不支持 SSE/AVX 指令,并且如果使用gccclang编译某些目标代码将无法运行。

更新

在 LLVM 会议上与一些英特尔人员交谈后,他们似乎不太可能发布他们的 Phi LLVM 后端。但是,下一代至强融核将支持 AVX512。

4

1 回答 1

1

如果你通过 C 编译你的 Haskell,结果是不是被限制为不比 C 快,因为你可以直接编写 C 代码?您的问题指出您尝试复制的项目是通过不同的语言编译的。

所以我不确定可用的工具是否足够先进,可以做你想做的事,抱歉。

于 2014-03-10T14:32:34.763 回答