Implementacja BLAS w netlib jest doskonałym źródłem informacji, ponieważ jest w większości niezoptymalizowana i dobrze udokumentowana (np. Zgemm ). Jest jednak w Fortran 77, co czyni go nieco niedostępnym dla osób z bardziej nowoczesnym wykształceniem programistycznym. Czy istnieje implementacja BLAS na poziomie odniesienia, taka jak netlib, w C / C ++?
11
Godną uwagi implementacją BLAS w języku C jest ATLAS. Wśród przydatnych funkcji:
http://math-atlas.sourceforge.net/
źródło
Netlib produkuje również CLAPACK , który zawiera BLAS, ale jest to po prostu kod fortran przebiegający przez f2c i dlatego jest nieco niezgrabny (np. Zgemm ).
źródło
Aby uzyskać wysokowydajną implementację, która jest nie tylko jedną z najbardziej wydajnych (lepszych niż 85% wartości szczytowej na 60 rdzeniach Intel Xeon Phi), ale jest również najpiękniej napisana, zobacz BLIS:
https://github.com/flame/blis
źródło
Mam implementacje niektórych bitów BLAS / LAPACK w RNP i RNP2 .
źródło
Obecnie pracujemy nad masowym otwartym kursem online „LAFF-On High-Performance Computing”, który wykorzystuje dgemm jako przykład, który prowadzi przez różne poziomy równoległości: poziom instrukcji, OpenMP, MPI.
To nie jest referencyjna implementacja dla BLAS, ale jest to odniesienie do sposobu kodowania BLAS (dla wydajności). Aby być na bieżąco informowanym, odwiedź www.ulaff.net
źródło