I'm computing some SVDs and other time-consuming things using the mkl C libraries.
I've found that some methods implement a progress call back (https://software.intel.com/en-us/mkl-developer-reference-c-mkl-progress), but that does not seem to be the case for the calls I'm interested in ( _gesvd, _gesdd, _gemm, _imatcopy ).
Is there a clean work-around for this issue? I would ideally like to be able to post "progress", but at least I would like to be able to cleanly "abort" the computation by user-interaction.
I am afraid the mkl_progress do not support for BLAS, only for some functions of LAPACK, Scalapack and DSS/PARDISO. However, I checked, seems also do not support for ?gesvd. If you would like to find a work-around, please try with pardiso or dss. I've tested that it can work correctly in PARDISO and DSS solver. Just add following method before main function:
int mkl_progress( int* ithr, int* step, char* stage, int lstage )
if( lstage >= BUFLEN ) lstage = BUFLEN-1;
strncpy( buf, stage, lstage );
buf[lstage] = '\0';
printf( "In thread %i, at stage %s, steps passed %i\n", *ithr, buf, *step );
Thanks. I have not looked into *pardiso* at all yet and will do.
Do you know what the reason is for mkl_progress not supproting SVD routines?
Is this something which could be requested for future version of MKL, or is there something preventing this from being a sensible suggestion?
Not beeing able to exit long computations in a controlled manner seems a very bad property for a library.