Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29283 Discussions

Cant compile a program with IMSL routines

Jo_o_L_
Beginner
1,713 Views
I try do compile (Intel Compiler 11.1.038 Intel64) in the Visual Studio 2008 a small program that use IMSL libraries and the following message appears:

fortcom: Fatal: There has been an internal compiler error (C0000094)

I cant compile/link it. I use the 'INCLUDE link_fnl_static.h' and USE IMSL_Libraries statements though.

Someone can help me ?

0 Kudos
1 Solution
Kevin_D_Intel
Employee
1,713 Views

Remove (or comment out)the "USE IMSL_LIBRARIES" statement and add a reference to libiomp5md.lib as shown.

Here's a snippet of the top of your program *after* changes.

INCLUDE 'link_fnl_static.h'
PROGRAM AUTVAL_RA
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'
!USE IMSL_LIBRARIES

I can reproduce the internal error only with the Intel64 compiler. I don't believe the USE statement is necessary. I'm checking w/IMSL experts.

View solution in original post

0 Kudos
12 Replies
Kevin_D_Intel
Employee
1,713 Views

Unfortunately your program has exposed an internal compiler. I doubt its related to simply including the IMSL header. Since you are already using the latest 11.1 update, about all we can try to do is find a work around.

If you're comfortable posting the source file that suffered this error to this public forum, then we can investigate and perhaps offer a work around. Alternatively, you may submit a private issue to Intel Premier (here) for further assistance.
0 Kudos
Jo_o_L_
Beginner
1,712 Views

Unfortunately your program has exposed an internal compiler. I doubt its related to simply including the IMSL header. Since you are already using the latest 11.1 update, about all we can try to do is find a work around.

If you're comfortable posting the source file that suffered this error to this public forum, then we can investigate and perhaps offer a work around. Alternatively, you may submit a private issue to Intel Premier (here) for further assistance.

Thanks Kevin.

The problem is that I can compile/run any other program that does not use IMSL routines.
I have no problems to send you my program. Please find it attached. It uses a input file that is also attached.
Just to inform you, my PC use Windows Vista 64 OS.
Thanks.

Joo Lima
0 Kudos
Kevin_D_Intel
Employee
1,714 Views

Remove (or comment out)the "USE IMSL_LIBRARIES" statement and add a reference to libiomp5md.lib as shown.

Here's a snippet of the top of your program *after* changes.

INCLUDE 'link_fnl_static.h'
PROGRAM AUTVAL_RA
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'
!USE IMSL_LIBRARIES

I can reproduce the internal error only with the Intel64 compiler. I don't believe the USE statement is necessary. I'm checking w/IMSL experts.
0 Kudos
JohnR
Beginner
1,712 Views

Remove (or comment out)the "USE IMSL_LIBRARIES" statement and add a reference to libiomp5md.lib as shown.

Here's a snippet of the top of your program *after* changes.

INCLUDE 'link_fnl_static.h'
PROGRAM AUTVAL_RA
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'
!USE IMSL_LIBRARIES

I can reproduce the internal error only with the Intel64 compiler. I don't believe the USE statement is necessary. I'm checking w/IMSL experts.

I've also found that I can't compile under Intel64 (11.1.038) if I'm using the IMSL libraries. ia32 works OK as does 11.0.072 (both 32 and 64 bit).

The IMSL libraries I'm using are version 11.1.035.

The error I get is:

1>D:JohnDocumentsProjectsCommonsrcMyStats_IMSL.f90(21): error #7881: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read. [IMSL_LIBRARIES]

0 Kudos
Kevin_D_Intel
Employee
1,712 Views

Thank you for the additional report. The USE that I commented on earlier I expect is valid. The IMSL shipped with 11.1 is reportedly the same as the 11.0 version so it appears there is a module issue (perhaps incompatibility) on Intel64 only here.

We apologize for this. We'll get to the bottom of it.

(Internal tracking id: DPD200138749)
0 Kudos
Kevin_D_Intel
Employee
1,712 Views
Quoting - JohnR

I've also found that I can't compile under Intel64 (11.1.038) if I'm using the IMSL libraries. ia32 works OK as does 11.0.072 (both 32 and 64 bit).

The IMSL libraries I'm using are version 11.1.035.

The error I get is:

1>D:JohnDocumentsProjectsCommonsrcMyStats_IMSL.f90(21): error #7881: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read. [IMSL_LIBRARIES]


John, your case might be an architecture mismatch between the compiler and actual IMSL package used.

Can you confirm that the name of the IMSL download file you obtained for Intel64 was: w_cprofimsl_p_11.1.035_intel64.exe and *not* w_cprofimsl_p_11.1.035_ia64.exe?

0 Kudos
Steven_L_Intel1
Employee
1,712 Views
I can reproduce the internal compiler error and we'll investigate. Issue ID is DPD200138749.

You can get the program to compile by doing two things:

1. Replace USE IMSL_LIBRARIES with USE ZBREN_INT. IMSL_LIBRARIES is a "catch-all" module that uses all of the hundreds of individual interface modules. It is better to use only those interface modules you need. The compiler should not die, but this is an easy workaround and will compile faster too. The USE is required if one is calling the "Fortran 90" interface to the IMSL routine.

