Hi yongbei m.
It seems two questions here
R1. transposing function
R2. MPI support
So are you working on large matrix , which are distributed on nodes in a cluster?
You may check the MKL manual
Performs scaling and in-place transposition/copying of
Performs scaling and out-place transposition/copying
call mkl_somatcopy(ordering, trans, rows, cols, alpha, a, lda, b, ldb)
call mkl_domatcopy(ordering, trans, rows, cols, alpha, a, lda, b, ldb)
call mkl_comatcopy(ordering, trans, rows, cols, alpha, a, lda, b, ldb
Please see ScaLAPACK Auxiliary and Utility Routines 7,which support MPI. But seems no direct function of the purpose.
On the other hand, as you see, most of function of Scalapack support Transpose as input. What is the follow operation after you get the transpose of the matrix? it would be better if there are chance to combine the transpose and other functionality together.
thanks for the reply. right, these functions should be able to transposes a distributed matrix. The function call is like below pstran(m, n, alpha, a, ia, ja, desca, beta, c, ic, jc, descc), but it does need mpi communicator out of functions, also need create desca, descc, which have the position and mpi rank information. So the function don't need MPI communicator itself, but encaps MPI communicator internally. .
We have some discussion about the matrix distrubution and MKL PBLAS function call in forum thread like
It also include some examples. You can distribute the matrix manually like the sample or call functions, pstran, psadd (also suppose transpose) You may refer to them.