Актуальны ли процедуры BLAS уровня 1 для современных компиляторов фортрана?

Большая часть API BLAS уровня 1 может быть тривиально написана напрямую, используя векторизованные присваивания Fortran 9x+ и встроенные процедуры. .

Предположим, вы используете современный оптимизирующий компилятор, такой как Intel Fortran, и правильно конкретные параметры оптимизации компилятора, есть ли какие-либо преимущества в производительности от использования вместо них процедур BLAS уровня 1, скажем, от Intel MKL или другие быстрые реализации BLAS?

Если да, то каков типичный размер вектора при появлении этих преимуществ?


person abbot    schedule 16.10.2012    source источник


Ответы (1)


Это зависит. Мы тестировали это раньше с помощью компилятора Intel и получили удивительные результаты. Например, DOT_PRODUCT из Fortran по сравнению с реализацией BLAS давали разные тенденции в зависимости от размера проблемы. По мере увеличения количества элементов в массивах BLAS становился лучше встроенного. Но для задач небольшого размера встроенный алгоритм был намного быстрее.

Мы фактически измерили для наших вариантов использования предельный размер, который требуется, чтобы сделать один лучше другого, и фактически использовали операторы if, чтобы решить, какой из них вызывать. Я не могу поделиться этими результатами, но я призываю вас проверить это самостоятельно. Польза от использования BLAS все же есть.

person tpg2114    schedule 16.10.2012