The documentation for mkl_dcsrbsr is incorrect. (See: http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/win/mkl/refman/inde...
The description of the job array states thtat:
- If job(6)=0, all output arrays acsr, ja, and ia are filled in for the output storage.
- If job(6)0, only arrays ja, ia are filled in for the output storage.
But the behaviour of the library is exactly opposite.
Also, it might be helpful to state that this function is actually implementing the transpose operation, if used with two CSR or two CSC inputs.
This problem has been already fixed in the latest 10.3 beta:
see, How it looks right now in 10.3 beta Reference Manual
job(6)- job indicator.
For conversion to the BSR format:
Ifjob(6)=0, only arraysjab,iabare generated for the output storage.
Ifjob(6)>0, all output arraysabsr,jab, andiabare filled in for the output storage.
Ifjob(6)=-1,iab(1)returns the number of non-zero blocks.--Gennady