2. This is not required, but I recommend it - replace "D_ZBREN" with "ZBREN". It is a common misunderstanding that one should call the datatype-specific name of the routine. The module declares ZBREN as generic and using the generic name is highly recommended. Whatever you do, DON'T call the "Fortran 77" name DZBREN. A caveat, though - make sure you add the USE ZBREN_INT or else a call to ZBREN will resolve to the older name!
0 Kudos
JohnR
Beginner
1,712 Views

John, your case might be an architecture mismatch between the compiler and actual IMSL package used.

Can you confirm that the name of the IMSL download file you obtained for Intel64 was: w_cprofimsl_p_11.1.035_intel64.exe and *not* w_cprofimsl_p_11.1.035_ia64.exe?


Hi Kevin, Steve

Yes, I can confirm that I downloaded and installed w_cprofimsl_p_11.1.035_intel64.exe. I have no problems compiling and linking this version of IMSL with 11.0.72 (Intel 64), but cannot compile with 11.1.038 due to the module error.

I have managed to get a successful build under Intel64, and this is what I had to do:

  1. It seemed that some of my source files were including the ia32 IMSL directories. This is strange as the project include does not and this is not the case under VS2005 (11.0.72). In any case, removing these file includes and replacing the generic USE IMSL_LIBRARIES with the proper module name works. Using IMSL_LIBARARIES reports internal compiler error (C0000094).
  2. The compiler then reported errors on my assigment interfaces. Again, unexpected since these have been in my code since the version 9 compilers. I had to point to lower level routines and remove PURE from many of the them. I will have to look into this.
  3. I'm getting an error with formatted output that I'm still looking into -see Problem with format
Some Observations

I have both VS2005 (11.0.072) and VS2008 (11.1.035) installed on my Server 2003 (64) machine. VS2008 seems flaky - for eg
  • trying to use Ctrl-F (find) or Crtl-Shift-F (finf in files) will crash the IDE every time. Ctrl-I is fine.
  • when viewing Project Properties, I will sometimes get only Fortran properties (and nothing else) and sometimes get the full list
  • the resource compiler did not install and I had to move the appropriate files from VS2005 into place
  • inline help no longer works
  • I previously reported that I couldn't compile individual files by right-clicking - this is there (I think my eyesight is going!)
  • Found it very difficult to get a command line build going. nmake didn't install (moved files over) and am still tracking down some build errors (some of these may have been resolved by the discussion in this thread) - will persevere.
Finally, want to say thanks for your help. I'm very happy with the Intel compilers - they're top quaility - and am keen to explore the F2003 features.

Regards
John
0 Kudos
Jo_o_L_
Beginner
1,712 Views
I can reproduce the internal compiler error and we'll investigate. Issue ID is DPD200138749.

You can get the program to compile by doing two things:

1. Replace USE IMSL_LIBRARIES with USE ZBREN_INT. IMSL_LIBRARIES is a "catch-all" module that uses all of the hundreds of individual interface modules. It is better to use only those interface modules you need. The compiler should not die, but this is an easy workaround and will compile faster too. The USE is required if one is calling the "Fortran 90" interface to the IMSL routine.

2. This is not required, but I recommend it - replace "D_ZBREN" with "ZBREN". It is a common misunderstanding that one should call the datatype-specific name of the routine. The module declares ZBREN as generic and using the generic name is highly recommended. Whatever you do, DON'T call the "Fortran 77" name DZBREN. A caveat, though - make sure you add the USE ZBREN_INT or else a call to ZBREN will resolve to the older name!

Thanks Steve,
Thanks Kevin,
Thanks JohnR,

Ive done the replacements Steve recommended. And Ill use them from now on.The program works/compiles in X64 environment. However, if I try to compile it as Win32 another error occurence appears. Then, Iveused the instruction recommendedbyKevin (to insert the statement: !DEC$ OBJCOMMENT LIB:'libiomp5md.lib'). Now, the program works fine in both environment (Win32 and X64) !!!!.However,I cant realize why shouldsomeone insert this statement !

Thanks a lot !


Joo Lima
0 Kudos
Steven_L_Intel1
Employee
1,712 Views

I'm puzzled as to why you didn't need it on x64! Here's what's happening. The IMSL libraries use OpenMP internally, which creates a dependence on the OpenMP library, libiomp5md. For the DLL library case, that dependency is built in to the IMSL DLL, but for static libraries, you need to pull in libiomp5md.lib. VNI recommends that IMSL-using programs compile with /Qopenmp, which will do this, but this has additional side effects such as making all local arrays automatic. Therefore, we tend to recommend just adding the mention of libiomp5md.lib. VNI has declined to add this to the include file.
0 Kudos
Steven_L_Intel1
Employee
1,712 Views
See this Knowledge Base article for the updated module files.
0 Kudos
Michal_Kvasnicka
Beginner
1,712 Views

Steve,

thanks a lot for your updated IMSL 6 FNL module files for INTEL 11.1.xxx for x86-64 platform.

Great job, which save me a lot of time!!!

Thanks again, Michal

0 Kudos
Reply