有没有办法编译Haskell以在Xeon Phi协处理器上运行?
英特尔的一些研究人员最近报道了Haskell Research Compiler (这是不公开的,这使得他们的结果基本上不可复制)并测量Haskell Gap(表明在某些情况下Haskell性能超过C)。它们通过名为Pillar的中间语言(类似于C--)描述编译路径并将其编译为C,以便他们可以使用 icc 创建可执行的目标代码一个披着。
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然后生成C LLVM然后使用 icc
哪种途径最可行(为什么/为什么不)?是否存在其他可能性(由于 pillar2c 等工具尚未公开提供,因此我驳回了Pillar路线)。
一个相关的问题是关于Phi的x86兼容性 - 似乎不支持SSE / AVX指令,并且如果使用例如编译,则某些目标代码将无法运行。 gcc 或 clang 。
更新:
在LLVM会议上与一些英特尔人聊天后,他们似乎不太可能发布他们的Phi LLVM后端。但是,下一代Xeon Phi将支持AVX512。
答案 0 :(得分:1)
如果你通过C编译你的Haskell,结果是否被限制为不比C快,因为你可以直接编写C代码?您的问题指出,您尝试复制的项目是通过其他语言编译的。
所以我不确定可用的工具是否足够先进,无法做你想做的事,抱歉。