LAPACK Archives

[Lapack] allgather in scalapack

Hi Christof,

my experience is that a fast way to implement
all-to-all broadcast in a process row of column
is to use an ordinary ring algorithm combined
with the standard BLACS send/revc, like in:

    result = my_part_of_data
    buff = my_part_of_data
    DO I = 1, NPCOL-1
       Send( buff,  East  )
       Revc( buff, West )
       result = concat( result, buff )
    END DO

If you run such an algorithm first in row
direction of the grid and then in the row
direction of the grid it will take O(P_r+P_c)
steps and it should be (almost) the fastest
way of doing the all-gather operation since
it keeps all processes and all links in each ring
busy all the time.

Hope this helps!

Christof Voemel wrote:

I have O(n) DOUBLE PRECISION data distributed across p processors, and now I 
a big 'conversation' so that everyone knows everything.

What is the fastest way in ScaLAPACK (BLACS) to do that? Does anyone have 
experience with this?
Thank you.

Lapack mailing list


Robert Granat
Department of Computing Science
Ume? University
SE-90187 Sweden
Phone: +46(0)907866129
Cellular phone: +46(0)733429554
Email: granat@Domain.Removed

Proverb of today: "Don't worry, it is only
a matrix!" (Author unknown)

<Prev in Thread] Current Thread [Next in Thread>

For additional information you may use the LAPACK/ScaLAPACK Forum.
Or one of the mailing lists, or