Two questions:
1) Is there any possibility that collectives (eg, MPI_Bcast) over
inercommunicators will be supported any time soon?
2) Apparently using the merge process (MPI_INTERCOMM_MERGE) is the
workaround until such time that collectives become supported.
I am unable, in a test mode, to get the merge process to function;
the intracommunicator returned with the call is assigned a value of
-1. Compressed files containing the test programs are attached.
The laminfo follows:
(bash) lobo.pts/3% laminfo
LAM/MPI: 7.0.5
Prefix: /usr
Architecture: i686-pc-linux-gnu
Configured by: jsquyres
Configured on: Tue Apr 27 08:37:09 EST 2004
Configure host: eddie.osl.iu.edu
C bindings: yes
C++ bindings: yes
Fortran bindings: yes
C profiling: yes
C++ profiling: yes
Fortran profiling: yes
ROMIO support: yes
IMPI support: no
Debug support: no
Purify clean: no
SSI boot: globus (Module v0.5)
SSI boot: rsh (Module v1.0)
SSI coll: lam_basic (Module v7.0)
SSI coll: smp (Module v1.0)
SSI rpi: crtcp (Module v1.0.1)
SSI rpi: lamd (Module v7.0)
SSI rpi: sysv (Module v7.0)
SSI rpi: tcp (Module v7.0)
SSI rpi: usysv (Module v7.0)
------------------------------
lamnodes:
(bash) lobo.pts/3% lamnodes
n0 lobo01:1:origin,this_node
n1 lobo02:1:
n2 lobo03:1:
n3 lobo04:1:
-------------------------------
The programs are compiled using lf95:
(bash) lobo.pts/3% mpif77 -g spawn_test4.f90 -o spawn_test4.ex
-R/usr/local/lf95/lib -lpthread
f95: warning: -pthread cannot be specified.
Encountered 0 errors, 0 warnings in file spawn_test4.f90.
(bash) lobo.pts/3% mpif77 -g comm_test4.f90 -o comm_test4.ex
-R/usr/local/lf95/lib -lpthread
f95: warning: -pthread cannot be specified.
Encountered 0 errors, 0 warnings in file comm_test4.f90.
----------------------------
Running the program spawn_test4.ex produces the following result:
(bash) lobo.pts/3% mpiexec -n 1 spawn_test4.ex
Parent: spawn loc 1 processor name=lobo.cr.usgs.gov, process_id= 0
input number of child processes
2
Parent: childcomm is an intercommunicator
child: parentcomm is an intercommunicator
child: parentcomm= 48 group= 32
child: processor name=lobo.cr.usgs.gov child rank= 0 child size= 2
parentcomm= 48
Parent: childcomm remote size is 2
Parent: childcomm remote group is 49
child: parentcomm is an intercommunicator
child: parentcomm= 48 group= 32
child: processor name=lobo02 child rank= 1 child size= 2 parentcomm=
48
Parent: high= F new_intracomm= -1 ierr= 21
Parent: MPI_COMM_WORLD= 0 spawn loc 2 processor name=lobo.cr.usgs.gov
childcomm= 48
---------------------------
The general layout of the parent program (spawn_test4.f90) is to spawn
process:
call MPI_COMM_SPAWN('comm_test4.ex', MPI_ARGV_NULL, numchildern, &
MPI_INFO_NULL, parent, MPI_COMM_WORLD, &
childcomm, MPI_ERRCODES_IGNORE, ierr)
and then to merge thse processes into an intracommunicator:
call MPI_INTERCOMM_MERGE(childcomm, high, new_intracomm, ierr)
print*,"Parent: high=",high," new_intracomm=",new_intracomm, &
" ierr=",ierr
It is the last step that produces the intracommunicator with a value
-1 and error code of 21. The child program is comm_test4.f90.
I would be appreciative of any help that you might render.
--
Rich Naff
U.S. Geological Survey
MS 413 Box 25046
Denver, CO 80225 USA
telephone: (303) 236-4986
Email: rlnaff_at_[hidden]
|