1
1
This commit was SVN r1582.
Этот коммит содержится в:
Weikuan Yu 2004-07-07 23:01:55 +00:00
родитель fbae1d86c8
Коммит 4c751a6b23
6 изменённых файлов: 32 добавлений и 20 удалений

Просмотреть файл

@ -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);
}
}