# HPL_pdmxswp man page

HPL_pdmxswp — swaps and broacast the pivot row.

## Synopsis

**#include "hpl.h"****void HPL_pdmxswp( HPL_T_panel *** *PANEL*, **const int** *M*, **const int** *II*, **const int** *JJ*, **double *** *WORK* **);**

## Description

**HPL_pdmxswp** swaps and broadcasts the absolute value max row using bi-directional exchange. The buffer is partially set by HPL_dlocmax.

Bi-directional exchange is used to perform the swap::broadcast operations at once for one column in the panel. This results in a lower number of slightly larger messages than usual. On P processes and assuming bi-directional links, the running time of this function can be approximated by

log_2( P ) * ( lat + ( 2 * N0 + 4 ) / bdwth )

where lat and bdwth are the latency and bandwidth of the network for double precision real elements. Communication only occurs in one process column. Mono-directional links will cause the communication cost to double.

## Arguments

- PANEL (local input/output) HPL_T_panel *
- On entry, PANEL points to the data structure containing the panel information.
- M (local input) const int
- On entry, M specifies the local number of rows of the matrix column on which this function operates.
- II (local input) const int
- On entry, II specifies the row offset where the column to be operated on starts with respect to the panel.
- JJ (local input) const int
- On entry, JJ specifies the column offset where the column to be operated on starts with respect to the panel.
- WORK (local workspace) double *
- On entry, WORK is a workarray of size at least 2 * (4+2*N0). It is assumed that HPL_dlocmax was called prior to this routine to initialize the first four entries of this array. On exit, the N0 length max row is stored in WORK[4:4+N0-1]; Note that this is also the JJth row (or column) of L1. The remaining part is used as a temporary array.

## See Also

**HPL_dlocmax** (3), **HPL_dlocswpN** (3), **HPL_dlocswpT** (3), **HPL_pdpancrN** (3), **HPL_pdpancrT** (3), **HPL_pdpanllN** (3), **HPL_pdpanllT** (3), **HPL_pdpanrlN** (3), **HPL_pdpanrlT** (3), **HPL_pdrpancrN** (3), **HPL_pdrpancrT** (3), **HPL_pdrpanllN** (3), **HPL_pdrpanllT** (3), **HPL_pdrpanrlN** (3), **HPL_pdrpanrlT** (3), **HPL_pdfact** (3).