# Name

HPL_pdlaswp01T Broadcast a column panel L and swap the row panel U.

# Synopsis

`#include "hpl.h"`
`void` `HPL_pdlaswp01T(` `HPL_T_panel *` `PBCST`, `int *` `IFLAG`, `HPL_T_panel *` `PANEL`, `const int` `NN` `);`

# Description

HPL_pdlaswp01T applies the NB row interchanges to NN columns of the trailing submatrix and broadcast a column panel. A "Spread then roll" algorithm performs the swap :: broadcast of the row panel U at once, resulting in a minimal communication volume and a "very good" use of the connectivity if available. With P process rows and assuming bi-directional links, the running time of this function can be approximated by: (log_2(P)+(P-1)) * lat + K * NB * LocQ(N) / bdwth where NB is the number of rows of the row panel U, N is the global number of columns being updated, lat and bdwth are the latency and bandwidth of the network for double precision real words. K is a constant in (2,3] that depends on the achieved bandwidth during a simultaneous message exchange between two processes. An empirical optimistic value of K is typically 2.4.

# Arguments

    PBCST   (local input/output)          HPL_T_panel *
            On entry,  PBCST  points to the data structure containing the
            panel (to be broadcast) information.

    IFLAG   (local input/output)          int *
            On entry, IFLAG  indicates  whether or not  the broadcast has
            already been completed.  If not,  probing will occur, and the
            outcome will be contained in IFLAG on exit.

    PANEL   (local input/output)          HPL_T_panel *
            On entry,  PANEL  points to the data structure containing the
            panel information.

    NN      (local input)                 const int
            On entry, NN specifies  the  local  number  of columns of the
            trailing  submatrix  to  be swapped and broadcast starting at
            the current position. NN must be at least zero.

# See Also

HPL_pdgesv, HPL_pdgesvK2, HPL_pdupdateNT, HPL_pdupdateTT, HPL_pipid, HPL_plindx1, HPL_plindx10, HPL_spreadT, HPL_equil, HPL_rollT, HPL_dlaswp10N, HPL_dlaswp01T, HPL_dlaswp06T.