當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。