Реализация netlib BLAS является отличным эталоном, поскольку в большинстве случаев она неоптимизирована и хорошо документирована (например, zgemm ). Тем не менее, это в Fortran 77, что делает его несколько недоступным для людей с более современным образованием в области программирования. Есть ли в C / C ++ реализация BLAS на уровне ссылок, например, netlib?
11
Известная реализация BLAS на языке C - это ATLAS. Среди полезных функций:
http://math-atlas.sourceforge.net/
источник
Netlib также создает CLAPACK , который включает в себя BLAS, но это всего лишь код на языке Fortran, выполняемый через f2c и, следовательно, немного неуклюжий (например, zgemm ).
источник
Для высокопроизводительной реализации, которая не только является одной из самых эффективных (лучше, чем 85% пиковых значений на 60 ядрах Intel Xeon Phi), но и является самой красивой из них, взгляните на BLIS:
https://github.com/flame/blis
источник
У меня есть реализации некоторых битов BLAS / LAPACK в RNP и RNP2 .
источник
В настоящее время мы работаем над массовым открытым онлайн-курсом "LAFF-On High-Performance Computing", в котором в качестве примера используется dgemm, который проводит один из уровней параллелизации: уровень инструкций, OpenMP, MPI.
Это не эталонная реализация для BLAS, но это ссылка на то, как кодировать BLAS (для производительности). Чтобы быть в курсе, посетите www.ulaff.net
источник