Alterne BLAS / LAPACK sem sair de sua sessão R

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[This article was first published on R – Enchufa2, and kindly contributed to R-bloggers]. (Você pode relatar problemas sobre o conteúdo desta página aqui)


Quer compartilhar seu conteúdo em R-bloggers? clique aqui se você tiver um blog, ou aqui se não tiver.

BLAS e LAPACK compreendem todas as sub-rotinas de álgebra linear de baixo nível que tratam de suas operações de matriz em R e outro software. O Fedora fornece a implementação de referência do Netlib, que é precisa e estável, mas lenta, bem como vários back-ends otimizados, como ATLAS, BLIS (versões serial, OpenMP e threaded) e OpenBLAS (sabores serial, OpenMP e threaded também). No entanto, até a versão 32, o Fedora não tinha um mecanismo adequado para alternar entre eles.

Temos o prazer de anunciar que essa situação muda com o próximo lançamento, que já está em status beta. Começando com Fedora 33, R (bem como Numpy, Octave e todos os outros consumidores BLAS / LAPACK) é vinculado à biblioteca FlexiBLAS, um wrapper BLAS / LAPACK que permite a alternância em tempo de execução do backend otimizado e a versão OpenMP do OpenBLAS é definido como o back-end padrão de todo o sistema.

Além disso, o acompanhamento flexiblas O pacote R permite alterar o provedor BLAS / LAPACK, bem como definir o número de threads para back-ends paralelos, sem sair da sessão R. Vamos fazer um teste rápido usando o docker:

$ docker run --rm -it fedora:33
$ dnf install R-flexiblas # install R and the FlexiBLAS API interface for R
$ dnf install flexiblas-* # install all available optimized backends

Então, em uma sessão R, vemos:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
library(flexiblas)

# check whether FlexiBLAS is available
flexiblas_avail()
#> [1] TRUE

# get the current backend
flexiblas_current_backend()
#> [1] "OPENBLAS-OPENMP"

# list all available backends
flexiblas_list()
#> [1] "NETLIB"           "__FALLBACK__"     "BLIS-THREADS"     "OPENBLAS-OPENMP"
#> [5] "BLIS-SERIAL"      "ATLAS"            "OPENBLAS-SERIAL"  "OPENBLAS-THREADS"
#> [9] "BLIS-OPENMP"

# get/set the number of threads
flexiblas_set_num_threads(12)
flexiblas_get_num_threads()
#> [1] 12

Este é um exemplo de benchmark GEMM para todos os back-ends disponíveis:

library(flexiblas)

n             backend timing [s] performance [GFlops]
#> 1           NETLIB     56.776            0.2818092
#> 5            ATLAS      5.988            2.6720107
#> 2     BLIS-THREADS      3.442            4.6484602
#> 8      BLIS-OPENMP      3.408            4.6948357
#> 4      BLIS-SERIAL      3.395            4.7128130
#> 6  OPENBLAS-SERIAL      3.206            4.9906425
#> 7 OPENBLAS-THREADS      0.773           20.6985770
#> 3  OPENBLAS-OPENMP      0.761           21.0249671

Para perguntas, sugestões ou questões relacionadas a esta interface R, por favor use seu rastreador de problemas ou a lista de discussão R-SIG-Fedora. Para problemas mais gerais, use o Red Hat Bugzilla ou o rastreador de problemas do upstream.

Leia Também  Charada: Você pode resolver o labirinto que não é tão milho?

Artigo originalmente publicado em Enchufa2.es: Troque BLAS / LAPACK sem sair de sua sessão R.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br