Esiste un'implementazione a livello di riferimento di BLAS in C / C ++?


11

L'implementazione BLAS di netlib è un riferimento eccellente, essendo per lo più non ottimizzata e ben documentata (ad es. Zgemm ). Tuttavia, è in Fortran 77, rendendolo in qualche modo inaccessibile a quelli con una formazione di programmazione più moderna. Esiste un'implementazione a livello di riferimento di BLAS, come netlib, in C / C ++?

Risposte:


10

Hai esaminato l' implementazione della GNU Scientific Library ? Trovo che il codice sorgente sia sufficientemente leggibile e le routine sono ben documentate.


Mi sembra buono. La documentazione è un po 'carente, ma i nomi delle variabili sono scelti abbastanza bene che penso sia chiaro. Probabilmente anteporrò il commento di apertura delle routine BLAS di netlib. Con cosa ti poni esattamente? Hai un'alternativa?
Max Hutchinson,

6

Una notevole implementazione in linguaggio C di BLAS è ATLAS. Tra le funzioni utili:

  1. Le routine di algebra implementate sia in versione C semplice che in versioni assistite da assemblatore altamente ottimizzate per più architetture e varianti.
  2. Il sistema di compilazione presenta un "sintonizzatore automatico" che compila più varianti della libreria ATLAS per stabilire quale sarà la più veloce su una determinata macchina.

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


Ho guardato ATLAS ma ho perso questo. Il percorso per l'implementazione di riferimento è "src / blas / reference", con "ref" inserito tra il carattere di tipo e il nome della routine e con gli argomenti carattere aggiunti.
Max Hutchinson,

3

Netlib produce anche CLAPACK , che include BLAS, ma è solo il codice fortran eseguito attraverso f2c ed è quindi un po 'goffo (ad esempio zgemm ).


1

Per un'implementazione ad alte prestazioni che non è solo tra le più performanti (migliore dell'85% del picco su 60 core di Intel Xeon Phi), ma è anche la più magnificamente scritta, dai un'occhiata a BLIS:

https://github.com/flame/blis


Questo non sembra pretendere di essere un'implementazione a livello di riferimento
mabraham,

Ci piace assottigliarlo come un'implementazione di riferimento ad alte prestazioni.
Robert van de Geijn,

0

Ho implementazioni di alcuni bit di BLAS / LAPACK in RNP e RNP2 .


Questo è interessante, ma è sicuramente post-BLAS e meno diretto rispetto a GSL e all'implementazione di riferimento in ATLAS.
Max Hutchinson,

-1

Attualmente stiamo lavorando a un corso online aperto di massa, "LAFF-On High Performance Computing" che utilizza dgemm come esempio che guida attraverso diversi livelli di parallelizzazione: livello di istruzione, OpenMP, MPI.

Questa non è un'implementazione di riferimento per il BLAS, ma è un riferimento per come codificare il BLAS (per le prestazioni). Per essere informato, visitare www.ulaff.net

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.