R的并行计算太扯了

d
didadida
楼主 (未名空间)

我怀疑那些写教程比较并行计算速度优势的都是用原生R的

我在Microsoft R Open上计算,本身是用MKL优化了,并行的提高效果基本没有

不用并行,CPU占用率50%
用了并行,占用率长时间100%,风扇猛转,最后总运行时间差不多

l
lightroom

haha, 把cpu用满不容易吧

【在 didadida(滴滴嗒嗒)的大作中提到:】
:我怀疑那些写教程比较并行计算速度优势的都是用原生R的


p
pptwo

开了超线程做计算,CPU 50%正好,到100%不慢就不错了。

【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我怀疑那些写教程比较并行计算速度优势的都是用原生R的
: 我在Microsoft R Open上计算,本身是用MKL优化了,并行的提高效果基本没有
: 不用并行,CPU占用率50%
: 用了并行,占用率长时间100%,最后总运行时间差不多

m
magliner

用原生R怎么了 , 有什么不对么 ?
R并行是快, 虽然不是线性增长那么快, 但感觉还是挺明显的。
不知道微软R是怎么回事, 要不要花钱 ?
d
didadida

原生R非常慢

Rocker的R是加了openBLAS重新编译了

【 在 magliner (magliner) 的大作中提到: 】
: 用原生R怎么了 , 有什么不对么 ?
: R并行是快, 虽然不是线性增长那么快, 但感觉还是挺明显的。
: 不知道微软R是怎么回事, 要不要花钱 ?

s
stxxx

R的并行运算效果还是很明显的。先检查下自己搞对了没有,别总感觉就自己高,那帮
写package的都在吃x,那样很silly。

【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我怀疑那些写教程比较并行计算速度优势的都是用原生R的
: 我在Microsoft R Open上计算,本身是用MKL优化了,并行的提高效果基本没有
: 不用并行,CPU占用率50%
: 用了并行,占用率长时间100%,风扇猛转,最后总运行时间差不多

l
lshtar

很可能是cache missing太多
a
attain79

我以前用过dosnow加foreach 很简单的并行 效果很好

【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我怀疑那些写教程比较并行计算速度优势的都是用原生R的
:
: 我在Microsoft R Open上计算,本身是用MKL优化了,并行的提高效果基本没有
:
: 不用并行,CPU占用率50%
: 用了并行,占用率长时间100%,风扇猛转,最后总运行时间差不多
d
didadida


【 在 magliner (magliner) 的大作中提到: 】
: 用原生R怎么了 , 有什么不对么 ?
: R并行是快, 虽然不是线性增长那么快, 但感觉还是挺明显的。
: 不知道微软R是怎么回事, 要不要花钱 ?

https://mran.microsoft.com/open

免费很长时间了

唯一缺点就是到了 3.5.3 就没再更新

d
didadida

我昨天发了贴后,查了一下微软的资料,说他家的R自动对R程序做了并行优化,所以不要刻意使用并行,否则要么没什么提高,要么还不如不做

【 在 stxxx (Chen) 的大作中提到: 】
: R的并行运算效果还是很明显的。先检查下自己搞对了没有,别总感觉就自己高,那帮
: 写package的都在吃x,那样很silly。

l
longtian

同意,我的经验也是一样的

R并行的时候是直接把计算分配到每个thread,所以机器的thread是个限制。而且R会
copy所有的数据程序到每个thread,所以可能出现内存不足的问题

【 在 magliner (magliner) 的大作中提到: 】
: 用原生R怎么了 , 有什么不对么 ?
: R并行是快, 虽然不是线性增长那么快, 但感觉还是挺明显的。
: 不知道微软R是怎么回事, 要不要花钱 ?

i
iloveYolanda

糊涂了,R不是单线程的吗,怎么并行计算?
s
stxxx

自动并行也是很可怕的,用户写的code有问题的话,很容易宕机。

软软的Open R估计是跟不上RStudio的节奏,要放弃了,现在还有多少在用它?

【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我昨天发了贴后,查了一下微软的资料,说他家的R自动对R程序做了并行优化,所以不
: 要刻意使用并行,否则要么没什么提高,要么还不如不做

m
magliner

楼主用的是微软R, mran,https://mran.microsoft.com/rro
写到:
Plus these key enhancements:

Multi-threaded math libraries that brings multi-threaded computations to R.
A high-performance default CRAN repository that provide a consistent and
static set of packages to all Microsoft R Open users.

我估计微软已经把底层计算重新写了一遍, 能优化的优化,能并行的并行 . foreach
对baseR灵, 对微软R不灵, 不奇怪。
w
wx2123

R还在提高,有个过程。
d
didadida


