Say*_*Pal 1 parallel-processing r azure-machine-learning-studio microsoft-r
我刚刚开始熟悉R中的并行性。
当我计划将Microsoft Azure Machine Learning Studio用于我的项目时,我已经开始研究Microsoft R Open为并行性提供的功能,因此,我发现了这一点,它表示并行性是在利用以下优势的情况下完成的:所有可用的内核,而无需更改R代码。本文还显示了一些性能基准,但是,大多数基准表明了进行数学运算时的性能优势。
到目前为止,这很好。另外,我也很想知道它是否也*apply使后台功能并行化。我还找到了这两篇文章,它们描述了*apply一般如何并行化功能:
snow包,par*apply函数族和促进并行性clusterExport。parallel包,par*apply函数族以及将值绑定到环境。所以我的问题是,当我将使用*apply在微软Azure机器学习工作室功能,将在默认情况下引擎盖下被并行化,或者我需要利用类似的包parallel,snow等等?
就个人而言,我认为如果不对并行性/多线程做太多事情,我们的MRO营销可能会有所不同。呃,好吧。
R带有Rblas.dll / .so,它实现了用于线性代数计算的例程。这些例程在不同的地方使用,但是一个常见的用例是拟合回归模型。使用MRO,我们用使用Intel Math Kernel Library的标准Rblas代替了标准Rblas 。当您调用诸如lm或的函数时glm,MRO将使用多个线程和经过优化的CPU指令来拟合模型,这可以使您比标准实现大幅度提高速度。
MRO不是获得这种加速的唯一方法。您还可以编译/下载经过类似优化的其他BLAS实现。我们只是使它易于下载。
请注意,MKL仅影响涉及线性代数的代码。它不是通用的加速工具。任何不执行矩阵计算的R代码都不会改善性能。特别是,它不会加快涉及显式并行性的任何代码的速度,例如使用并行包,SNOW或其他集群计算工具的代码。
另一方面,它也不会降低它们的性能。您仍然可以使用诸如parallel,SNOW等之类的包来创建计算集群并将代码分布在多个进程中。在这方面,MRO的工作方式与常规CRAN R相同。(但是,如果要在一台计算机上创建节点集群,可能要做的一件事就是减少MKL线程数。否则,冒着CPU核心节点之间争用的风险,这会降低性能。)
披露:我为Microsoft工作。