Есть ли в 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/

oakad
источник
Я посмотрел на 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

Роберт ван де Гейн
источник