Geoff Jacobs wrote:

If this were done with MPI, one would have to be careful of the
boundaries on the matrix as it's partitioned for computation. OpenMP is
intelligent enough to hold off computation on the tiles south and east
of the first until the first is done, and so forth?

No... I didn't address the interior vs exterior. I have a nice worked example where I convert this sort of code into an exterior, a skin, and the communication for an MPI and OpenMP version. Scales pretty well. You are right, I should have fixed that as well.


! now all you need is a "linear scan" to find positive elements in
! dv.  You can approach these as sum reductions, and do them in
! parallel
do i=1,Nx
 sum=0.0
 do j=1,Ny
  sum = sum + dabs(dv(i,j) .gt. 0.0) * dv(i,j)
 end do
 if (sum .gt. 0.0) converged = 0
end do

The basic idea is to replace the inner loop conditionals and remove as
many of the shared variables as possible.

Yup, keep things pipelined.

That was the idea, though I didn't compile/test the code to be sure it would work. That and I usually try to avoid real coding when I am tired at night. Coding and beer don't mix (for me).



--
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: [EMAIL PROTECTED]
web  : http://www.scalableinformatics.com
       http://jackrabbit.scalableinformatics.com
phone: +1 734 786 8423 x121
fax  : +1 866 888 3112
cell : +1 734 612 4615
_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to