|Thanks. I will try your suggestions and get back to you as soon as possible.|
--- On Tue, 8/18/09, Eugene Loh <Eugene.Loh@sun.com> wrote:
From: Eugene Loh <Eugene.Loh@sun.com>
Subject: Re: [OMPI users] MPI loop problem
To: "Open MPI Users" <firstname.lastname@example.org>
Date: Tuesday, August 18, 2009, 2:38 PM
Is the problem independent of the the number of MPI processes? (You
suggest this is the case.)
If so, does this problem show up even with np=1 (a single MPI process)?
If so, does the problem show up even if you turn MPI off?
If so, the problem would seem to be unrelated to the MPI implementation
(but possibly related to code that was introduced to parallelize).
Julia He wrote:
|The OpenMPI version is
[julia.he@bob bin]$ mpirun --version
mpirun (Open MPI) 1.2.8
Report bugs to http://www.open-mpi.org/community/help/
The platform is
[julia.he@bob bin]$ uname -a
Linux bob.csi.cuny.edu 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:32:05
EDT 2008 x86_64 x86_64 x86_64 GNU/Linux
The my_sub is a modification of Radiative Transfer code 6S.
http://6s.ltdri.org/ The 6S code takes angles, atmospheric conditions,
altitude, etc as inputs, and it returns top of the atmosphere
reflectance as the output. The code I provided is a pseudo code because
6S code consists of plenty of subroutines and the main program has 3219
What I need is to use MPI to parallel the jobs. So, each computing node
computes one set of the inputs. But I found that the returned value
were not correct after 570 instances. So, I passed the same inputs to
each computing node. But the problem still exist. The first 570
returned values are correct(also same in this case), but after 570 the
returned values are NaN.
Can someone give a hint because our system administrator can't help
with programming? But, I suspect if some setting in MPI prevents
computing more than certain times? I know it sounds weird. But I have
no clue why with the same inputs the returned value could be garbage
after 570 instances.
Tue, Aug 18, 2009 at 8:28 AM, Julia He <email@example.com>
|I found that the subroutine call inside a loop did not
return correct value after certain iterations. In order to simplify the
problem, the inputs to the subroutine are chosen to be constant, so the
output should be the same for every iteration on every computing node.
It is a fortran program, after the initialization the program goes like
do i = 1, N
call my_sub(A, B, C, re)
print *, mypn, A, B, C, re
where re is the output value of the my_sub, A, B, C are inputs to
is the number of correct iterations. If the combined instances does not
exceed 570, the output is fine. For example, if I requested 10
computing nodes and N were 40, so it gives 10*40=400 instances, the
output would be fine. But if the combined instances exceeded 570, the
first 570 is fine, but the rest will return NaN value. For example, if
the number of computing nodes were 20 and N were 40, which gives
20*40=800 instances, then the first 570 are fine, but the rest are NaN
-----Inline Attachment Follows-----