I am observing a weird performance behavior when using MKL 11.0 on an AMD Opteron 6220 processor. I wrote a small benchmark that measures the Gflop rate of the _GEMM operation in S, D, C and Z arithmetics and here is the result I get:
SGEMM Gflop/s: 18.10 DGEMM Gflop/s: 17.68 CGEMM Gflop/s: 4.78 ZGEMM Gflop/s: 2.31
The theoretical peak performance is 48, 24, 12 and 6, respectively. For real, double precision the obtained speed seems reasonable but for all the others (especially S) is way too low. With ACML, instead, I have
SGEMM Gflop/s: 37.58 DGEMM Gflop/s: 18.77 CGEMM Gflop/s: 5.37 ZGEMM Gflop/s: 3.70
Has anybody already observed anything like this? Any idea how to solve this problem?
sorry for omitting these details. Yes these are single threaded runs (I used the sequential mkl version rather than the threaded version with one thread). The matrices are all square of size 8000; running with bigger matrices does not make any relevant difference in terms of performance.
Just confirmed with the MKL team, on the AMD Bulldozer architectures BLAS functions such as GEMM are optimized only for double precision; optimizations have not been done for other precisions. On the contrary, on Intel architectures all precisions are optimized.
The MKL team is willing to help customers and would like to learn more about your request. If you want to discuss, please send me a private message through the forum. Alternatively, if you have access to Intel Premier Support (https://premier.intel.com), please create a ticket for this issue.