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.

OpenMP compile

Vannik
Beginner
1,437 Views

I have added openMP commands and it compiles and links no problem. On trying to run it I get the following error:

"The application or DLL C:Program FilesIntelCompilerFortran9.1EM64T|Binlibguide40.dll is not a valid Windows image. Please check this against your installation diskette."

I use IA32 compiler only but had thw EM32T part installed a while back. How do I rectify this?

Vannik

0 Kudos
10 Replies
TimP
Honored Contributor III
1,437 Views
You should not be specifying libguide explicitly. When using 32-bit compilation, you should not besetting a path to any EM64T library. ifort /Qopenmp should find the correct libraries automatically.
0 Kudos
Vannik
Beginner
1,437 Views
I am not specifying any such thing unless it is unintensional. In the IDE (Visual Studio 2003) the only switch I set is "Fortran Language - Process OpenMP directives - Generate Parallel Code". I have no idea where the path to EM64T comes from.
0 Kudos
Steven_L_Intel1
Employee
1,437 Views
It may be in your LIB environment variable that got picked up by VS.NET. In VS, go to Tools..Options..Intel Fortran. Look at the list of directories for Library files and make sure that only IA32 folders are listed. Do the same for Binary and Include.
0 Kudos
Vannik
Beginner
1,437 Views

I looked there and found nothing suspicious - the first path looks as follows:

$(IFORTInstallDir)Bin

The same for the lib and inc files. Any further ideas?

0 Kudos
Steven_L_Intel1
Employee
1,437 Views

On rereading, the problem is the PATH environment variable. Right click on My Computer, select Properties, Advanced, Environment Variables. Select PATH and click Edit. Remove any folders with EM64T and make sure that the compiler IA32BIN (or LIB is ok) folder is in there.

0 Kudos
Vannik
Beginner
1,437 Views

Thanks, it now works.

Vannik

0 Kudos
Vannik
Beginner
1,437 Views
But, and there always seems a but, it does not run. Whether I have OpenMP directives or not, if I select: "Language - Process OpenMP Directives - Generate Parallel Code" it creates an executable with funny graphics. I also have the following library selected: "Libraries - Runtime Library - QuickWin". Is OpenMP compatable with a QuickWin project? Any ideas?
0 Kudos
Steven_L_Intel1
Employee
1,437 Views

I don't know if we've ever tried that combination. QuickWin itself is a multithreaded environment and it could be that adding your own threading complicates it. QW was certainly designed many years before the implementation of OpenMP and is aimed more at "easy to use" rather than "full featured".

Are you calling QuickWin output routines ina parallel section? I'd recommend against that.

0 Kudos
Vannik
Beginner
1,437 Views

No, the QW output is not in a parallel section - in fact, when compiling with no parallel section but with "Generate Parallel Code" selected it no longer runs properly. I suspect the QW libraries as it is also not possible to select the parallel libraries with the QW library selected.

If QW is the problem, would having the parallel part as a DLL work?

0 Kudos
Steven_L_Intel1
Employee
1,437 Views
Choosing QuickWin libraries gets you the thread-safe libraries (libifcoremt). I can't think of a reason why this should not work and would ask that you send an example program to Intel Premier Support so that we can look at it. I don't think using a DLL will help, but you can try it, as long as the DLL does no I/O or QuickWin calls.
0 Kudos
Reply