Есть ли в C / C ++ реализация BLAS на базовом уровне?


11

Реализация netlib BLAS является отличным эталоном, поскольку в большинстве случаев она неоптимизирована и хорошо документирована (например, zgemm ). Тем не менее, это в Fortran 77, что делает его несколько недоступным для людей с более современным образованием в области программирования. Есть ли в C / C ++ реализация BLAS на уровне ссылок, например, netlib?

Ответы:


10

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


Выглядит хорошо для меня. Документации немного не хватает, но имена переменных подобраны достаточно хорошо, что, я думаю, понятно. Я, вероятно, добавлю вступительный комментарий к процедурам netlib BLAS. С чем конкретно вы спорите? У вас есть альтернатива?
Макс Хатчинсон

6

Известная реализация BLAS на языке C - это ATLAS. Среди полезных функций:

  1. Алгебра подпрограммы реализованы как простой C, а также высоко оптимизированные версии с ассемблером для нескольких архитектур и вариантов.
  2. Система сборки имеет «автонастройку», которая компилирует несколько вариантов библиотеки ATLAS, чтобы определить, какая из них будет самой быстрой на данной машине.

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


Я посмотрел на ATLAS, но пропустил это. Путь к ссылочной реализации - «src / blas / reference», с «ref», вставленным между символом типа и именем подпрограммы, с добавлением аргументов символа.
Макс Хатчинсон

3

Netlib также создает CLAPACK , который включает в себя BLAS, но это всего лишь код на языке Fortran, выполняемый через f2c и, следовательно, немного неуклюжий (например, zgemm ).


1

Для высокопроизводительной реализации, которая не только является одной из самых эффективных (лучше, чем 85% пиковых значений на 60 ядрах Intel Xeon Phi), но и является самой красивой из них, взгляните на BLIS:

https://github.com/flame/blis


Это не похоже на претензию на реализацию эталонного уровня
mabraham

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

0

У меня есть реализации некоторых битов BLAS / LAPACK в RNP и RNP2 .


Это интересно, но это определенно после BLAS и менее прямолинейно, чем GSL и эталонная реализация в ATLAS.
Макс Хатчинсон

-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.