使用Xeon Phi进行R并行处理,最少的代码更改?

时间:2016-02-25 18:12:18

标签: r foreach parallel-processing xeon-phi

考虑购买一对Xeon Phi 5110P,但试图估算我需要更改的代码数量或其他需要的软件。

目前,我使用R软件包在多核Windows机器(24个核心)上充分利用foreach,并将其他软件包forecastglmnet传递给它等我做我的并行处理。

拥有Xeon Phi,我理解我想编译R https://software.intel.com/en-us/articles/running-r-with-support-for-intel-xeon-phi-coprocessors我理解这可以通过Parallel Studio XE的跟踪版本来完成。

那么我是否需要编辑R的Makeconf文件,添加C / C ++标志和Phi?在Parallel Studio上的跟踪到期之前编译所有需要的包?或者我是否不需要编辑Makeconf以在Phi上获得foreach的好处?

似乎其中一些将在编译R后自动处理,并由Math Kernel Library(MKL)完成卸载,但我不完全确定这一点。

有些相关问题:Is the Intel Xeon Phi usable without a costly Intel Compiler?

另外,revolutionanalytics.com似乎也有一些相关的博文,但对我来说并不完全是结论性的:http://blog.revolutionanalytics.com/2015/05/behold-the-power-of-parallel.html

1 个答案:

答案 0 :(得分:1)

如果您只需要矩阵运算,您可以使用MKL库进行编译:[运行R支持英特尔®至强融核™协处理器] [1],这需要英特尔编译器。 Microsoft R预先编译了MKL,但我无法使用自动卸载,我必须使用英特尔编译器编译R才能正常工作。

您可以使用试用版编译器并在试用期间对其进行编译,看它是否符合您的目的。

如果你想通过设置群集来使用像 foreach 这样的包,那么由于每个节点都是linux计算机,我担心你运气不好。在[R-Admin] [1]的第3页上,它说

  

交叉构建是不可能的:安装R构建R的最小版本然后运行许多   R脚本完成构建。

你必须使用intel编译器从xeon主机交叉编译xeon phi节点,这是不可行的。

利用Phi的最后一种方法是重写代码以直接调用它。 Rcpp为C和C ++例程提供了一个简单的接口。如果您发现在Xeon上运行良好的C例程,则可以调用代码中的节点。我用CUDA完成了这个,Rcpp是一个很薄的层,并且有很好的例子如何使用它,如果你加入调用phi卡节点的例子,你可以用更少的开销实现你的目标。

BUt,如果您只需要矩阵操作,那么在R启动期间没有比一个好的双精度nvidea卡和预加载nvBlas更快的超级计算路径。