First, the MPICH2 configure system believes that the IBM XL compiler does not support weak aliases (which it does). I think that it worked in 1.0.4, but it doesn't in 1.0.7 or later. That isn't a big problem, but causes this other error: "MPIR_Barrier_or_coll_fn" doesn't exist in any library. This is the function declaration:<div>
<div>PMPI_LOCAL inline int MPIR_Barrier_or_coll_fn(MPID_Comm *comm_ptr )</div><div><br></div></div><div>For our XL-based build (static only), barrier.c is compiled twice & the relevant symbol dumps are below.<br> + barrier.o with PMPI_Barrier() as a real function that calls out to various helper functions, such as MPIR_Barrier, which are also in the file.<br>
+ _barrier.o with MPI_Barrier() as a real function (same as above, only the name changed) that calls out to various helper functions, such as MPIR_Barrier, which are NOT in the file, as they are #ifdef'ed out of the source code used to do the compile.<br>
<br>(P)MPI_Barrier() calls "MPIR_Barrier_or_coll_fn", whose source code was removed from the barrier.o file. There is no out-of-line version, since it is supposed to be an inline. We were able to fix the problem by removing the "inline". This seems like the right choice, though it would be possible to move the function so that the code is included in both versions.</div>
<div><br></div><div><br></div><div><div><b><font face="'courier new', monospace">_barrier.o:</font></b></div><div><font color="#ff0000"><b><font face="'courier new', monospace">00000000 T MPI_Barrier</font></b></font></div>
<div><font face="'courier new', monospace"> U MPID_Comm_builtin</font></div><div><font face="'courier new', monospace"> U MPID_Comm_direct</font></div>
<div><font face="'courier new', monospace"> U MPID_Comm_mem</font></div><div><font face="'courier new', monospace"> U MPIR_Barrier</font></div>
<div><font face="'courier new', monospace"> U MPIR_Barrier_inter</font></div><div><b><font color="#ff0000"><font face="'courier new', monospace"> U MPIR_Barrier_or_coll_fn</font></font></b></div>
<div><font face="'courier new', monospace"> U MPIR_Bcast_or_coll_fn</font></div>
<div><font face="'courier new', monospace"> U MPIR_Comm_is_node_aware</font></div><div><font face="'courier new', monospace"> U MPIR_Err_return_comm</font></div>
<div><font face="'courier new', monospace"> U MPIR_ThreadInfo</font></div><div><font face="'courier new', monospace"> U MPIR_ThreadSingle</font></div>
<div><font face="'courier new', monospace"> U MPIU_Handle_get_ptr_indirect</font></div><div><font face="'courier new', monospace"> U pthread_getspecific</font></div>
<div><font face="'courier new', monospace"> U pthread_setspecific</font></div><div><font face="'courier new', monospace"><br></font></div><div><b><font face="'courier new', monospace">barrier.o:</font></b></div>
<div><font face="'courier new', monospace"> U MPIC_Sendrecv</font></div><div><font face="'courier new', monospace"> U MPID_Comm_builtin</font></div>
<div><font face="'courier new', monospace"> U MPID_Comm_direct</font></div><div><font face="'courier new', monospace"> U MPID_Comm_mem</font></div>
<div><font face="'courier new', monospace">00000000 T MPIR_Barrier</font></div><div><font face="'courier new', monospace">00000180 T MPIR_Barrier_inter</font></div>
<div><font face="'courier new', monospace"> U MPIR_Bcast_inter</font></div><div><font face="'courier new', monospace"> U MPIR_Bcast_or_coll_fn</font></div>
<div><font face="'courier new', monospace"> U MPIR_Comm_is_node_aware</font></div><div><font face="'courier new', monospace"> U MPIR_Err_create_code</font></div>
<div><font face="'courier new', monospace"> U MPIR_Err_return_comm</font></div><div><font face="'courier new', monospace"> U MPIR_Setup_intercomm_localcomm</font></div>
<div><font face="'courier new', monospace"> U MPIR_ThreadInfo</font></div><div><font face="'courier new', monospace"> U MPIR_ThreadSingle</font></div>
<div><font face="'courier new', monospace"> U MPIU_Handle_get_ptr_indirect</font></div><div>
<b><font color="#ff0000"><font face="'courier new', monospace">000003a0 T PMPI_Barrier</font></font></b></div><div><font face="'courier new', monospace"> U pthread_getspecific</font></div>
<div><font face="'courier new', monospace"> U pthread_setspecific</font></div><div><br></div><div><br></div><div>Thanks,</div><div>
Joe Ratterman</div><div><a href="mailto:jratt@us.ibm.com" target="_blank">jratt@us.ibm.com</a></div><div><br></div></div>