【 在 stxxx (Chen) 的大作中提到: 】
: 自动并行也是很可怕的,用户写的code有问题的话,很容易宕机。
: 软软的Open R估计是跟不上RStudio的节奏,要放弃了,现在还有多少在用它?

软软估计是对R丧失了信心

软软的R Tools for Visual Studio 比Rstudio强了不少,已经停了
l
lix0519

R open就一个用icc和mkl build R, 也就用blas和lapack的时候会用多线程,其他的
时候并没有区别。楼上几个是不是对blas和opemmp一无所知?
m
magliner

确实对你说的这些一无所知 。 不过我想微软花这么大功夫折腾R, 想必做了很大改动/改进吧 ? 底下的各种计算应该优化一遍吧 ?
我上面贴了链接,证明微软对R(我理解是base R的各种函数,库什么的)做了大改动。
只是一点猜想, 你懂得多,欢迎多分享。
【 在 lix0519 (tgh1122334) 的大作中提到: 】
: R open就一个用icc和mkl build R, 也就用blas和lapack的时候会用多线程,其他的
: 时候并没有区别。楼上几个是不是对blas和opemmp一无所知?

d
didadida

我在linux下按照网上的文章下载mkl重新编译了R的源代码
跑benchmark 25分数不错
但是运行我自己写的R比在Microsoft R Open上多花20%以上的时间

微软显然不是仅仅编译

【 在 lix0519 (tgh1122334) 的大作中提到: 】
: R open就一个用icc和mkl build R, 也就用blas和lapack的时候会用多线程,其他的
: 时候并没有区别。楼上几个是不是对blas和opemmp一无所知?

m
magliner

所以你的结论是 ??
【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我在linux下按照网上的文章下载mkl重新编译了R的源代码
: 跑benchmark 25分数不错
: 但是运行我自己写的R比在Microsoft R Open上多花20%以上的时间
: 微软显然不是仅仅编译

d
dracodoc

微软只是买了个公司挂上自己logo而已(搜索Revolution Analytics),没有真的下大功夫。要是真的把底层全改了,全能并行,会有人不用吗?现实中有多少人用?

还有vs code,有多少人用来写R?RStudio是整个一套东西,RMD,shiny,R近年的进步一大半来自RStudio或RStudio资助的东西。

真正有作用的就是intel优化的MKL库而已,这玩意自己装起来不好装。你用base R也一样能并行就并行,最多效率比MKL低一点。

用户级别用R的并行,主要是Embarrassingly parallel,分几个R session去处理不同
数据,几乎没有进程间通讯。

windows上必须用socket,overhead高而且需要额外copy环境。linux/mac上可以用fork,效率高不需要手工copy。

如果想什么都不做,不改代码提高效率,希望最大的是GraalVM,现在还不成熟,如果
成熟了,可以直接把R的效率提高一个档次,这才是从底层去做的优化,用高性能JVM。

【 在 didadida (滴滴嗒嗒) 的大作中提到: 】
: 我在linux下按照网上的文章下载mkl重新编译了R的源代码
: 跑benchmark 25分数不错
: 但是运行我自己写的R比在Microsoft R Open上多花20%以上的时间
: 微软显然不是仅仅编译

d
didadida

base R很差,这点毋庸置疑
我比较过

按照速度,运行我自己写的R,基本上是

Microsoft R Open for Windows (本机运行)>> 我自己用MKL编译的R运行在Docker = Rocker的OPenBLAS的docker >>> BASE R for Windows (本机运行)

运行benchmark25.R
我自己用MKL编译的R运行在Docker上居然速度超过了Microsoft R Open运行在本机
唯一区别是一个是R 4.0.1, Microsoft R Open是3.5.3

【 在 dracodoc (david) 的大作中提到: 】
: 微软只是买了个公司挂上自己logo而已(搜索Revolution Analytics),没有真的下大
: 功夫。要是真的把底层全改了,全能并行,会有人不用吗?现实中有多少人用?
: 还有vs code,有多少人用来写R?RStudio是整个一套东西,RMD,shiny,R近年的进步
: 一大半来自RStudio或RStudio资助的东西。
: 真正有作用的就是intel优化的MKL库而已,这玩意自己装起来不好装。你用base R也一
: 样能并行就并行,最多效率比MKL低一点。
: 用户级别用R的并行,主要是Embarrassingly parallel,分几个R session去处理不同
: 数据,几乎没有进程间通讯。
: windows上必须用socket,overhead高而且需要额外copy环境。linux/mac上可以用
fork
: ,效率高不需要手工copy。
: ...................

d
didadida


【 在 magliner (magliner) 的大作中提到: 】
: 所以你的结论是 ??

不要再折腾自己编译R了
老老实实用Microsoft R Open 3.5.3