Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Compilation Interface issue with dfeast_scsrev

acar
Beginner
563 Views

Hi,

I recently upgrades to XE2013 to get access to the extended eigensolvers in the MKL11 libraries.

I am trying to use dfeast_scsrev but am getting some compilation errors.

Here is my code:

    SUBROUTINE TTTT(IVECT,STIFFNESS_MATRIX)

    USE SPARSE_MATRIX_CLASS
    
 !   INCLUDE 'mkl_solvers_ee.fi'
    
      
    INTEGER::fpm(128)
    REAL(8)::EMIN,EMAX,EPSOUT
    REAL(8),ALLOCATABLE::E(:),X(:,:),RES(:)
    INTEGER::M0,LOOP,INFO,M
     
    INTEGER::IVECT(*)
    TYPE(SPARSE_MATRIX)::STIFFNESS_MATRIX

  
    CALL SPARSE_MATRIX_STORAGE('CSR',STIFFNESS_MATRIX)
   
    call feastinit (fpm)
           
    EMIN=0D0 ; EMAX=1000D0 ; M0=ivect(12)
    ALLOCATE(E(M0),X(IVECT(12),M0),RES(M0))
      
    call dfeast_scsrev('L',ivect(12),STIFFNESS_MATRIX%MATRIX,STIFFNESS_MATRIX%ROWS(1:ivect(12)+1),STIFFNESS_MATRIX%COLUMNS,fpm, epsout, loop, emin,emax, m0, e, x, m, res, info)
  
    RETURN
    END SUBROUTINE

When I compile this code I get three errors:

C:\RMA\Programs\EFE_V1.0\ansys\SSSS.f90(24): error #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source.   [MATRIX]
C:\RMA\Programs\EFE_V1.0\ansys\SSSS.f90(24): error #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source.   [ROWS]
C:\RMA\Programs\EFE_V1.0\ansys\SSSS.f90(24): error #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source.   [COLUMNS]

 

If I uncomment the include statement I get the following error:

SSSS.f90
C:\Program Files\Intel\Composer XE 2013 SP1\mkl\include\mkl_solvers_ee.fi(459): error #8000:  There is a conflict between local interface block and external interface block.   [SA]

The type Sparse_Matrix is:

    TYPE SPARSE_MATRIX
    
        INTEGER::NUMBER_OF_ROWS=0
        
        INTEGER::NUMBER_OF_COLUMNS=0
        
        INTEGER::NUMBER_OF_NON_ZEROS=0
        
        INTEGER,ALLOCATABLE::ROWS(:)
        
        INTEGER,ALLOCATABLE::COLUMNS(:)
    
        REAL(8),ALLOCATABLE::MATRIX(:)

    END TYPE SPARSE MATRIX

Any help in solving this issue would be gratefully received.

Thanks, ACAR

 

 

0 Kudos
9 Replies
Chao_Y_Intel
Moderator
563 Views

Hi, 

I can not compile your code here, as many of  structure is missed in the source code.   Yes, you need to need to uncomment the include. You can put before the function call. For example:

  INCLUDE 'mkl_solvers_ee.fi'
 SUBROUTINE TTTT(IVECT,STIFFNESS_MATRIX)
 USE SPARSE_MATRIX_CLASS

Thanks,
Chao

 

 

0 Kudos
acar
Beginner
563 Views

Hi,

Thanks for looking at my problem.  All the structures were actually there but for simplicity here is a self-contained version which exhibits the same problem:

    SUBROUTINE INTEL
    
 !   INCLUDE 'mkl_solvers_ee.fi'
      
    INTEGER::fpm(128)
    REAL(8)::EMIN,EMAX,EPSOUT
    REAL(8),ALLOCATABLE::E(:),X(:,:),RES(:)
    INTEGER::M0,LOOP,INFO,M,N
    CHARACTER(1)::UPLO='L'
     
    INTEGER::IVECT(100)
    
    TYPE SPARSE_MATRIX
    
        REAL(8),ALLOCATABLE::MATRIX(:)
        INTEGER,ALLOCATABLE::ROWS(:)
        INTEGER,ALLOCATABLE::COLUMNS(:)
               
    END TYPE SPARSE_MATRIX
    
    TYPE(SPARSE_MATRIX)::STIFFNESS_MATRIX

    N=IVECT(12)

    ALLOCATE(STIFFNESS_MATRIX%MATRIX(N))
    ALLOCATE(STIFFNESS_MATRIX%ROWS(N))
    ALLOCATE(STIFFNESS_MATRIX%COLUMNS(N))
   
    call feastinit (fpm)
    
    EMIN=0D0 ; EMAX=1000D0 ; M0=N
    ALLOCATE(E(M0),X(N,M0),RES(M0))
     
    call dfeast_scsrev(UPLO,N,STIFFNESS_MATRIX%MATRIX,STIFFNESS_MATRIX%ROWS(1:N+1),STIFFNESS_MATRIX%COLUMNS,fpm, epsout, loop, emin,emax, m0, e, x, m, res, info)
 
    RETURN
    END SUBROUTINE

The routine does not compile either as is or when the include is uncommented and the errors are as reported in my first note.

Thanks,

ACAR.

0 Kudos
acar
Beginner
563 Views

Hi,

I realise that I've not initialised any of the arrays but that should not affect the compilation...

ACAR

0 Kudos
mecej4
Honored Contributor III
563 Views

The code that you listed in #3 gets compiled by the 14.0.3.202 compiler without any error messages being output.

Please provide more details of your system, compiler version, etc., to enable reproducing the errors that you mentioned.

0 Kudos
acar
Beginner
563 Views

Thanks mecej4 for testing out my code on your system and pleased to hear that there is nothing wrong with my code!

My system details are:

Intel(R) Visual Fortran Composer XE 2013 SP1 Update 3 Integration for Microsoft Visual Studio* 2008, 14.0.0092.2008, Copyright (C) 2002-2014 Intel Corporation.

Include:

C:\Program Files\Intel\Composer XE 2013 SP1\mkl\include
C:\Program Files\Intel\Composer XE 2013 SP1\compiler\include

Libraries:

C:\Program Files\Intel\Composer XE 2013 SP1\mkl\lib\ia32
C:\Program Files\Intel\ComposerXE-2011\compiler\lib\ia32

I realise the compiler libraries have not been updated but if I do it gives issues that I would like to avoid solving at the moment.

Cheers,

ACAR.

0 Kudos
mecej4
Honored Contributor III
563 Views

Please check whether the source file that you are editing is the same as the one that gets compiled, and whether you have more than one source file with the same name in your directory tree. After all, I tried the same compiler version on Windows 8.1, and there were no errors reported.

You may also check by compiling the file using the IFort command window, after moving to the correct subdirectory.

0 Kudos
acar
Beginner
563 Views

Thanks for your input mecej4 but I am confident that it is this file that I am compiling and that there are no duplicates - the errors reported relate specifically to the file and it's contents.

 

0 Kudos
Chao_Y_Intel
Moderator
564 Views

Hello,

Would it be possible to attach your file here?  It may to us to compile the code here.

Thanks,
Chao

0 Kudos
acar
Beginner
564 Views

Hi Guys,

I think the problem might be that I am pointing to my old XE2011 libraries since I was and am still having the following linker error:

Error    3     error LNK2019: unresolved external symbol ___intel_VEC_memcpy referenced in function _MENU_F90_mp_GMSETWIDGETINFO    GMENUWI8.LIB(menu_f90.obj)    

 

I have posted this in the FORTRAN forum so let's see what happens.

Thanks,

ACAR.

0 Kudos
Reply