Чи існує реалізація BLAS на рівні C / C ++?


11

Реалізація netlib BLAS є чудовим посиланням, оскільки в основному неоптимізована та добре зафіксована (наприклад, zgemm ). Однак це є у Fortran 77, що робить його дещо недоступним для тих, хто має більш сучасну освіту програмування. Чи є реалізація BLAS на рівні еталону, як netlib, в C / C ++?

Відповіді:


10

Ви дивилися на GNU Scientific бібліотеки реалізації ? Я вважаю вихідний код достатньо читабельним, і підпрограми добре задокументовані.


Мені добре виглядає. Документації трохи бракує, але імена змінних вибрані досить добре, що я вважаю її зрозумілим. Я, мабуть, додаю вступний коментар підпрограм BLAS netlib. Що саме ви берете на себе? Чи є у вас альтернатива?
Макс Хатчінсон

6

Помітна реалізація мови BLAS на C - це ATLAS. Серед корисних функцій:

  1. Підпрограми алгебри реалізовані як просто C, так і високооптимізовані версії з підтримкою асемблера для декількох архітектур та варіантів.
  2. Система збирання містить "автоматичний тюнер", який збирає кілька варіантів бібліотеки ATLAS, щоб встановити, який з них буде найшвидшим на даній машині.

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


Я подивився на ATLAS, але пропустив це. Шлях до реалізації посилань - "src / blas / reference", з "ref", вставленим між символом типу та іменем рутини та доданими символьними аргументами.
Макс Хатчінсон


1

Для високоефективної реалізації, яка не тільки серед найефективніших (краще, ніж 85% піку на 60 ядрах Intel Xeon Phi), але також є найкраще написаною, подивіться на BLIS:

https://github.com/flame/blis


Це не схоже на те, що він претендує на реалізацію на рівні
еталонів

Нам подобається розрізати це як високоефективну референтну реалізацію.
Роберт ван де Геййн


-1

Зараз ми працюємо над масовим відкритим онлайн-курсом "LAFF-On High-Performance Computing", який використовує dgemm як приклад, який веде один через різні рівні паралелізації: рівень інструкцій, OpenMP, MPI.

Це не посилання на реалізацію для BLAS, але це посилання на те, як кодувати BLAS (для продуктивності). Щоб бути в курсі, відвідайте www.ulaff.net

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.