- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
i dont know if im right here for this question.
I installed the Intel Fortran and C++ Compiler.
I have C code where Array N[][] is a mxn Matrix.
What do i need to change in the Code to get the thre (u,s,v) matrices from the SVD Algorithm?
What algorithm should i use on i7 920 for big ~50kx50k nonsparse matrices?
Thank you for the answers.
i dont know if im right here for this question.
I installed the Intel Fortran and C++ Compiler.
I have C code where Array N[][] is a mxn Matrix.
What do i need to change in the Code to get the thre (u,s,v) matrices from the SVD Algorithm?
What algorithm should i use on i7 920 for big ~50kx50k nonsparse matrices?
Thank you for the answers.
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
First,I would encourage you to initialize the matrix data in column-major order. If you initialize it in row-major order (as it's convinientin C), then you'll need to transpose your matrix before calling MKL. Also, you'll need to allocate space for all the ouput and working arrays.
Second, call dgesvd function (if your matrix is double precision). The best idea to get help on how to call it is to refer to the MKL LAPACK Examples web pages: http://software.intel.com/sites/products/documentation/hpc/mkl/lapack/mkl_lapack_examples/index.htm
You may also find detailed information on dgesvd in the MKL manual.
Then, you'll have all the singular values and vectors in corresponding arrays.
Michael.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Michael Chuvelev (Intel)
Hi,
First,I would encourage you to initialize the matrix data in column-major order. If you initialize it in row-major order (as it's convinientin C), then you'll need to transpose your matrix before calling MKL. Also, you'll need to allocate space for all the ouput and working arrays.
Second, call dgesvd function (if your matrix is double precision). The best idea to get help on how to call it is to refer to the MKL LAPACK Examples web pages: http://software.intel.com/sites/products/documentation/hpc/mkl/lapack/mkl_lapack_examples/index.htm
You may also find detailed information on dgesvd in the MKL manual.
Then, you'll have all the singular values and vectors in corresponding arrays.
Michael.
darkfate,
if i am not mistaken, please pay attention, that for allocation all working arrays for 50k x 50k density matrices, you need at least 3 * 50*10^3* 50*10^3 * sizeof (double) ~ 60 Gb.Therefore your RAM size must be fit to this size.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Gennady Fedorov (Intel)
darkfate,
if i am not mistaken, please pay attention, that for allocation all working arrays for 50k x 50k density matrices, you need at least 3 * 50*10^3* 50*10^3 * sizeof (double) ~ 60 Gb.Therefore your RAM size must be fit to this size.
--Gennady

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page