Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 简单数学的并行性_R_Multithreading_Math_Openmp_Shared Memory - Fatal编程技术网

R 简单数学的并行性

R 简单数学的并行性,r,multithreading,math,openmp,shared-memory,R,Multithreading,Math,Openmp,Shared Memory,我必须在R中对大型数值矩阵(例如100000 x 20000)执行大量元素算术和特殊函数数学运算,包括: exp,log,lbeta,digamma,plogis(物流功能:1/[1+exp(-a*x)])和/,*,+,- 深入研究,基本上没有#pragma omp编译器指令来利用共享内存多线程并行性。像[Rfast][2]这样的R中用于快速数学运算的专用软件包也没有用于多线程特殊函数的#pragma omp指令 类似地,据我所知,像BLAS和LAPACK这样的矩阵代数库用于矩阵运算(例如分解)

我必须在
R
中对大型数值矩阵(例如100000 x 20000)执行大量元素算术和特殊函数数学运算,包括:

exp
log
lbeta
digamma
plogis
(物流功能:1/[1+exp(-a*x)])和
/,*,+,-

深入研究,基本上没有
#pragma omp
编译器指令来利用共享内存多线程并行性。像
[Rfast][2]
这样的
R
中用于快速数学运算的专用软件包也没有用于多线程特殊函数的
#pragma omp
指令

类似地,据我所知,像BLAS和LAPACK这样的矩阵代数库用于矩阵运算(例如分解),而不是元素运算

我希望在AWS上运行
R
脚本,以加快运行速度,例如使用72或96个核心服务器

我真的需要自己复制R math library C源代码来添加一些
#pragma omp
指令来利用R中的OpenMP并行性吗


我不敢相信像这样简单的并行性在
R
base
或简单的数学库包中还不存在。

提到“一些工具链……根本不支持OpenMP,甚至不支持
omp.h
”。这只是症状,不是你问题的答案。关于使用OpenMP做自己的事情(例如C/C++和Rcpp),有大量的文档,尽管也可能不是您想要的。这是一个长期存在的问题(R和线程),没有一个明确的解决方案。(我没有足够的时间发布公关,我也希望其他人会:-)谢谢你,@r2evans。我自己做这件事没什么大不了的——我可以复制
R
源代码并加入一些指令。但是缺少这么简单的东西让我想知道这里面是否有不那么明显的东西…是的。。。我的猜测是,它并没有在所有受支持的平台上进行干净的编译。有人可能会建议(我已经想到)平台的可变支持可能是可以的(例如,“由于缺乏完美的OpenMP支持,您将在X、Y和Z上获得更好的性能,但不是W…但结果都是相同的”)。我不认为你是第一个询问/思考这个问题的人,但我相信我们“只需要有人来做”(然后说服R Core,建议的解决方案应该是标准的)。仅供参考,该公司表示:“在Unix上安装类似的系统会更努力地在需要时链接到pthread库(而不是依赖OpenMP来提供它:在某些Linux系统上配置--disable OpenMP是失败的)”。另一个考虑因素是检查Linux软件包维护人员是否允许这种新东西(如果您不自己编译它,这只是一个因素,诚然是一项艰巨的任务)。(我没有检查,只是想一想。)(空格通常不在符号和引用中使用,因此您的评论是在寻找一个名为“Dirk”的用户。)它并不总是很好地工作:有些人忽略按姓名跳入对话的请求,有些人只是不够及时地频繁使用它,它落在了路边(这些问题所涉及的那些众所周知的服务维护者和承包商)明确要求不要这样做,我不知道德克对此有何感想。