Hi,
Thanks for prompt replies for my prior posts to this
list.
I am presently trying to create a threaded + MPI
application. I went through the previous postings
related to the subject. I have a few questions, could
someone please help answer them?
1) I saw some "teasers" which lead me to believe that
LAM MPI might be thread safe in an immediate future
version. I haven't seen any further postings regarding
the same. Is there a thread safe LAM-MPI version?
2) What would I need to be aware of with regards to
the portablity of a code ( using threads+ Lam/MPI) to
other Operating Systems?
3) One of the postings had a sample code
("http://www.lam-mpi.org/MailArchives/lam/msg04037.php").
I tried running the code on my machine, requesting and
getting MPI_THREAD_SERIALIZE. It hangs ( the non MPI
thread comes out, the other one just hangs). Could
someone tell me what I need to do to make sure the
code executes correctly? SERIALIZE would take care of
the locking and unlocking for every MPI call - is that
correct? So it is not a deadlock issue, correct? Why
then does it hang? The configuration Im using is:
OS:
Linux vkannan 2.4.21-4.EL #1 Fri Oct 3 18:13:58 EDT
2003 i686 i686 i386 GNU/Linux
GCC/THREADS:
[vkannan_at_vkannan lam-7.0.6]$ rpm -qa | egrep
'gcc|glib'
glibc-headers-2.3.2-95.3
gcc-ssa-3.5ssa-0.20030801.41
compat-gcc-c++-7.3-2.96.122
glibc-common-2.3.2-95.3
glib-1.2.10-11.1
glibc-profile-2.3.2-95.3
glibc-kernheaders-2.4-8.34
glibc-devel-2.3.2-95.3
gcc-c++-3.2.3-20
gcc-c++-ssa-3.5ssa-0.20030801.41
compat-glibc-7.x-2.2.4.32.5
compat-gcc-7.3-2.96.122
libgcc-3.2.3-20
glibc-2.3.2-95.3
glib2-2.2.3-2.0
libgcc-ssa-3.5ssa-0.20030801.41
glibc-utils-2.3.2-95.3
gcc-3.2.3-20
LAM:
LAM/MPI: 7.0.6
Prefix: /home/vkannan/lam-7.0.6/
Architecture: i686-pc-linux-gnu
Configured by: vkannan
Configured on: Tue Nov 2 09:23:23 CST 2004
Configure host: fpdev
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)
4) Is reinstalling LinuxThreads with SIGUSR1 &
SIGUSR2 turned off mandatory? (The posts regarding the
same were mainly from the year 1998)
5) I am using LAM 7.0.6. Do I still need to go in and
add the thread flags for compilation ( -D_REENTRANT
and -lpthreads )? It seems the flags for threads are
included by default in version 7.0.6. Also if I need
to reinstall linuxthreads with SIGUSR1&2 turned off,
then do I need to point to the different library
(-pthread vx -lpthread?
6) I am wondering if the following design can be
implemented with the present version of LAM without
any ( little) impact of performance. What issues would
I have to be careful of in terms of performance?
Why I need threads is I am creating is a framework
for application-level fault tolerance/ dynamic
addition( & removal) of nodes at the application
level. LAMs fault tolerant capabilities are
considerable ( especially with regards to node
failure) but I need additional functionality.
Right now I have 2 MPI execs B, C launched via a
appschema file. To add ( robust) fault tolerance and
other capabilities I plan to redesign by adding a
daemon app A as follows.
I will have 3 execs A,B,C. B & C's existing logic
will be forked off as their business-logic thread(
only MPI calls used in this thread will be Non
blocking sends and receives + test + wait) and a
control thread( for all dynamic MPI calls, fault
tolerance via regular messaging, communication of
new-node addition( /new instance creation on the added
node) via lamgrow etc). I want to launch B & C from
A's control thread using MPISpawn. The control threads
in B & C will MPIConnect to a name published by A's
control thread. B's control thread will publish and
accept a connect from C's control thread. B & C will
communicate with each other on the Businesslogic
thread, and communicate with A on the control thread.
I plan to use MPI_THREAD_SERIALIZE. Can the above
design be accomplished with little or no performance
degradation? Could there be issues with scaling the
above design? What issues will I have to be aware of
considering Im using MPI_THREAD_SERIALIZE? Could
someone with knowledge/experience with using threads
with MPI point me in the right direction?
Thank you
New Lam User
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
|