I cannot successfully run any coarray program using the Intel 64 target compiler on 17.0 update one with VS2015. Even the simplest program (just an END statement) results in an indefinite deadlock in WaitForSingleObjectEx across all processes created as part of running the coarray program.
17.0 initial release works, 17.0 update one IA-32 works.
The call chain from the executable to the WaitForSingleObjectEx in the call include libicaf.dll (17.0-001) and impimt.dll (2017.00.1.0), that were built in October, so I presume they are from update one. The call stack for the primary process has gone via for_rtl_ICAF_LAUNCH, while the secondary processes have gone via main then for_rtl_init.
I am stumped.
Escalated as DPD200416079. So far, I haven't been able to figure out which piece changing triggers the problem. I can take a 17.0.1-built EXE and run it in a 17.0.0 build environment, and it works fine. But if I add the paths to the Fortran and MPI DLLs from 17.0.0 to a 17.0.1 environment, it hangs. We'll get to the bottom of this soon.
On Windows, at least, if you replace the impimt.dll in the 17.0.1 folder (C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.1.143\windows\mpi\intel64\bin) with the one from 17.0.0, it fixes the hang issue. You'll also want to replace the one in C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\mpirt
I am extremely puzzled that we didn't catch this during our usual product verification testing and am asking some pointed questions right now...
The same general workaround probably works on Linux as well (it would be a .so file).
A fixed library is targeted for Intel MPI 2017.0.2 and for the Intel Fortran Compiler 17.0.2 in the appropriate editions of Intel Parallel Studio XE 2017 update 2.
It will be some weeks before it's available for download, though. In the meantime, you should be able to set the environment variable
as a workaround.