0

I getting a crash inside MPI_COMM_SPAWN_MULTIPLE when using the Intel MPI implementation and compiling the code with ifort. The same code works without a problem using OpenMPI and compiling with gfortran. The relevant code is posted below.

     ALLOCATE(commands(num_processes - 1))
     ALLOCATE(args(num_processes - 1,2))
     ALLOCATE(info(num_processes - 1))
     ALLOCATE(max_procs(num_processes - 1))
     ALLOCATE(error_array(num_processes - 1))

     commands = TRIM(context%cl_parser%command)

     args(:,1) = temp_string
     IF (num_threads .lt. 0) THEN
        args(:,2) = '-para=-1'
     ELSE IF (num_threads .lt. 10) THEN
        WRITE (temp_string, 1001) num_threads
        args(:,2) = TRIM(temp_string)
     ELSE
        WRITE (temp_string, 1002) num_threads
        args(:,2) = TRIM(temp_string)
     END IF

     max_procs = 1

     DO i = 2, num_processes
        CALL MPI_INFO_CREATE(info(i - 1), error)
        CALL MPI_INFO_SET(info(i - 1), "wdir", process_dir(i),             &
 &                        error)
     END DO

     CALL MPI_COMM_SPAWN_MULTIPLE(num_processes - 1, commands, args,       &
 &                                max_procs, info, 0,                      &
 &                                MPI_COMM_WORLD, child_comm,              &
 &                                error_array, error)

     CALL MPI_INTERCOMM_MERGE(child_comm, .false.,                         &
 &                            context%intra_comm, error)

     DO i = 1, num_processes - 1
        CALL MPI_INFO_FREE(info(i), error)
     END DO

     DEALLOCATE(info)
     DEALLOCATE(max_procs)
     DEALLOCATE(args)
     DEALLOCATE(commands)
     DEALLOCATE(error_array)
nhahtdh
  • 55,989
  • 15
  • 126
  • 162
user1139069
  • 1,505
  • 2
  • 15
  • 27
  • 1
    And you're quite sure that you are (a) compiling with Intel compiler, (b) linking the Intel MPI libraries (static), (c) using the Intel implementation of `mpiexec` and (d) loading the Intel MPI libraries (dynamic) aren't you ? – High Performance Mark Sep 02 '14 at 15:07
  • a) I'm definitely sure it's using ifort I'm compiling with ifort. bd) the crash that I get when running `0x00002aaaaade1304 in pmpi_comm_spawn_multiple__ () from /usr/local/intel/impi/3.2.0.011/lib64/libmpigf.so.3.2` c) I'm not using `mpi_exec` because I'm spawning processes manually. – user1139069 Sep 02 '14 at 19:15
  • And you're quite sure that `libmpigf.so` isn't the library for linking gfortran-compiled executables with the Intel MPI run-time aren't you ? I'll confess I'm not sure myself but have a sneaking suspicion your code should be loading `libmpiif.so`. – High Performance Mark Sep 03 '14 at 11:04
  • I getting the same error with `libmpiif.so`. `0x00002aaaaadeb304 in pmpi_comm_spawn_multiple__ () from /usr/local/intel/impi/3.2.0.011/lib64/libmpiif.so.3.2` – user1139069 Sep 03 '14 at 16:02
  • I'd file a bug report with Intel, at least ask the question on one of the Intel Developer Zone fora. – High Performance Mark Sep 03 '14 at 22:54

0 Answers0