- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have two questions about sgels example:
(1) why need to call sgels twice?
/* Query and allocate the optimal workspace */
lwork = -1;
sgels( "No transpose", &m, &n, &nrhs, a, &lda, b, &ldb, &wkopt, &lwork, &info );
lwork = (MKL_INT)wkopt;
work = (float*)malloc( lwork*sizeof(float) );
/* Solve the equations A*X = B */
sgels( "No transpose", &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info );
(2) where to decide row-major matrix or column -major matrix?
Thank you very much!
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The first call, with lwork already equal to -1, is a "workspace query". The absurd value of -1 (absurd for a matrix size) tells SGEMM, "Don't do any calculations, just tell me how much workspace is going to be needed. I'll allocate the space and then call you again."
The routine you are calling is a Fortran 77 routine. All matrices must be column major. If you want to use other formats, there are other MKL routines for that, as you can see in the MKL reference manual.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page