C / C ++でBLASの参照レベルの実装はありますか?


11

netlib BLAS実装は優れたリファレンスであり、ほとんどが最適化されておらず、十分に文書化されています(例:zgemm)。ただし、Fortran 77に含まれているため、より現代的なプログラミング教育を受けた人にはややアクセスしにくくなっています。C / C ++にnetlibのようなBLASの参照レベルの実装はありますか?

回答:


10

GNU Scientific Libraryの 実装を見たことがありますか?ソースコードは十分に読みやすく、ルーチンは十分に文書化されています。


は、私にはよく見えますよ。ドキュメントには少し欠けていますが、変数名は十分に選択されているので明確だと思います。おそらく、netlib BLASルーチンの冒頭のコメントを追加します。何に問題がありますか?代替手段はありますか?
マックスハッチンソン

6

BLASの注目すべきC言語実装はATLASです。便利な機能の中で:

  1. 代数ルーチンは、単純なCとして実装されているほか、複数のアーキテクチャとバリアント向けに高度に最適化されたアセンブラー支援バージョンとして実装されています。
  2. ビルドシステムは、ATLASライブラリの複数のバリアントをコンパイルして、指定されたマシンでどれが最速になるかを確立する「自動チューナー」を備えています。

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


私はアトラスを見ましたが、これを見逃しました。参照実装へのパスは「src / blas / reference」で、タイプ文字とルーチン名の間に「ref」が挿入され、文字引数が追加されます。
マックスハッチンソン


1

最高のパフォーマンス(Intel Xeon Phiの60コアのピークの85%以上)であるだけでなく、最も美しく書かれたものでもある高性能な実装については、BLISをご覧ください。

https://github.com/flame/blis


それは、参照レベルの実装であることを主張するようにこれはいないようだ
mabraham

高性能なリファレンス実装としてこれを薄くしたいです。
ロバートヴァンデゲイイン


-1

現在、大規模なオープンオンラインコース「LAFF-On High-Performance Computing」に取り組んでおり、dgemmを使用して、異なるレベルの並列化(命令レベル、OpenMP、MPI)を実現しています。

これはBLASのリファレンス実装ではありませんが、BLASのコーディング方法のリファレンスです(パフォーマンスのため)。最新情報を入手するには、www.ulaff.netにアクセスしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.