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

Error from Direct Sparse Solver (DSS) Interface

Customer__Intel2
Beginner
736 Views

Hello,

I installed Visual Studio 2012, Intel Parallel Studio XE 2013 on Windows 7 PC, now I am trying to solve sparse matrix by Direct Sparse Solver (DSS) subroutine (in Fortran 90), here the errors happened:

1>C:\PROGRA~2\Intel\COMPOS~1\mkl\include\mkl_dss.f90(36): error #6218: This statement is positioned incorrectly and/or has syntax errors.
1>C:\PROGRA~2\Intel\COMPOS~1\mkl\include\mkl_dss.f90(38): error #6785: This name does not match the unit name.   [MKL_DSS_PRIVATE]
1>C:\PROGRA~2\Intel\COMPOS~1\mkl\include\mkl_dss.f90(42): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MKL_DSS_PRIVATE]
1>C:\PROGRA~2\Intel\COMPOS~1\mkl\include\mkl_dss.f90(163): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MKL_DSS_PRIVATE]
1>C:\PROGRA~2\Intel\COMPOS~1\mkl\include\mkl_dss.f90(164): error #6457: This derived type name has not been declared.   [MKL_DSS_HANDLE]
.......

 

I checked the first error which happened in the module MKL_DSS_private, no idea what the reason was, and the error #6218 is not clearly identified and solved online, so any suggestions or hints are appreciated.

 

Best

Chunyuan

 

0 Kudos
1 Solution
mecej4
Honored Contributor III
736 Views

The file mkl_dss.f90 starts out with the source code for some modules. Therefore, if you include this file, the INCLUDE statement should not be placed within a module or subprogram in your source code. You can compile mkl_dss.f90 by itself, and then you do not need to INCLUDE that file anywhere in your code, since the necessary modules will be available to the compiler.

View solution in original post

0 Kudos
4 Replies
mecej4
Honored Contributor III
737 Views

The file mkl_dss.f90 starts out with the source code for some modules. Therefore, if you include this file, the INCLUDE statement should not be placed within a module or subprogram in your source code. You can compile mkl_dss.f90 by itself, and then you do not need to INCLUDE that file anywhere in your code, since the necessary modules will be available to the compiler.

0 Kudos
Customer__Intel2
Beginner
736 Views

It is awesome.

However, I would like to know more details: why not possible to include the subroutine in the source code? In case of similar errors happen, it would not be quite convenient to compile them separately.

Cheers

0 Kudos
mecej4
Honored Contributor III
736 Views

The key to answering your questions is this: the Fortran preprocessor reads your source file and processes preprocessor directives as needed. The resulting transformed source code, which can be displayed on the console or placed in a file using the /E, /EP and /P compiler options, must contain only valid Fortran source code.

Therefore, if preprocessing results in declarations appearing after executable statements, the compiler will flag errors. Likewise, if an include file is in fixed format but the file that includes that is in free format, or vice versa, the preprocessor output would be a mix of fixed and free format Fortran source, and the compiler may reject it.

0 Kudos
Customer__Intel2
Beginner
736 Views

Got it, thanks.

0 Kudos
Reply