<br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Nathan Moore</b> <span dir="ltr"><<a href="mailto:ntmoore@gmail.com">ntmoore@gmail.com</a>></span><br>Date: Fri, Nov 21, 2008 at 9:35 AM<br>
Subject: Re: [Beowulf] OpenMP on AMD dual core processors<br>To: Bill Broadley <<a href="mailto:bill@cse.ucdavis.edu">bill@cse.ucdavis.edu</a>><br><br><br>You're right about the recursive definition,<div class="Ih2E3d">
<br><br>
     v(i,j) = 0.25*(v(i-1,j)+v(i+1,j)+v(i,j+<div>1)+v(i,j-1))<br><br>
</div></div>It is an old serial programming trick that makes the computation go faster with little convergence penalty. I was thinking that two arrays would have a memory latency (reading in and out simultaneously), but I see what you mean about forcing the computation to be serial.<div>
<div></div><div class="Wj3C7c"><br>
<br><br><div class="gmail_quote">On Thu, Nov 20, 2008 at 11:47 PM, Bill Broadley <span dir="ltr"><<a href="mailto:bill@cse.ucdavis.edu" target="_blank">bill@cse.ucdavis.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

OpenMP only works on loops that are independent.  So something like:<br>
do j=1,Ny<br>
   v(j) = v(j) + 1<br>
<br>
So 100 CPUs could each run with a different value for J and not conflict.<br>
<br>
Your code however:<br>
<div>do i=1,Nx<br>
  do j=1,Ny<br>
    if(boundary(i,j).eq.0) then<br>
     old_v = v(i,j)<br>
     v(i,j) = 0.25*(v(i-1,j)+v(i+1,j)+v(i,j+1)+v(i,j-1))<br>
<br>
</div>Neither the i loop nor the j loop can be parallelized because the value if i-1<br>
and j-1 have been referenced.  Does that code even work?  Is it intentional<br>
that the v(i-1) value is from the current iteration, but v(i+1) value is from<br>
the previous iteration?<br>
<br>
Seems like a much better idea to have a new array that is built entirely from<br>
the previous timestep.  That would allow it to converge faster, coverge is<br>
more cases, and also parallelize.<br>
<br>
Make sense?<br>
</blockquote></div><br><br clear="all"><br></div></div><font color="#888888">-- <br>- - - - - - -   - - - - - - -   - - - - - - - <br>Nathan Moore<br>Assistant Professor, Physics<br>Winona State University<br>AIM: nmoorewsu <br>
- - - - - - -   - - - - - - -   - - - - - - -<br>

</font></div><br><br clear="all"><br>-- <br>- - - - - - -   - - - - - - -   - - - - - - - <br>Nathan Moore<br>Assistant Professor, Physics<br>Winona State University<br>AIM: nmoorewsu <br>- - - - - - -   - - - - - - -   - - - - - - -<br>