大多数BLAS Level 1 API可以使用Fortran 9x +矢量化赋值和内在程序直接编写。
假设您正在使用现代优化编译器(如Intel Fortran)和正确的特定于目标的编译器优化选项,那么使用BLAS Level 1过程会产生任何性能优势,例如来自Intel MKL或其他快速BLAS实现?
如果有,那么当这些好处出现时,典型的矢量大小是什么?
答案 0 :(得分:9)
这取决于。我们之前使用英特尔编译器对此进行了测试,结果令人惊讶。例如,Fortran的DOT_PRODUCT
与BLAS实现根据问题大小给出了不同的趋势。随着阵列中元素数量的增加,BLAS变得比内在更好。但对于小问题规模,内在性要快得多。
我们实际测量了我们的用例,使得一个比另一个更好的截止大小,并实际使用if语句来决定调用哪个。我不能分享这些结果,但我鼓励你自己测试一下。使用BLAS仍然有好处。