Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
26746 Discussions

Intel MKL support for largest/smallest Eigenvalues

kooshkbaghi__mahdi
112 Views

Dear all,

According to Intel there is a new support in MKL for largest eigenvalues.

I have upgraded to the latest Fortran compiler with MKL. I can compile the example folder for the largest eigenvalues but when I have tried to solve the following example I have got the following error.

Here is the minimal example:

PROGRAM  sparse_exp
      USE MKL_SPBLAS
      USE MKL_SOLVERS_EE
      implicit none
!!!!!!!!!!!!!!!!! Matrix declaration variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      integer      n,i
      parameter   (n=5)
      real        val(25)
      integer     rows(n+1), cols(25)
      !   Matrix descriptor
      TYPE(MATRIX_DESCR) descrA
      !   CSR matrix structure
      TYPE(SPARSE_MATRIX_T) csrA
!!!!!!!!!!!!!!!!! Declaration of MKL_SPARSE_S_EV variables !!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!! E - eigenvalues, X - eigenvectors, res - residual !!!!!!!!!!!!
!!!!!!!!!!!!!!!!! XL - left singular vectors, XR - right singular vectors !!!!!!
      character*1 WHICH
      parameter   (WHICH='L') !L - for largest eigenvalues to find
      integer     pm(128)
      integer     K0,K,info
      parameter   (K0 = 1) !Required number of eigenvalues/singular values to find
      real        E(n)
      real        sigma(n)
      real        X(n,n), XL(n,n), XR(n,n)
      real        res(n)
      val(1) = 0.2124
      val(2) = 0.1887
      val(3) = 0.1838
      val(4) = 0.2114
      val(5) = 0.2016
      val(6) = 0.1899
      val(7) = 0.2614
      val(8) = 0.2012
      val(9) = 0.1883     
      val(10)= 0.1629
      val(11)= 0.1845      
      val(12)= 0.2007     
      val(13)= 0.2373       
      val(14)= 0.1863
      val(15)= 0.1926     
      val(16)= 0.2114
      val(17)= 0.1871
      val(18)= 0.1856     
      val(19)= 0.2106
      val(20)= 0.2032
      val(21)= 0.2016     
      val(22)= 0.1619
      val(23)= 0.1919
      val(24)= 0.2032     
      val(25)= 0.2395 

      rows(1)=1
      rows(2)=6
      rows(3)=11
      rows(4)=16
      rows(5)=21
      rows(6)=26
     
      cols(1) = 1
      cols(2) = 2
      cols(3) = 3
      cols(4) = 4
      cols(5) = 5
      cols(6) = 1
      cols(7) = 2
      cols(8) = 3
      cols(9) = 4
      cols(10)= 5
      cols(11)= 1
      cols(12)= 2
      cols(13)= 3
      cols(14)= 4
      cols(15)= 5
      cols(16)= 1
      cols(17)= 2
      cols(18)= 3
      cols(19)= 4
      cols(20)= 5
      cols(21)= 1
      cols(22)= 2
      cols(23)= 3
      cols(24)= 4
      cols(25)= 5



      print *,'Sparse matrix size',n
!
!        Task 1. Call MKL_SPARSE_C_CREATE_CSR to create matrix handle
!      

      info = mkl_sparse_s_create_csr(csrA,SPARSE_INDEX_BASE_ZERO,N,N,rows,rows(2),cols,val)

!         Create matrix descriptor
      descrA % TYPE = SPARSE_MATRIX_TYPE_GENERAL
!
!        Task 2. Call MKL_SPARSE_EE_INIT to define the default values for the input
!        parameters.
!
      info = mkl_sparse_ee_init(pm)
      pm(2) = 4 !Setting tolerance
      pm(8) = 1 ! Use absolute stopping criteria
       print *, ' Testing mkl_sparse_s_ev '
!
!         Task 3. Solve the standard eigenvalue problem Ax=ex.
! 
      info = mkl_sparse_s_ev(WHICH,pm,csrA,descrA,k0,k,E,X,res)
      print  *,' OUTPUT INFO ',info
      if(info.ne.0) stop 1
      print *, 'Number of eigenvalues found ', k
      print *, ' Computed    |    Expected  '
      print *, ' Eigenvalues |    Eigenvalues '
      do i=1,K
         print *, E(i)
      enddo
      !   Release internal representation of CSR matrix
      info = MKL_SPARSE_DESTROY(csrA)

end program 

And here is the error:

 Sparse matrix size           5
  Testing mkl_sparse_s_ev 
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source             
eigen.exe          0000000000404B53  Unknown               Unknown  Unknown
libpthread-2.28.s  00007FCE5012E3C0  Unknown               Unknown  Unknown
libmkl_core.so     00007FCE508C4D0D  mkl_serv_free         Unknown  Unknown
libmkl_intel_thre  00007FCE561F80E1  mkl_sparse_s_kryl     Unknown  Unknown
libmkl_intel_thre  00007FCE561F3FFA  mkl_sparse_s_ev_i     Unknown  Unknown
libmkl_intel_lp64  00007FCE573379D7  MKL_SPARSE_S_EV       Unknown  Unknown
eigen.exe          0000000000403AFA  Unknown               Unknown  Unknown
eigen.exe          0000000000403862  Unknown               Unknown  Unknown
libc-2.28.so       00007FCE4FF7C223  __libc_start_main     Unknown  Unknown
eigen.exe          000000000040376E  Unknown               Unknown  Unknown

 

0 Kudos
0 Replies
Reply