在R中如何控制BLAS并行矩阵积中的多线程
我有一个关于在R中使用BLAS并行化矩阵积的问题(至少从R-3.4开始,可能更早,是默认的矩阵积) 默认行为(至少在我的机器上)现在是矩阵产品(下面的c.f.示例)使用机器上可用的所有内核,这可能是一个问题 您知道如何控制R中用于标准矩阵积的芯数吗 提前谢谢 例如:在R中如何控制BLAS并行矩阵积中的多线程,r,multithreading,matrix,blas,R,Multithreading,Matrix,Blas,我有一个关于在R中使用BLAS并行化矩阵积的问题(至少从R-3.4开始,可能更早,是默认的矩阵积) 默认行为(至少在我的机器上)现在是矩阵产品(下面的c.f.示例)使用机器上可用的所有内核,这可能是一个问题 您知道如何控制R中用于标准矩阵积的芯数吗 提前谢谢 例如: n=10000 p=1000 q=5000 A = matrix(runif(n*p),nrow=n, ncol=p) B = matrix(runif(p*q),nrow=p, ncol=q) C = A %*% B # mult
n=10000
p=1000
q=5000
A = matrix(runif(n*p),nrow=n, ncol=p)
B = matrix(runif(p*q),nrow=p, ncol=q)
C = A %*% B # multi-threaded matrix product
会话信息:
> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.3 LTS
Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so
locale:
[1] LC_CTYPE=fr_FR.utf8 LC_NUMERIC=C
[3] LC_TIME=fr_FR.utf8 LC_COLLATE=fr_FR.utf8
[5] LC_MONETARY=fr_FR.utf8 LC_MESSAGES=fr_FR.utf8
[7] LC_PAPER=fr_FR.utf8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=fr_FR.utf8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.1
软件包就是这样做的
根据其描述:
控制“BLAS”(也称为“GotoBLAS”、“ACML”和“MKL”)上的线程数。并且可以控制“OpenMP”中的线程数。如果可行,获取多个逻辑核和物理核
我们在中提到了它。软件包就是这样做的
根据其描述:
控制“BLAS”(也称为“GotoBLAS”、“ACML”和“MKL”)上的线程数。并且可以控制“OpenMP”中的线程数。如果可行,获取多个逻辑核和物理核
我们在报告中提到了这一点。非常感谢。这正是我需要的。在问我的问题之前,我确实搜索过类似的东西,但没有找到。我想我会就此事联系R核心团队。文件(matmult)在这一点上不清楚。使用matrix product中所有可用内核的默认行为可能是共享计算资源上的一个巨大问题。谢天谢地,阿加尼正在上班途中,没有机会发表评论。我很期待托马斯在r-devel上给你的答案。这在(基于英特尔的)MKL、OpenBLAS。。。通过已知的环境变量,可用的BLAS选择记录在R中,简而言之,这里没有问题。您(或您的系统管理员)选择安装OpenBLAS;R与此无关。我们(在Debian/Ubuntu中)为您提供了几种BLAS实现的选择。所有这些在这里、在R列表上以及在其他地方都被废弃了一百万次。这里没什么新鲜事。谢谢,我理解。我关心的主要是我的一个软件包的用户,它结合了“并行”软件包多线程和矩阵产品。不过,我现在明白了,他们有责任了解BLAS实现的工作原理。非常感谢。这正是我需要的。在问我的问题之前,我确实搜索过类似的东西,但没有找到。我想我会就此事联系R核心团队。文件(matmult)在这一点上不清楚。使用matrix product中所有可用内核的默认行为可能是共享计算资源上的一个巨大问题。谢天谢地,阿加尼正在上班途中,没有机会发表评论。我很期待托马斯在r-devel上给你的答案。这在(基于英特尔的)MKL、OpenBLAS。。。通过已知的环境变量,可用的BLAS选择记录在R中,简而言之,这里没有问题。您(或您的系统管理员)选择安装OpenBLAS;R与此无关。我们(在Debian/Ubuntu中)为您提供了几种BLAS实现的选择。所有这些在这里、在R列表上以及在其他地方都被废弃了一百万次。这里没什么新鲜事。谢谢,我理解。我关心的主要是我的一个软件包的用户,它结合了“并行”软件包多线程和矩阵产品。然而,我现在明白了,了解BLAS实现的工作原理是他们的责任。