What's the best way to efficiently compute a product of the form A*S*A' where S is symmetric with MKL?
Does MKL provide anything similar to the sykrx function that's part of cublas (http://docs.nvidia.com/cuda/cublas/#cublasxt_syrkx)? so that you can use it along with symm to compute the product without having to recompute symmetric entries?
I checked with internal team. Unfortunately there is no analogous routine in MKL. But could you please share some background about the functionality (here or send me private message), so i may create a feature request to our developer if there is a good strong motivation behind that.
Thanks for checking.
That computation is used in the update step to the inverse hessian approximation in the BFGS optimization algorithm (http://en.wikipedia.org/wiki/Broyden–Fletcher–Goldfarb–Shanno_algorithm) so it would be useful functionality to support.
We introduced a new GEMM-like extension into MKL, available starting in MKL 11.3b1. It is called GEMMT, and it is similar to GEMM except that it updates only the upper or lower triangular part of the C matrix. It also requires C to be square (size n x n).
To compute A * S * A', you can do as suggested: use SYMM to compute B=A*S, then use GEMMT to compute B*A'.
As MKl 11.3 beta 1 are included Intel Parallel Studio XE 2016 beta. I send one beta invitation letter to you. You are welcomed to try it and let us know if any feedback.