- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I have a program which will randomly generate cases with linear equations to be solved. For most of the cases, the linear equations will be sparse. So I use the DSS to solve them. But when it involves a full matrix problem.The DSS will stack at the dss_reorder and shows forrtl: severe (157): Program Exception -access violation.
Can anyone tell me how to fix this problem in an efficient way? I don't want to add too much codes to check if the matrix is full and add additional routine for the full matrix case.
The attached is my test case for the full matrix problem. Your help will be greatly appreciated.
Thanks!
Tianyu
PROGRAM Test INCLUDE 'mkl_dss.f77' INTEGER tIU(:), tJU(:), Idum(:), ITER DOUBLE PRECISION tUM(:), tXDIFF(:), tX(:) ALLOCATABLE tIU, tJU, tUM, tXDIFF, tX, Idum INTEGER nNonZeros,nRow INTEGER*8 handle INTEGER error !OPEN (UNIT=10, FILE='testInfo.dat') !READ (10,7004) nNonZeros, nRow !CLOSE(10) nRow=2 nNonZeros=4 ALLOCATE(tIU(nRow+1)) ALLOCATE(tXDIFF(nRow)) ALLOCATE(tX(nRow)) ALLOCATE(tJU(nNonZeros)) ALLOCATE(tUM(nNonZeros)) ALLOCATE(Idum(nRow)) tJU(1)=1 tJU(2)=2 tJU(3)=1 tJU(4)=2 tIU(1)=1 tIU(2)=3 tIU(3)=5 tUM(1)=0.0751 tUM(2)=0.0116 tUM(3)=0.0116 tUM(4)=-0.0751 tXDIFF(1)=1 tXDIFF(2)=0 !OPEN (UNIT=10, FILE='columns.dat') !READ (10,7002) (tJU(II),II=1,nNonZeros) !CLOSE(10) ! !OPEN (UNIT=10, FILE='rowIndex.dat') !READ (10,7002) (tIU(II),II=1,nRow+1) !CLOSE(10) ! !OPEN (UNIT=10, FILE='values.dat') !READ (10,7001) (tUM(II),II=1,nNonZeros) !CLOSE(10) ! !OPEN (UNIT=10, FILE='loadVector.dat') !READ (10,7001) (tXDIFF(II),II=1,nRow) !CLOSE(10) ITER=1 C--------------------------------------------------------------------------- C Initialize the solver C--------------------------------------------------------------------------- error = dss_create(handle, MKL_DSS_DEFAULTS+MKL_DSS_OOC_VARIABLE) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 C--------------------------------------------------------------------------- C--------------------------------------------------------------------------- C Define the non-zero structure of the matrix C--------------------------------------------------------------------------- ! error = dss_define_structure( handle, MKL_DSS_SYMMETRIC, !& tIU, nRow, nRow, tJU, nNonZeros ) error = dss_define_structure( handle, MKL_DSS_NON_SYMMETRIC, & tIU, nRow, nRow, tJU, nNonZeros ) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 C--------------------------------------------------------------------------- C--------------------------------------------------------------------------- C Reorder the matrix C--------------------------------------------------------------------------- IF (ITER.EQ.1) THEN error = dss_reorder( handle, MKL_DSS_GET_ORDER, Idum) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 ELSE error = dss_reorder( handle, MKL_DSS_MY_ORDER, Idum) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 ENDIF C--------------------------------------------------------------------------- C Factor the matrix C--------------------------------------------------------------------------- error = dss_factor_real( handle, MKL_DSS_DEFAULTS, tUM) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 C--------------------------------------------------------------------------- C Get the solution vector C--------------------------------------------------------------------------- error = dss_solve_real( handle, MKL_DSS_DEFAULTS, & tXDIFF, 1, tX) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 C--------------------------------------------------------------------------- C--------------------------------------------------------------------------- C Deallocate solver storage C--------------------------------------------------------------------------- error = dss_delete( handle, MKL_DSS_DEFAULTS ) IF (error .NE. MKL_DSS_SUCCESS ) GOTO 999 C--------------------------------------------------------------------------- OPEN (UNIT=10, FILE='OutValues.dat') WRITE (10,7005) (tX(II),II=1,nRow) CLOSE(10) GOTO 1999 7001 FORMAT(1X,D) 7002 FORMAT(1X,I5) 7003 FORMAT(1X,I,1X,D) 7004 FORMAT(1X,I,1X,I) 7005 FORMAT(1X,D) 999 WRITE(*,*) "Solver returned error code ", error 1999 DEALLOCATE(tIU,tJU,tUM,tXDIFF,tX,Idum) END
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
it really failed with version 11.0. Checking with the latest MKL v.11.3.3, I don't see problem - below the output ( I slightly modified the code by adding error status and mkl version )
Intel(R) Math Kernel Library Version 11.3.3 Product Build 20160413 for Intel(R) 64 architecture applications
(1)...dss_create == 0
(2)...dss_define_structure == 0
(3)...dss_reoder == 0
(4) ...dss_factor_real == 0
(5)...dss_solve_real == 0
(6)...dss_delete == 0
the updates file is also attached.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tianyu, thanks for report. What MKL version do you use?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Gennady, I am using MKL 11.0.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
it really failed with version 11.0. Checking with the latest MKL v.11.3.3, I don't see problem - below the output ( I slightly modified the code by adding error status and mkl version )
Intel(R) Math Kernel Library Version 11.3.3 Product Build 20160413 for Intel(R) 64 architecture applications
(1)...dss_create == 0
(2)...dss_define_structure == 0
(3)...dss_reoder == 0
(4) ...dss_factor_real == 0
(5)...dss_solve_real == 0
(6)...dss_delete == 0
the updates file is also attached.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Gennady.
Actually, I have extended the full matrix into a sparse matrix by adding one more row and of course one more column as well. In that way, DSS in MKL 11.0 works.

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