- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I want to use the direct sparse solver with the intel fortran interface from the mkl library.
The matrix I want to invert is symmetric complex non-hermitian.
Can someone give me a hint what the correct option in dss_define_structure, dss_factor_complex would be.
I use a 64bit linux cluster version of mkl10.
I tried the following:
...
error = DSS_CREATE( handle, MKL_DSS_DEFAULTS )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_DEFINE_STRUCTURE( handle, MKL_DSS_SYMMETRIC, rowindex, ndf_hb, ndf_hb, columns, totnon )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_REORDER( handle, MKL_DSS_DEFAULTS, perm )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_FACTOR_COMPLEX( handle, MKL_DSS_DEFAULTS, values )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_DELETE( handle, MKL_DSS_DEFAULTS )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
...
which gives a segmentation fault :
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libpthread.so.0 000000303AC0E9DD Unknown Unknown Unknown
libiomp5.so 00002B734B6A989E Unknown Unknown Unknown
forrtl: severe (174): SIGSEGV, segmentation fault occurred
The size of the input arrays values,columns and rowindex are correct - I checked several times.
Thanks in advance.
Eide
I want to use the direct sparse solver with the intel fortran interface from the mkl library.
The matrix I want to invert is symmetric complex non-hermitian.
Can someone give me a hint what the correct option in dss_define_structure, dss_factor_complex would be.
I use a 64bit linux cluster version of mkl10.
I tried the following:
...
error = DSS_CREATE( handle, MKL_DSS_DEFAULTS )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_DEFINE_STRUCTURE( handle, MKL_DSS_SYMMETRIC, rowindex, ndf_hb, ndf_hb, columns, totnon )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_REORDER( handle, MKL_DSS_DEFAULTS, perm )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_FACTOR_COMPLEX( handle, MKL_DSS_DEFAULTS, values )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
error = DSS_DELETE( handle, MKL_DSS_DEFAULTS )
if(error /= MKL_DSS_SUCCESS)print*,'ERROR'
...
which gives a segmentation fault :
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libpthread.so.0 000000303AC0E9DD Unknown Unknown Unknown
libiomp5.so 00002B734B6A989E Unknown Unknown Unknown
forrtl: severe (174): SIGSEGV, segmentation fault occurred
The size of the input arrays values,columns and rowindex are correct - I checked several times.
Thanks in advance.
Eide
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
would you please show the libraries which you use for linking this example.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I used the dss_sym_f90 from the example directory coming with the mkl lib as a template.
In the source code I have:
INCLUDE 'mkl_dss.f90' as the first line
and
use mkl_dss
to compile I use the following:
ifort -w -I/prog/Intel/mkl10cluster/include -fpp *.f90 -L/prog/Intel/mkl10cluster/lib/em64t /prog/Intel/mkl10cluster/lib/em64t/libmkl_solver_lp64.a /prog/Intel/mkl10cluster/lib/em64t/libmkl_intel_lp64.a -Wl,--start-group /prog/Intel/mkl10cluster/lib/em64t/libmkl_intel_thread.a /prog/Intel/mkl10cluster/lib/em64t/libmkl_core.a -Wl,--end-group -L/prog/Intel/mkl10cluster/lib/em64t -liomp5 -lpthread -lm -o x_out
which i took from the makefile in the example directory.
Thanks for your help.
Eide
I used the dss_sym_f90 from the example directory coming with the mkl lib as a template.
In the source code I have:
INCLUDE 'mkl_dss.f90' as the first line
and
use mkl_dss
to compile I use the following:
ifort -w -I/prog/Intel/mkl10cluster/include -fpp *.f90 -L/prog/Intel/mkl10cluster/lib/em64t /prog/Intel/mkl10cluster/lib/em64t/libmkl_solver_lp64.a /prog/Intel/mkl10cluster/lib/em64t/libmkl_intel_lp64.a -Wl,--start-group /prog/Intel/mkl10cluster/lib/em64t/libmkl_intel_thread.a /prog/Intel/mkl10cluster/lib/em64t/libmkl_core.a -Wl,--end-group -L/prog/Intel/mkl10cluster/lib/em64t -liomp5 -lpthread -lm -o x_out
which i took from the makefile in the example directory.
Thanks for your help.
Eide
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eide, I compiled this example from the latest version (10.3.8) and the test ran well. here is the output produced
pow of determinant is 0.000
base of determinant is 2.250
Determinant is 2.250
Solution Array: -326.333 983.000 163.417 398.000 61.500
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Gennady,
I used the dss_sym_f90 just as a template of how to use the solver. My problem is different in some characteristics.
The matrix I want to solve is 210000 by 210000 with ca 23 * 10**6 non zero entries, symmetric with complex values on the diagonal(therefore non-hermitian). In the array "values" I did put all non zero values(not just the upper triangle).
When I put all non zero elements in the "values" arrays do I have to choose MKL_DSS_NON_SYMMETRIC in the line with:
error = DSS_DEFINE_STRUCTURE( handle, MKL_DSS_SYMMETRIC, rowindex, ndf_hb, ndf_hb, columns, totnon )
????
And if so - what would be the corresponding option in the dss_solve_complex line. There are 4 possibilities:
http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/win/mkl/refman/ssr/ssr_DSSIntro.html
Or can dss not solve a symmetric, complex, non-hermitian linear system ?
Thanks in advance.
(btw the example dss_sym_f90 works also on my system with the same result as you get)
Eide
I used the dss_sym_f90 just as a template of how to use the solver. My problem is different in some characteristics.
The matrix I want to solve is 210000 by 210000 with ca 23 * 10**6 non zero entries, symmetric with complex values on the diagonal(therefore non-hermitian). In the array "values" I did put all non zero values(not just the upper triangle).
When I put all non zero elements in the "values" arrays do I have to choose MKL_DSS_NON_SYMMETRIC in the line with:
error = DSS_DEFINE_STRUCTURE( handle, MKL_DSS_SYMMETRIC, rowindex, ndf_hb, ndf_hb, columns, totnon )
????
And if so - what would be the corresponding option in the dss_solve_complex line. There are 4 possibilities:
The opt argument should contain one of the following options:
MKL_DSS_POSITIVE_DEFINITE,
MKL_DSS_INDEFINITE,
MKL_DSS_HERMITIAN_POSITIVE_DEFINITE,
MKL_DSS_HERMITIAN_INDEFINITE ,
http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/win/mkl/refman/ssr/ssr_DSSIntro.html
Or can dss not solve a symmetric, complex, non-hermitian linear system ?
Thanks in advance.
(btw the example dss_sym_f90 works also on my system with the same result as you get)
Eide
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
the solution if you have a symmetric non hermitian matrix is:
1) put all non zero elements in the input array (not only the upper triangle)
2) declare the structure as non symmetric (although it's symmetric)
-> DSS_DEFINE_STRUCTURE( handle, MKL_DSS_NON_SYMMETRIC, rowindex, nrows, nrows, columns, totalnonzero)
3) choose the correct factorzation - in this case LDL^T
-> DSS_FACTOR_COMPLEX( handle, MKL_DSS_POSITIVE_DEFINITE, values)
It works fine : )
the solution if you have a symmetric non hermitian matrix is:
1) put all non zero elements in the input array (not only the upper triangle)
2) declare the structure as non symmetric (although it's symmetric)
-> DSS_DEFINE_STRUCTURE( handle, MKL_DSS_NON_SYMMETRIC, rowindex, nrows, nrows, columns, totalnonzero)
3) choose the correct factorzation - in this case LDL^T
-> DSS_FACTOR_COMPLEX( handle, MKL_DSS_POSITIVE_DEFINITE, values)
It works fine : )
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