O objetivo do tgstat
é fornecer uma implementação rápida e eficiente de certas funções R, como 'Cor' e 'Dist', juntamente com ferramentas estatísticas específicas.
Várias abordagens são usadas para aumentar o desempenho, incluindo multipocessamento e uso de funções otimizadas fornecidas pela biblioteca básica de álgebra linear (BLAS).
Instale de Cran:
install.packages ("tgstat")
Para a versão de desenvolvimento:
Remotes :: install_github ("Tanaylab/tgstat")
Biblioteca (TGSTAT) set.seed (semente = 60427) linhas <- 3000COLs <- 3000Vals <- amostra (1: (linhas * cols / 2), linhas * cols, substituir = t) m <- matriz (vals, nrow = linhas, ncol = cols) m_with_nas <- mm_with_nas [amostra (1: (linhas * cols), linhas * cols / 10)] <- nadim (m)#> [1] 3000 3000
Correlação de Pearson sem blas, sem Nas:
Opções (tgs_use.blas = f) System.Time (TGS_COR (M)) #> Sistema de usuário decorrido #> 106.865 1.951 2.331
Mesmo com blas:
# tgs_cor, com blas, sem NAS, PearsonOptions (tgs_use.blas = t) System.Time (TGS_COR (M)) #> Sistema de usuário decorrido #> 4.228 0,324 0,809
Base R versão:
System.Time (COR (M)) #> Sistema de usuário decorrido #> 21.780 0.078 21.857
Correlação de Pearson sem blas, com NAS:
Opções (tgs_use.blas = f) System.Time (tgs_cor (m_with_nas, parewise.complete.obs = t)) #> Sistema de usuário decorrido #> 158.846 2.687 3.164
Mesmo com blas:
Opções (tgs_use.blas = t) System.Time (tgs_cor (m_with_nas, parewise.complete.obs = t)) #> Sistema de usuário decorrido #> 11.286 1.173 0,803
Base R versão:
system.Time (cor (m_with_nas, use = "parewise.complete.obs")) #> sistema de usuário decorrido #> 311.627 0,182 311.823
Distância sem blas, sem Nas:
Opções (tgs_use.blas = f) System.Time (TGS_DIST (M)) #> Sistema de usuário decorrido #> 354.742 2.509 5.002
Mesmo com blas:
Opções (tgs_use.blas = t) System.Time (TGS_DIST (M)) #> Sistema de usuário decorrido #> 7.407 0,656 0,462
Base r:
System.Time (Dist (M, Method = "Euclidiano")) #> Sistema de usuário decorrido #> 164.197 0,077 164.280
BLAS
tgstat
é melhor quando R está vinculado a uma implementação otimizada do BLAS.
Muitas implementações otimizadas de BLAs estão disponíveis, proprietárias (por exemplo, MKL da Intel, Veclib da Apple) e OpenSource (por exemplo, OpenBlas, Atlas). Infelizmente, R geralmente usa por padrão a implementação de blas de referência, que é conhecida por ter um desempenho ruim.
Ter tgstat
confiar nas blas de referência resultará em um desempenho muito ruim e é fortemente desencorajado. Se a sua implementação R usar um BLAS otimizado, defina options(tgs_use.blas=TRUE)
para permitir que tgstat
faça chamadas blas. Caso contrário, defina options(tgs_use.blas=FALSE)
(padrão), que instrui tgstat
a evitar blas e, em vez disso, depende apenas de seus próprios métodos de otimização. Em caso de dúvida, é possível executar uma das funções intensivas tgstat
CPU (por exemplo, tgs_cor
) e comparar seu tempo de execução nas duas options(tgs_use.blas=FALSE)
.
As instruções exatas para vincular R a uma biblioteca blas otimizada dependem do sistema e estão fora do escopo deste documento.