Existe uma implementação de nível de referência do BLAS em C / C ++?


11

A implementação do netlib BLAS é uma excelente referência, sendo principalmente não otimizada e bem documentada (por exemplo, zgemm ). No entanto, está no Fortran 77, tornando-o um tanto inacessível para aqueles com uma educação em programação mais moderna. Existe uma implementação de nível de referência do BLAS, como netlib, em C / C ++?

Respostas:


10

Você já viu a implementação da Biblioteca Científica GNU ? Acho que o código fonte é suficientemente legível e as rotinas estão bem documentadas.


Parece bom para mim. A documentação está um pouco ausente, mas os nomes das variáveis ​​são escolhidos o suficiente para que eu fique claro. Provavelmente vou anexar o comentário de abertura das rotinas netlib BLAS. O que exatamente você discorda? Você tem uma alternativa?
Max Hutchinson

6

Uma implementação notável da linguagem C do BLAS é o ATLAS. Entre recursos úteis:

  1. As rotinas de álgebra implementadas tanto em C simples quanto em versões altamente otimizadas para montadores, com assistência otimizada, para múltiplas arquiteturas e variantes.
  2. O sistema de compilação apresenta um "auto-tuner" que compila várias variantes da biblioteca ATLAS para estabelecer qual será a mais rápida na máquina especificada.

http://math-atlas.sourceforge.net/


Eu olhei para o ATLAS, mas perdi isso. O caminho para a implementação de referência é "src / blas / reference", com "ref" inserido entre o caractere de tipo e o nome da rotina e com os argumentos de caractere anexados.
Max Hutchinson

3

O Netlib também produz CLAPACK , que inclui BLAS, mas é apenas o código fortran executado no f2c e, portanto, é um pouco desajeitado (por exemplo, zgemm ).


1

Para uma implementação de alto desempenho que não esteja apenas entre os de melhor desempenho (melhor que 85% do pico em 60 núcleos do Intel Xeon Phi), mas também seja a mais bem escrita, dê uma olhada no BLIS:

https://github.com/flame/blis


Este não parece ser o que afirma ser uma implementação de nível de referência
mabraham

Gostamos de reduzi-lo como uma implementação de referência de alto desempenho.
Robert van de Geijn 01/04/19

0

Tenho implementações de alguns bits do BLAS / LAPACK no RNP e RNP2 .


Isso é interessante, mas é definitivamente pós-BLAS e menos direto que o GSL e a implementação de referência no ATLAS.
precisa

-1

Atualmente, estamos trabalhando em um curso on-line aberto em grande escala, "LAFF-On High-Performance Computing", que usa dgemm como exemplo que leva a diferentes níveis de paralelização: nível de instrução, OpenMP, MPI.

Esta não é uma implementação de referência para o BLAS, mas é uma referência de como codificar o BLAS (para desempenho). Para se manter informado, visite www.ulaff.net

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.