HPL_pdrpanrlN(3)
β¨ HPL_pdrpanrlN β¨
okay bestie, so this is a page from the HPL Library Functions manual β HPL being the High-Performance Linpack vibe, and this function? it's giving right-looking recursive panel factorization energy. π
πΈ NAME πΈ
HPL_pdrpanrlN β right-looking recursive panel factorization. yes, that's the whole name, and yes, it slays.
π¦ SYNOPSIS π¦
#include "hpl.h"
void HPL_pdrpanrlN( HPL_T_panel * PANEL, const int M, const int N, const
int ICOFF, double * WORK );
like, that's the whole signature, no notes. π«Ά
π DESCRIPTION π
so HPL_pdrpanrlN recursively factorizes a panel of columns using the recursive Right-looking variant of the one-dimensional algorithm. periodt.
the lower triangular N0-by-N0 upper block of the panel is stored in no-transpose form β meaning, bestie, it's stored just like the input matrix itself. no flipping, no tricks, just vibes. π
Bi-directional exchange is used to perform the swap::broadcast operations all at once for one column in the panel. this results in a lower number of slightly larger messages than usual (efficiency era, honestly). on P processes, and assuming bi-directional links, the running time of this function can be approximated by this lil formula β and note it's for when N is equal to N0:
N0 * log_2( P ) * ( lat + ( 2*N0 + 4 ) / bdwth ) +
N0^2 * ( M - N0/3 ) * gam2-3
where, real quick, let's break it down:
- M is the local number of rows of the panel
- lat and bdwth are the latency and bandwidth of the network for double precision real words
- gam2-3 is an estimate of the Level 2 and Level 3 BLAS rate of execution
the recursive algorithm allows indeed to almost achieve Level 3 BLAS performance in the panel factorization π₯. on a large number of modern machines, this operation is however latency bound, meaning that its cost can be estimated by only the latency portion:
N0 * log_2(P) * lat
and listen β mono-directional links will double this communication cost. so like, get bi-directional links, iykyk. π
π ARGUMENTS π
PANEL(local input/output) βHPL_T_panel *on entry,PANELpoints to the data structure containing the panel information. it's the main character of this whole operation, fr fr.M(local input) βconst inton entry,Mspecifies the local number of rows ofsub(A).N(local input) βconst inton entry,Nspecifies the local number of columns ofsub(A).ICOFF(global input) βconst inton entry,ICOFFspecifies the row and column offset ofsub(A)inA. it's the lil coordinate situation. πWORK(local workspace) βdouble *on entry,WORKis a workarray of size at least2*(4+2*N0). don't skimp on it, bestie, it needs that space. π«Ά
π SEE ALSO π
the whole friend group, no cap:
HPL_dlocmax (3)HPL_dlocswpN (3)HPL_dlocswpT (3)HPL_pdmxswp (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_pdrpanrlT (3)HPL_pdfact (3)
π and that's the page, bestie π
this one's from HPL 2.2, dated February 24, 2016 β yeah, she's a classic, an icon, a legend, and she ate. π β¨ bye pookie, go factor some panels π¦πΈ
π¦ 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