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

Necessary dll for a portable coarray executable

David_DiLaura
Beginner
718 Views


I now see that libicaf.dll (from libicaf.lib) is necessary to run a coarry executable. The exe runs on my build machine but not on others -- it asks for libicaf.ddl. What is required to add to or modify the link so that the exe is portable? I'm in Studio 2010.

Thanks,

David

0 Kudos
11 Replies
Steven_L_Intel1
Employee
718 Views
You will need libicaf.dll - this is not available as a static library. You will probably also need the Intel MPI DLLs.
0 Kudos
David_DiLaura
Beginner
718 Views
Steve, If I put a very simple coarray executable on a machine other than my build machine, it reports that it needs libicaf.dll and impimt.dll. If I put those two dlls on the other machine the coarray executable loads but issues an error message: SearchPath ERROR_code=2 I then get an error window from the Visual C++ Runtime Library (?). Any ideas? You mentioned that I might need MPI dlls. The exe isn't asking for those, but is that the problem. If so, what/where are they? Is there a list available? David
0 Kudos
Steven_L_Intel1
Employee
718 Views
You have the Intel MPI DLL there, impimt.dll. Is your program linked otherwise to static libraries? What does Dependency Walker say on your executable? libicaf.dll depends on impimt.dll, but that doesn't depend on any other DLLs.
0 Kudos
David_DiLaura
Beginner
718 Views
Steve, I'm not specifying any special/additional libraries when I link. Dependency Walker reports that the simple coarray exe is missing IESSHIMS.dll. But it reports that on any 'ol exe that I have. If I understand it correctly, that's only something for protected mode IE (I don't use IE). So, that doesn't seem to be related to the error. D.W. does show libicaf.dll and imprimt.dll as dependent. David
0 Kudos
Steven_L_Intel1
Employee
718 Views
Did you do this on the target system? You are correct that the IESHMS.DLL can be ignored.
0 Kudos
David_DiLaura
Beginner
718 Views
Steve, Yes, I ran DependencyWalker against the exe on the target system. It's a Dell laptop, with Win7. Your processor analysis code reports 1 chip with 2 physical cores. To try and make sure this isn't being caused by my code, I compiled and linked the tiny sample coarray code that is put in the "Samples" folder when the compiler is installed/updated. As you may recall, it simply writes "Hello from image" x to the screen. DependencyWalker reports nothing missing (other than IESHMS.dll) but attempting to execute causes the same error: SearchPath ERROR_code=2 It executes without a problem on the build machine. Are there search paths that are set by the installer that would not (necessarily) be set on another system? David
0 Kudos
Steven_L_Intel1
Employee
718 Views
I'll have to ask - this is not something I have seen before.
0 Kudos
David_DiLaura
Beginner
718 Views
Steve, An news on this issue? I'm getting heat from "up above" about having spent resources developing coarray code, yet not being able to provide it to customers. David
0 Kudos
Steven_L_Intel1
Employee
718 Views
Sorry, not yet. I am out of the office this week (at IDF), but I will see if I can get the answer for you.
0 Kudos
Lorri_M_Intel
Employee
718 Views
Hi David - Did you install the 'redist' kit on your target system? For coarrays, we need to have [at least] a subset of MPI available, even beyond the impimt.dll. The very first thing your program does is to invoke mpiexec on itself, so if it can't find mpiexec, you could get this error. In fact, I was able to reproduce this : Create process failed ERROR_code=2 by "hiding" my copy of mpiexec.exe -- Lorri
0 Kudos
David_DiLaura
Beginner
718 Views
Lorri, No I did not -- surely that is the problem! We have never had to provide that for external users of our Fortran-compiled software in the past. But, apparently, we'll need to do that if we're going to distribute coarray programs. Many thanks for you help. David
0 Kudos
Reply