<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 20/4/2014 1:02 AM, Matthew Knepley
wrote:<br>
</div>
<blockquote
cite="mid:CAMYG4G=AYrDmnHHAa=cMy=k5UxgxM9OG0=UhPVmyvZcQvZR19Q@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Sat, Apr 19, 2014 at 10:49 AM, TAY
wee-beng <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>On 19/4/2014 11:39 PM, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Sat, Apr 19, 2014 at
10:16 AM, TAY wee-beng <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:zonexo@gmail.com"
target="_blank">zonexo@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>On 19/4/2014 10:55 PM, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Sat, Apr
19, 2014 at 9:14 AM, TAY wee-beng <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:zonexo@gmail.com"
target="_blank">zonexo@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div text="#000000"
bgcolor="#FFFFFF">
<div>On 19/4/2014 6:48 PM,
Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On
Sat, Apr 19, 2014 at
4:59 AM, TAY wee-beng <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div>
<div>On 19/4/2014
1:17 PM, Barry
Smith wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
On Apr 19, 2014,
at 12:11 AM, TAY
wee-beng <<a
moz-do-not-send="true" href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>>
wrote:<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
On 19/4/2014
12:10 PM,
Barry Smith
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
On Apr 18,
2014, at 9:57
PM, TAY
wee-beng <<a
moz-do-not-send="true" href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>>
wrote:<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
On 19/4/2014
3:53 AM, Barry
Smith wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hmm,<br>
<br>
Interface
DMDAVecGetArrayF90<br>
Subroutine
DMDAVecGetArrayF903(da1,
v,d1,ierr)<br>
USE_DM_HIDE<br>
DM_HIDE da1<br>
VEC_HIDE v<br>
PetscScalar,pointer
:: d1(:,:,:)<br>
PetscErrorCode
ierr<br>
End
Subroutine<br>
<br>
So the d1
is a F90
POINTER. But
your
subroutine
seems to be
treating it as
a “plain old
Fortran
array”?<br>
real(8),
intent(inout)
::
u(:,:,:),v(:,:,:),w(:,:,:)<br>
</blockquote>
</blockquote>
</blockquote>
Hi,<br>
<br>
So d1 is a
pointer, and
it's different
if I declare
it as "plain
old Fortran
array"?
Because I
declare it as
a Fortran
array and it
works w/o any
problem if I
only call
DMDAVecGetArrayF90
and
DMDAVecRestoreArrayF90
with "u".<br>
<br>
But if I call
DMDAVecGetArrayF90
and
DMDAVecRestoreArrayF90
with "u", "v"
and "w", error
starts to
happen. I
wonder why...<br>
<br>
Also, supposed
I call:<br>
<br>
call
DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
u_array ....<br>
<br>
v_array ....
etc<br>
<br>
Now to restore
the array,
does it matter
the sequence
they are
restored?<br>
</blockquote>
No it should
not matter. If
it matters that
is a sign that
memory has been
written to
incorrectly
earlier in the
code.<br>
<br>
</blockquote>
</div>
</div>
Hi,<br>
<br>
Hmm, I have been
getting different
results on different
intel compilers. I'm
not sure if MPI played
a part but I'm only
using a single
processor. In the
debug mode, things run
without problem. In
optimized mode, in
some cases, the code
aborts even doing
simple initialization:
<div> <br>
<br>
call
DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
</div>
call
DMDAVecGetArrayF90(da_p,p_local,p_array,ierr)<br>
<br>
u_array = 0.d0<br>
<br>
v_array = 0.d0<br>
<br>
w_array = 0.d0<br>
<br>
p_array = 0.d0<br>
<br>
<br>
call
DMDAVecRestoreArrayF90(da_p,p_local,p_array,ierr)
<div><br>
<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
</div>
The code aborts at
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr),
giving segmentation
error. But other
version of intel
compiler passes thru
this part w/o error.
Since the response is
different among
different compilers,
is this PETSc or intel
's bug? Or mvapich or
openmpi?</blockquote>
<div><br>
</div>
<div>We do this is a
bunch of examples. Can
you reproduce this
different behavior in
src/dm/examples/tutorials/ex11f90.F?</div>
</div>
</div>
</div>
</blockquote>
<br>
Hi Matt,<br>
<br>
Do you mean putting the above
lines into ex11f90.F and test?<br>
</div>
</blockquote>
<div><br>
</div>
<div>It already has
DMDAVecGetArray(). Just run it.</div>
</div>
</div>
</div>
</blockquote>
<br>
Hi,<br>
<br>
It worked. The differences between mine and
the code is the way the fortran modules are
defined, and the ex11f90 only uses global
vectors. Does it make a difference whether
global or local vectors are used? Because
the way it accesses x1 only touches the
local region.<br>
</div>
</blockquote>
<div><br>
</div>
<div>No the global/local difference should not
matter.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Also,
before using DMDAVecGetArrayF90,
DMGetGlobalVector must be used 1st, is that
so? I can't find the equivalent for local
vector though.<br>
</div>
</blockquote>
<div><br>
</div>
<div>DMGetLocalVector()</div>
</div>
</div>
</div>
</blockquote>
<br>
Ops, I do not have DMGetLocalVector and
DMRestoreLocalVector in my code. Does it matter? <br>
<br>
If so, when should I call them?<br>
</div>
</blockquote>
<div><br>
</div>
<div>You just need a local vector from somewhere.</div>
</div>
</div>
</div>
</blockquote>
Hi,<br>
<br>
I insert part of my error region code into ex11f90:<br>
<br>
call DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call DMDAVecGetArrayF90(da_p,p_local,p_array,ierr)<br>
<br>
u_array = 0.d0<br>
<br>
v_array = 0.d0<br>
<br>
w_array = 0.d0<br>
<br>
p_array = 0.d0<br>
<br>
call DMDAVecRestoreArrayF90(da_p,p_local,p_array,ierr)<br>
<br>
call DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
It worked w/o error. I'm going to change the way the modules are
defined in my code.<br>
<br>
My code contains a main program and a number of modules files, with
subroutines inside e.g.<br>
<br>
module solve<br>
<- add include file?<br>
subroutine RRK<br>
<- add include file?<br>
end subroutine RRK<br>
<br>
end module solve<br>
<br>
So where should the include files (#include
<finclude/petscdmda.h90>) be placed?<br>
<br>
After the module or inside the subroutine?<br>
<br>
Thanks.<br>
<blockquote
cite="mid:CAMYG4G=AYrDmnHHAa=cMy=k5UxgxM9OG0=UhPVmyvZcQvZR19Q@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Thanks.<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Thanks.<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div text="#000000"
bgcolor="#FFFFFF"> Thanks<br>
<br>
Regards.<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div>
<div>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
As in w, then
v and u?<br>
<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
thanks<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Note also
that the
beginning and
end indices of
the u,v,w, are
different for
each process
see for
example <a
moz-do-not-send="true"
href="http://www.mcs.anl.gov/petsc/petsc-3.4/src/dm/examples/tutorials/ex11f90.F"
target="_blank">http://www.mcs.anl.gov/petsc/petsc-3.4/src/dm/examples/tutorials/ex11f90.F</a>
(and they do
not start at
1). This is
how to get the
loop bounds.<br>
</blockquote>
Hi,<br>
<br>
In my case, I
fixed the
u,v,w such
that their
indices are
the same. I
also checked
using
DMDAGetCorners
and
DMDAGetGhostCorners.
Now the
problem lies
in my
subroutine
treating it as
a “plain old
Fortran
array”.<br>
<br>
If I declare
them as
pointers,
their indices
follow the C 0
start
convention, is
that so?<br>
</blockquote>
Not
really. It is
that in each
process you
need to access
them from the
indices
indicated by
DMDAGetCorners()
for global
vectors and
DMDAGetGhostCorners()
for local
vectors. So
really C or
Fortran
doesn’t make
any
difference.<br>
<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
So my problem
now is that in
my old MPI
code, the
u(i,j,k)
follow the
Fortran 1
start
convention. Is
there some way
to manipulate
such that I do
not have to
change my
u(i,j,k) to
u(i-1,j-1,k-1)?<br>
</blockquote>
If you code
wishes to
access them
with indices
plus one from
the values
returned by
DMDAGetCorners()
for global
vectors and
DMDAGetGhostCorners()
for local
vectors then
you need to
manually
subtract off
the 1.<br>
<br>
Barry<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Thanks.<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Barry<br>
<br>
On Apr 18,
2014, at 10:58
AM, TAY
wee-beng <<a
moz-do-not-send="true" href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>>
wrote:<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi,<br>
<br>
I tried to
pinpoint the
problem. I
reduced my job
size and hence
I can run on 1
processor.
Tried using
valgrind but
perhaps I'm
using the
optimized
version, it
didn't catch
the error,
besides saying
"Segmentation
fault (core
dumped)"<br>
<br>
However, by
re-writing my
code, I found
out a few
things:<br>
<br>
1. if I write
my code this
way:<br>
<br>
call
DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
u_array = ....<br>
<br>
v_array = ....<br>
<br>
w_array = ....<br>
<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
The code runs
fine.<br>
<br>
2. if I write
my code this
way:<br>
<br>
call
DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call
uvw_array_change(u_array,v_array,w_array)
-> this
subroutine
does the same
modification
as the above.<br>
<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)
-> error<br>
<br>
where the
subroutine is:<br>
<br>
subroutine
uvw_array_change(u,v,w)<br>
<br>
real(8),
intent(inout)
::
u(:,:,:),v(:,:,:),w(:,:,:)<br>
<br>
u ...<br>
v...<br>
w ...<br>
<br>
end subroutine
uvw_array_change.<br>
<br>
The above will
give an error
at :<br>
<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
3. Same as
above, except
I change the
order of the
last 3 lines
to:<br>
<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)<br>
<br>
So they are
now in
reversed
order. Now it
works.<br>
<br>
4. Same as 2
or 3, except
the subroutine
is changed to
:<br>
<br>
subroutine
uvw_array_change(u,v,w)<br>
<br>
real(8),
intent(inout)
::
u(start_indices(1):end_indices(1),start_indices(2):end_indices(2),start_indices(3):end_indices(3))<br>
<br>
real(8),
intent(inout)
::
v(start_indices(1):end_indices(1),start_indices(2):end_indices(2),start_indices(3):end_indices(3))<br>
<br>
real(8),
intent(inout)
::
w(start_indices(1):end_indices(1),start_indices(2):end_indices(2),start_indices(3):end_indices(3))<br>
<br>
u ...<br>
v...<br>
w ...<br>
<br>
end subroutine
uvw_array_change.<br>
<br>
The
start_indices
and
end_indices
are simply to
shift the 0
indices of C
convention to
that of the 1
indices of the
Fortran
convention.
This is
necessary in
my case
because most
of my codes
start array
counting at 1,
hence the
"trick".<br>
<br>
However, now
no matter
which order of
the
DMDAVecRestoreArrayF90
(as in 2 or
3), error will
occur at "call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)
"<br>
<br>
So did I
violate and
cause memory
corruption due
to the trick
above? But I
can't think of
any way other
than the
"trick" to
continue using
the 1 indices
convention.<br>
<br>
Thank you.<br>
<br>
Yours
sincerely,<br>
<br>
TAY wee-beng<br>
<br>
On 15/4/2014
8:00 PM, Barry
Smith wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Try running
under valgrind
<a
moz-do-not-send="true"
href="http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind"
target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind</a><br>
<br>
<br>
On Apr 14,
2014, at 9:47
PM, TAY
wee-beng <<a
moz-do-not-send="true" href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>>
wrote:<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi Barry,<br>
<br>
As I mentioned
earlier, the
code works
fine in PETSc
debug mode but
fails in
non-debug
mode.<br>
<br>
I have
attached my
code.<br>
<br>
Thank you<br>
<br>
Yours
sincerely,<br>
<br>
TAY wee-beng<br>
<br>
On 15/4/2014
2:26 AM, Barry
Smith wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Please send
the code that
creates da_w
and the
declarations
of w_array<br>
<br>
Barry<br>
<br>
On Apr 14,
2014, at 9:40
AM, TAY
wee-beng<br>
<<a
moz-do-not-send="true"
href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>><br>
wrote:<br>
<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi Barry,<br>
<br>
I'm not too
sure how to do
it. I'm
running mpi.
So I run:<br>
<br>
mpirun -n 4
./a.out
-start_in_debugger<br>
<br>
I got the msg
below. Before
the gdb
windows appear
(thru x11),
the program
aborts.<br>
<br>
Also I tried
running in
another
cluster and it
worked. Also
tried in the
current
cluster in
debug mode and
it worked too.<br>
<br>
mpirun -n 4
./a.out
-start_in_debugger<br>
--------------------------------------------------------------------------<br>
An MPI process
has executed
an operation
involving a
call to the<br>
"fork()"
system call to
create a child
process. Open
MPI is
currently<br>
operating in a
condition that
could result
in memory
corruption or<br>
other system
errors; your
MPI job may
hang, crash,
or produce
silent<br>
data
corruption.
The use of
fork() (or
system() or
other calls
that<br>
create child
processes) is
strongly
discouraged.<br>
<br>
The process
that invoked
fork was:<br>
<br>
Local host:
n12-76 (PID
20235)<br>
MPI_COMM_WORLD
rank: 2<br>
<br>
If you are
*absolutely
sure* that
your
application
will
successfully<br>
and correctly
survive a call
to fork(), you
may disable
this warning<br>
by setting the
mpi_warn_on_fork
MCA parameter
to 0.<br>
--------------------------------------------------------------------------<br>
[2]PETSC
ERROR: PETSC:
Attaching gdb
to ./a.out of
pid 20235 on
display
localhost:50.0
on machine
n12-76<br>
[0]PETSC
ERROR: PETSC:
Attaching gdb
to ./a.out of
pid 20233 on
display
localhost:50.0
on machine
n12-76<br>
[1]PETSC
ERROR: PETSC:
Attaching gdb
to ./a.out of
pid 20234 on
display
localhost:50.0
on machine
n12-76<br>
[3]PETSC
ERROR: PETSC:
Attaching gdb
to ./a.out of
pid 20236 on
display
localhost:50.0
on machine
n12-76<br>
[n12-76:20232]
3 more
processes have
sent help
message
help-mpi-runtime.txt
/
mpi_init:warn-fork<br>
[n12-76:20232]
Set MCA
parameter
"orte_base_help_aggregate"
to 0 to see
all help /
error messages<br>
<br>
....<br>
<br>
1<br>
[1]PETSC
ERROR:
------------------------------------------------------------------------<br>
[1]PETSC
ERROR: Caught
signal number
11 SEGV:
Segmentation
Violation,
probably
memory access
out of range<br>
[1]PETSC
ERROR: Try
option
-start_in_debugger
or
-on_error_attach_debugger<br>
[1]PETSC
ERROR: or see<br>
<a
moz-do-not-send="true"
href="http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[1]PETSC"
target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[1]PETSC</a>
ERROR: or try
<a
moz-do-not-send="true"
href="http://valgrind.org" target="_blank">http://valgrind.org</a><br>
on GNU/linux
and Apple Mac
OS X to find
memory
corruption
errors<br>
[1]PETSC
ERROR:
configure
using
--with-debugging=yes,
recompile,
link, and run<br>
[1]PETSC
ERROR: to get
more
information on
the crash.<br>
[1]PETSC
ERROR: User
provided
function()
line 0 in
unknown
directory
unknown file
(null)<br>
[3]PETSC
ERROR:
------------------------------------------------------------------------<br>
[3]PETSC
ERROR: Caught
signal number
11 SEGV:
Segmentation
Violation,
probably
memory access
out of range<br>
[3]PETSC
ERROR: Try
option
-start_in_debugger
or
-on_error_attach_debugger<br>
[3]PETSC
ERROR: or see<br>
<a
moz-do-not-send="true"
href="http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[3]PETSC"
target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[3]PETSC</a>
ERROR: or try
<a
moz-do-not-send="true"
href="http://valgrind.org" target="_blank">http://valgrind.org</a><br>
on GNU/linux
and Apple Mac
OS X to find
memory
corruption
errors<br>
[3]PETSC
ERROR:
configure
using
--with-debugging=yes,
recompile,
link, and run<br>
[3]PETSC
ERROR: to get
more
information on
the crash.<br>
[3]PETSC
ERROR: User
provided
function()
line 0 in
unknown
directory
unknown file
(null)<br>
<br>
...<br>
Thank you.<br>
<br>
Yours
sincerely,<br>
<br>
TAY wee-beng<br>
<br>
On 14/4/2014
9:05 PM, Barry
Smith wrote:<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Because IO
doesn’t always
get flushed
immediately it
may not be
hanging at
this point.
It is better
to use the
option
-start_in_debugger
then type cont
in each
debugger
window and
then when you
think it is
“hanging” do a
control C in
each debugger
window and
type where to
see where each
process is you
can also look
around in the
debugger at
variables to
see why it is
“hanging” at
that point.<br>
<br>
Barry<br>
<br>
This
routines don’t
have any
parallel
communication
in them so are
unlikely to
hang.<br>
<br>
On Apr 14,
2014, at 6:52
AM, TAY
wee-beng<br>
<br>
<<a
moz-do-not-send="true"
href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>><br>
<br>
wrote:<br>
<br>
<br>
<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi,<br>
<br>
My code hangs
and I added in
mpi_barrier
and print to
catch the bug.
I found that
it hangs after
printing "7".
Is it because
I'm doing
something
wrong? I need
to access the
u,v,w array so
I use
DMDAVecGetArrayF90.
After access,
I use
DMDAVecRestoreArrayF90.<br>
<br>
call
DMDAVecGetArrayF90(da_u,u_local,u_array,ierr)<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"3"<br>
call
DMDAVecGetArrayF90(da_v,v_local,v_array,ierr)<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"4"<br>
call
DMDAVecGetArrayF90(da_w,w_local,w_array,ierr)<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"5"<br>
call
I_IIB_uv_initial_1st_dm(I_cell_no_u1,I_cell_no_v1,I_cell_no_w1,I_cell_u1,I_cell_v1,I_cell_w1,u_array,v_array,w_array)<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"6"<br>
call
DMDAVecRestoreArrayF90(da_w,w_local,w_array,ierr)
!must be in
reverse order<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"7"<br>
call
DMDAVecRestoreArrayF90(da_v,v_local,v_array,ierr)<br>
call
MPI_Barrier(MPI_COMM_WORLD,ierr);
if (myid==0)
print *,"8"<br>
call
DMDAVecRestoreArrayF90(da_u,u_local,u_array,ierr)<br>
-- <br>
Thank you.<br>
<br>
Yours
sincerely,<br>
<br>
TAY wee-beng<br>
<br>
<br>
<br>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<code.txt><br>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<br>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<span><font
color="#888888"> <span><font
color="#888888">
<div><br>
</div>
-- <br>
What most
experimenters take
for granted before
they begin their
experiments is
infinitely more
interesting than
any results to
which their
experiments lead.<br>
-- Norbert Wiener
</font></span></font></span></div>
<span><font color="#888888">
</font></span></div>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> <br>
</font></span></div>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> <br>
<br clear="all">
<span class="HOEnZb"><font
color="#888888">
<div><br>
</div>
-- <br>
What most experimenters take
for granted before they begin
their experiments is
infinitely more interesting
than any results to which
their experiments lead.<br>
-- Norbert Wiener </font></span></font></span></div>
<span class="HOEnZb"><font
color="#888888"> </font></span></div>
<span class="HOEnZb"><font color="#888888">
</font></span></blockquote>
<span class="HOEnZb"><font color="#888888">
<br>
</font></span></div>
<span class="HOEnZb"><font color="#888888"> </font></span></blockquote>
<span class="HOEnZb"><font color="#888888"> </font></span></div>
<span class="HOEnZb"><font color="#888888"> <br>
<br clear="all">
<div><br>
</div>
-- <br>
What most experimenters take for granted
before they begin their experiments is
infinitely more interesting than any results
to which their experiments lead.<br>
-- Norbert Wiener </font></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
What most experimenters take for granted before they begin
their experiments is infinitely more interesting than any
results to which their experiments lead.<br>
-- Norbert Wiener
</div>
</div>
</blockquote>
<br>
</body>
</html>