当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R blas.thread.test BLAS 线程安全


R语言 blas.thread.test 位于 mgcv 包(package)。

说明

大多数 BLAS 实现都是线程安全的,但某些版本的 OpenBLAS 则不是。该例程是一个诊断辅助函数,如果您不设置 nthreads>1 ,您将永远不需要它,即使这样也不太可能需要。

用法

blas.thread.test(n=1000,nt=4)

参数

n

并行 BLAS 调用代码运行的迭代次数。

nt

要使用的并行线程数

细节

虽然单线程 OpenBLAS 0.2.20 是线程安全的,但版本 0.3.0-0.3.6 不是线程安全的,并且从版本 0.3.7 开始,单线程 OpenBLAS 的线程安全需要使用选项 USE_LOCKING=1 来实现。参考 BLAS 是线程安全的,MKL 和 ATLAS 也是如此。此例程从多线程代码中重复调用 BLAS,足以检测单线程 OpenBLAS 0.3.x 中的问题。

多线程 BLAS 通常并不比单线程 BLAS 快,但在调用 BLAS 的代码中明智地使用线程仍然可以提供适度的速度改进。因此,通常最好使用单线程 BLAS 和 bamgam 的 codenthreads 选项。对于bam(...,discrete=TRUE),使用多个线程可以带来很大的好处,特别是对于参考 BLAS。

MKL BLAS 默认是多线程的。在Linux下,在启动R之前设置环境变量MKL_NUM_THREADS=1给出单线程操作。

作者

Simon N. Wood simon.wood@r-project.org

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 BLAS thread safety。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。