HPL_pdmxswp(3)
π HPL_pdmxswp β from the HPL Library Functions era π
okay bestie, sit down, hydrate, and let's talk about HPL_pdmxswp π
β¨ NAME β¨
HPL_pdmxswp β swaps and broadcasts the pivot row. that's it. that's the whole vibe π¦
β¨ SYNOPSIS β¨
#include "hpl.h"
void HPL_pdmxswp( HPL_T_panel * PANEL, const int M, const int II, const
int JJ, double * WORK );
β¨ DESCRIPTION β¨
so HPL_pdmxswp swaps and broadcasts the absolute value max row using bi-directional exchange. the buffer is partially set by HPL_dlocmax, okay? it's giving "someone else did the first four entries, I'll take it from here" π
bi-directional exchange is the whole moment here: it performs the swap::broadcast operations at once for one column in the panel. the result? a lower number of slightly larger messages than usual. iconique behavior, no cap π
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 π so like, check your links bestie, fr fr.
β¨ ARGUMENTS β¨
PANEL(local input/output) βHPL_T_panel *. on entry,PANELpoints to the data structure containing the panel information. she's holding all the panel info, obviously πM(local input) βconst int. on entry,Mspecifies the local number of rows of the matrix column on which this function operates.II(local input) βconst int. on entry,IIspecifies the row offset where the column to be operated on starts with respect to the panel.JJ(local input) βconst int. on entry,JJspecifies the column offset where the column to be operated on starts with respect to the panel.WORK(local workspace) βdouble *. on entry,WORKis a workarray of size at least2 * (4+2*N0). it is assumed thatHPL_dlocmaxwas called prior to this routine to initialize the first four entries of this array. on exit, theN0length max row is stored inWORK[4:4+N0-1]; note that this is also theJJth row (or column) ofL1. the remaining part is used as a temporary array. she's a multitasker π
lowkey important:WORKneeds that2 * (4+2*N0)size minimum, and the first four entries come fromHPL_dlocmax. don't skip that step, bestie π
β¨ 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). go read the whole friend group, they're all connected πΈ
mwah π this was HPL 2.2, dated February 24, 2016, and that's the tea. stay parallel, stay balanced, and don't let mono-directional links ruin your week π«Άβ¨
π¦ where this page comes from
- fedora 43: hpl-doc 2.2-22.fc43 Β· LicenseRef-Callaway-BSD-with-advertising
- fedora 44: hpl-doc 2.2-23.fc44 Β· LicenseRef-Callaway-BSD-with-advertising
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms