Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29423 Discussions

11.1 compatability with 9.0, 10.0 and 11.0

dajum
Novice
704 Views
We build executables from libraries that contain most of the routines that we use and main program that might contain a few subroutines. Our libraries are built with IVF 9.0. The libraries do contain mixed langauge routines as we have quite a few C routines that are used in the code. The executables might be built using any version of the compiler upto and including 11.1. But we find that some of our models won't run when compiled with 11.1 They same libraries and main program work fine using 11.0 and earlier versions of the compiler.The executables seem to go into an infinite loop in some models when using 11.1 (there are some that run fine, but anything less than 100% of them isn't acceptable).The process has to be terminated using the task manager. Then I find that there is a traceback where the codehas died during a deallocation. It doesn't happen in every instance. But test models that have run for years, won't run when compiled and linked with 11.1. We find even compiling the libraries with 11.0 and then compiling the main routine and linking with 11.1 results in the infinite loop. Are there any known reasons for this? I read all the release notes and couldn't find anything that would suggest 9.0 libraries should have incompatabilities. Any suggestions as to how to figure out why these models get stuck when using 11.1?

Dave
0 Kudos
3 Replies
Steven_L_Intel1
Employee
704 Views
I can't think of anything related to different versions that would be a problem. We support linking in older objects with newer, as long as you use the newest linker and Intel libraries. It could be that 11.1 has a bug or that your code has a bug that was not exposed using the earlier compilers. If you can provide us a test case, we'll be glad to investigate.

If you wanted to try to diagnose this yourself, I'd look for possibilities of data corruption. Build all the Fortran sources with a Debug configuration in 11.1. Make sure that you aren't incorrectly using STDCALL calling conventions when C should be used.
0 Kudos
dajum
Novice
704 Views
It appears to always crash on a deallocation. Here is the code:


if( allocated(dworks)) THEN
deallocate(dworks,stat=alocerr)
ELSE
write(linout,*)' dworks not allocated - no deallocation'
call outlog(linout)
ENDIF

It gives an access violation error.

It is interesting, but maybe not relevant. I look in the .map file produced. There are a number of common block names that appear in other compiler versions that are missing when using 11.1. Any reason the map wouldn't list them just like the other versions?

Dave
0 Kudos
Steven_L_Intel1
Employee
704 Views
Memory corruption seems a likely candidate for you. As for common block names, no idea. Got an example?
0 Kudos
Reply