tgstat
の目標は、特定の統計ツールとともに、「COR」や「DIST」などの特定のR関数の高速かつ効率的な実装を提供することです。
基本的な線形代数サブプログラム(BLA)ライブラリによって提供される最適化された関数のマルチプロセスや使用など、パフォーマンスを向上させるためにさまざまなアプローチが使用されます。
クランからインストール:
install.packages( "tgstat")
開発バージョンの場合:
リモート:: install_github( "tanaylab/tgstat")
ライブラリ(TGSTAT) set.seed(Seed = 60427)rows <-3000Cols <-3000vals <-3000vals <-3000vals <-3000vals(1:(rows * cols / 2)、rows * cols、置換= t)m <-matrix(vals、nrow = rows、ncol = ncol = cols)m_with_nas <-mm_with_nas [sample(1:(rows * cols)、rows * cols / 10)] <-nadim(m)#> [1] 3000 3000
ピアソンの相関関係はありません、nas:
オプション(tgs_use.blas = f) System.Time(TGS_COR(M))#>ユーザーシステムELAPSED#> 106.865 1.951 2.331
Blasと同じ:
#TGS_COR、BLAS、NO NAS、PEARSONOPTIONS(TGS_USE.BLAS = T) System.Time(TGS_COR(M))#>ユーザーシステムELAPSED#> 4.228 0.324 0.809
ベースRバージョン:
System.Time(COR(M))#>ユーザーシステムELAPSED#> 21.780 0.078 21.857
NASとのBLASなしのピアソン相関:
オプション(tgs_use.blas = f) System.Time(TGS_COR(M_WITH_NAS、PAILWISE.COMPLETE.OBS = T))>>ユーザーシステムELAPSED#> 158.846 2.687 3.164
Blasと同じ:
オプション(tgs_use.blas = t) System.Time(TGS_COR(M_With_nas、Pairwise.complete.obs = t))>>ユーザーシステムElapsed#> 11.286 1.173 0.803
ベースRバージョン:
System.time(cor(m_with_nas、use = "pairwise.complete.obs"))
Blasのない距離、NA NA:
オプション(tgs_use.blas = f) System.Time(TGS_DIST(M))#>ユーザーシステムELAPSED#> 354.742 2.509 5.002
Blasと同じ:
オプション(tgs_use.blas = t) System.Time(TGS_DIST(M))#>ユーザーシステムELAPSED#> 7.407 0.656 0.462
ベースR:
System.time(dist(m、method = "euclidean"))
BLAS
の使用に関するメモtgstat
、Rが最適化されたBLAの実装とリンクしている場合に最適です。
最適化された多くのBLAの実装が利用可能です。残念ながら、Rはデフォルトで参照BLAの実装をデフォルトで使用します。これはパフォーマンスが低いことが知られています。
tgstat
参照に依存すると、BLASが非常に不十分なパフォーマンスが発生し、強く落胆します。 R実装が最適化されたBLAを使用している場合、 options(tgs_use.blas=TRUE)
tgstat
BLASコールを行うことを許可します。それ以外の場合は、 options(tgs_use.blas=FALSE)
(デフォルト)を設定します。これは、 tgstat
BLAを避けるように指示し、代わりに独自の最適化方法にのみ依存します。疑わしい場合は、 tgstat
CPU集中関数の1つ( tgs_cor
など)を実行し、両方のoptions(tgs_use.blas=FALSE)
で実行時間を比較することができます。
Rを最適化されたBLASライブラリとリンクするための正確な手順はシステムに依存しており、このドキュメントの範囲外です。