- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I tried running application compiled using Intel Fortran 11.0.061 [IA-32] on two computers, each of them with Windows XP Pro, Service Pack 2 (I updated one of them to Service Pack 3), one with AMD Athlon MP 2200+, the other one with AMD Athlon MP 1600+.
In both cases, the application crashed with 'forrtl: severe(168): Program Exception - illegal instruction'. I created a version with the traceback information which told me that the line where the application crashes is iter_copy = 0 in the following block:
if ( .NOT.b4_active ) then
iter = 1
iter_copy = 1
else
iter = 0
iter_copy = 0
endif
iter and iter_copy are declared as integer*4 in a common block, b4_active is logical*4.
I have never had any illegal instruction problems on computers with Intel processors. Does this mean that AMD is not supported? Or am I using incorrect compiler and linker options for an application to be run on AMD processors?
/nologo /Oy- /D_OPENMP_ /fixed /extend_source:132 /Qopenmp /fpscomp:general /assume:byterecl /module:"Release Traceback\" /object:"Release Traceback\" /traceback /libs:static /threads /c /align:all /heap-arrays
/SUBSYSTEM:CONSOLE /DELAYLOAD:"ExternalFunctions.dll" /STACK:100000000 /IMPLIB:"...\myApp.lib" delayimp.lib libguide.lib
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In version 11.0, we changed the default so that the compiler assumes that the processor supports the Pentium 4 instruction set. This is called out in the release notes as a compatibility issue. If you will be running applications on older processors not compatible with the Pentium 4, use /arch:ia32. In Visual Studio, this is Code Generation > Enable enhanced instruction set > None.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Check the Dissassembly window at the location of the failinginstruction. I would guess you will find a conditional move (CMOVcc) instruction. Your option switches may have to specify older generation processors (prior to P6).
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In version 11.0, we changed the default so that the compiler assumes that the processor supports the Pentium 4 instruction set. This is called out in the release notes as a compatibility issue. If you will be running applications on older processors not compatible with the Pentium 4, use /arch:ia32. In Visual Studio, this is Code Generation > Enable enhanced instruction set > None.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have not tried running my application on AMD processors before, so I can't tell whether it would work after being compiled using the version 10. Anyway, I followed your recommendation and used the compiler option /arch:ia32 and it helped. Thank you very much; I should read the release notes more thoroughly :-[
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Recent (as in, last 8 years or so) AMD processors should be fine. Athlon XP series, I think and later. Earlier ones supported only the Pentium III instruction set.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Recent (as in, last 8 years or so) AMD processors should be fine. Athlon XP series, I think and later. Earlier ones supported only the Pentium III instruction set.
Turion 1 was not fully compatible with SSE2, but, as Steve says, all more recent AMD processor would work with the ifort default.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK, I hope that none of the application's users keeps the "ancient" versions of AMD processors and that the /arch:ia32 option will thus not be needed. Thanks again, guys, for your prompt help.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK, I hope that none of the application's users keeps the "ancient" versions of AMD processors and that the /arch:ia32 option will thus not be needed. Thanks again, guys, for your prompt help.
Ive just run into this error on a laptop using the AMD XP2400+ chipset.
Thanks to the contributions in this forum I fixed it with the recommended fix of Generation > Enable enhanced instruction set > enhanced instruction sets (/arch:IA32).

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page