I am trying to use an MPI profiling library with executables that have been built using Intel MPI. This particular library (Darshan 2.2.0-pre1) can be preloaded with LD_PRELOAD to intercept I/O related MPI function calls. It provides a wrapper for each function of interest to collect statistics and then invokes the PMPI version of each function so that the program operates as usual.
Everything works great with C programs or C++ programs, whether I use the Intel compilers or GNU compilers.
Unfortunately, I am having problems with Fortran. My main concern is with programs built with the Intel Fortran compiler, using either "mpiifort" or "mpif90 -fc=ifort". The executables work fine, but when I try to use the LD_PRELOAD'ed Darshan library it fails to intercept the underlying MPI calls. In fact, I can't even find any MPI functions in the symbols for the executable using gdb or nm, though obviously MPI is working fine in my test program.
Can someone help me figure out what I am doing wrong? Is there any way to intercept the MPI calls at run time from a Fortran program built using the Intel MPI suite?
To my knowledge this approach usuually works fine for Fortran programs built using MPI libraries based on MPICH or OpenMPI, although at least in the former case you normally have to preload an additional library (like libfmpich.so) for it to work properly. I tried preloading a few of the Intel .so libraries before the Darshan library in case there was a similar issue with the Intel suite, but I did not have any luck.