Checking in some bug fixes.
This commit was SVN r1582.
Этот коммит содержится в:
родитель
fbae1d86c8
Коммит
4c751a6b23
@ -58,6 +58,7 @@ mca_ptl_elan_add_procs (struct mca_ptl_t *ptl,
|
||||
int rc;
|
||||
int i;
|
||||
|
||||
/* Here nprocs is the number of peer processes */
|
||||
for (i = 0; i < nprocs; i++) {
|
||||
|
||||
ompi_proc = procs[i];
|
||||
@ -82,6 +83,11 @@ mca_ptl_elan_add_procs (struct mca_ptl_t *ptl,
|
||||
return OMPI_ERR_UNREACH;
|
||||
}
|
||||
|
||||
if (ptl_proc == mca_ptl_elan_module.elan_local) {
|
||||
OMPI_THREAD_UNLOCK (&ptl_proc->proc_lock);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* The ptl_proc datastructure is shared by all PTL
|
||||
* instances that are trying to reach this destination.
|
||||
* Cache the peer instance on the ptl_proc.
|
||||
@ -94,16 +100,16 @@ mca_ptl_elan_add_procs (struct mca_ptl_t *ptl,
|
||||
__FILE__, __LINE__);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
ptl_peer->peer_ptl = (mca_ptl_elan_t *) ptl;
|
||||
|
||||
rc = mca_ptl_elan_proc_insert (ptl_proc, ptl_peer);
|
||||
if (rc != OMPI_SUCCESS) {
|
||||
OBJ_RELEASE (ptl_peer);
|
||||
OMPI_THREAD_UNLOCK (&ptl_proc->proc_lock);
|
||||
ompi_output (0, "[%s:%d] unabled to insert ptl_peer \n",
|
||||
__FILE__, __LINE__);
|
||||
return rc;
|
||||
}
|
||||
ptl_peer->peer_ptl = (mca_ptl_elan_t *) ptl;
|
||||
ptl_peer->peer_proc = ptl_proc;
|
||||
ptl_proc->proc_peers[ptl_proc->proc_peer_count] = ptl_peer;
|
||||
ptl_proc->proc_peer_count++;
|
||||
|
||||
/* XXX XXX: There might be no order on this ptl_proc's,
|
||||
* But one-to-one corresponding is still there */
|
||||
ptl_peer->peer_addr = ptl_proc->proc_addrs + i;
|
||||
ptl_peer->peer_addr->addr_inuse++;
|
||||
ompi_bitmap_set_bit (reachable, i);
|
||||
|
||||
OMPI_THREAD_UNLOCK (&ptl_proc->proc_lock);
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include "ptl_elan_req.h"
|
||||
#include "ptl_elan_priv.h"
|
||||
|
||||
#define UNIT_TESTING 1
|
||||
/*#define UNIT_TESTING 1*/
|
||||
|
||||
mca_ptl_elan_module_1_0_0_t mca_ptl_elan_module = {
|
||||
{
|
||||
|
@ -85,8 +85,10 @@ mca_ptl_elan_proc_create (ompi_proc_t * ompi_proc)
|
||||
mca_ptl_elan_proc_t *ptl_proc;
|
||||
|
||||
ptl_proc = mca_ptl_elan_proc_lookup_ompi (ompi_proc);
|
||||
if (ptl_proc != NULL)
|
||||
|
||||
if (ptl_proc != NULL) {
|
||||
return ptl_proc;
|
||||
}
|
||||
|
||||
ptl_proc = OBJ_NEW (mca_ptl_elan_proc_t);
|
||||
ptl_proc->proc_ompi = ompi_proc;
|
||||
@ -185,7 +187,9 @@ mca_ptl_elan_proc_insert (mca_ptl_elan_proc_t * ptl_proc,
|
||||
|
||||
ptl_elan = ptl_peer->peer_ptl;
|
||||
ptl_peer->peer_proc = ptl_proc;
|
||||
ptl_proc->proc_peers[ptl_proc->proc_peer_count++] = ptl_peer;
|
||||
|
||||
ptl_proc->proc_peers[ptl_proc->proc_peer_count] = ptl_peer;
|
||||
ptl_proc->proc_peer_count++;
|
||||
|
||||
/* Look through the proc instance for an address that is on the
|
||||
* directly attached network. If we don't find one, pick the first
|
||||
@ -198,6 +202,7 @@ mca_ptl_elan_proc_insert (mca_ptl_elan_proc_t * ptl_proc,
|
||||
mca_ptl_elan_addr_t *peer_addr;
|
||||
|
||||
peer_addr = ptl_proc->proc_addrs + i;
|
||||
|
||||
if (peer_addr->addr_inuse != 0) {
|
||||
continue;
|
||||
}
|
||||
@ -205,12 +210,8 @@ mca_ptl_elan_proc_insert (mca_ptl_elan_proc_t * ptl_proc,
|
||||
vp_local = ptl_elan->elan_vp;
|
||||
vp_remote = peer_addr->elan_vp;
|
||||
|
||||
if (vp_local = vp_remote) {
|
||||
ptl_peer->peer_addr = peer_addr;
|
||||
break;
|
||||
} else if (ptl_peer->peer_addr != 0) {
|
||||
ptl_peer->peer_addr = peer_addr;
|
||||
}
|
||||
assert (vp_local != vp_remote);
|
||||
ptl_peer->peer_addr = peer_addr;
|
||||
}
|
||||
|
||||
ptl_peer->peer_addr->addr_inuse++;
|
||||
|
@ -26,7 +26,7 @@ qsnet_rdma: qsnet_rdma.c
|
||||
$(CC) -g $(AM_CPPFLAGS) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lmpi -pthread -lm -lmca_ptl_elan
|
||||
|
||||
mpitest: mpi_test.c
|
||||
$(CC) -I${HOME}/installs/openmpi/include -L${HOME}/installs/openmpi/lib -o mpitest mpi_test.c -lmpi
|
||||
${HOME}/installs/openmpi/bin/mpicc -g -o mpitest mpi_test.c
|
||||
|
||||
clean:
|
||||
-rm -rf $(EXECS)
|
||||
|
@ -5,9 +5,13 @@
|
||||
int main (int argc, char ** argv)
|
||||
{
|
||||
int proc, nproc;
|
||||
|
||||
/* Get some environmental variables set for Open MPI, OOB */
|
||||
env_init_for_elan();
|
||||
|
||||
proc = 0;
|
||||
/*while (proc < 1) ;*/
|
||||
|
||||
MPI_Init(&argc, &argv);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &proc);
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &nproc);
|
||||
|
@ -15,9 +15,10 @@ static void env_init_for_elan()
|
||||
if ( strcmp("quad0", hostname) == 0) {
|
||||
fprintf(stdout, "I am %s rank %d\n", hostname, 0);
|
||||
fflush(stdout);
|
||||
setenv("OMPI_MCA_pcm_cofs_procid", "1", 0);
|
||||
setenv("OMPI_MCA_pcm_cofs_procid", "0", 1);
|
||||
} else {
|
||||
fprintf(stdout, "I am %s rank %d\n", hostname, 1);
|
||||
fflush(stdout);
|
||||
setenv("OMPI_MCA_pcm_cofs_procid", "1", 1);
|
||||
}
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user