HPL_pdrpancrN(3)
π HPL_pdrpancrN π
okay bestie, welcome to the HPL_pdrpancrN(3) page β it's an HPL Library function and it's literally the Crout recursive panel factorization. yes the name is a keyboard smash, no we are not changing it, it's iconic π
β¨ NAME β¨
HPL_pdrpancrN β Crout recursive panel factorization. that's it, that's the whole name section, short and slay π
β¨ SYNOPSIS β¨
#include "hpl.h"
void HPL_pdrpancrN( HPL_T_panel * PANEL, const int M, const int N, const
int ICOFF, double * WORK );
β¨ DESCRIPTION β¨
so HPL_pdrpancrN recursively factorizes a panel of columns using the recursive Crout variant of the usual one-dimensional algorithm. the lower triangular N0-by-N0 upper block of the panel is stored in no-transpose form, meaning just like the input matrix itself. no cap, it's just vibing as-is π¦
Bi-directional exchange is used to perform the swap::broadcast operations at once for one column in the panel. the way this works out, you get a lower number of slightly larger messages than usual. lowkey a glow-up for your message count β¨
On P processes and assuming bi-directional links, the running time of this function can be approximated by (when N is equal to N0):
N0 * log_2( P ) * ( lat + ( 2*N0 + 4 ) / bdwth ) +
N0^2 * ( M - N0/3 ) * gam2-3
where 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, and gam2-3 is an estimate of the Level 2 and Level 3 BLAS rate of execution. π yes there's math, but here's the tea:
the recursive algorithm allows indeed to almost achieve Level 3 BLAS performance in the panel factorization. that's the main character energy we're going for π
on a large number of modern machines though, this operation is however latency bound, meaning its cost can be estimated by only the latency portion N0 * log_2(P) * lat. Mono-directional links will double this communication cost. so if your links are mono-directional, bestie, your runtime is getting doubled, no thoughts head empty π«
β¨ ARGUMENTS β¨
PANEL(local input/output)HPL_T_panel *β On entry,PANELpoints to the data structure containing the panel information. it's giving "everything you need to know about this panel" πM(local input)const intβ On entry,Mspecifies the local number of rows ofsub(A).N(local input)const intβ On entry,Nspecifies the local number of columns ofsub(A).ICOFF(global input)const intβ On entry,ICOFFspecifies the row and column offset ofsub(A)inA. it's the lil location tag of your submatrix πWORK(local workspace)double *β On entry,WORKis a workarray of size at least2*(4+2*N0). do NOT skimp on this, it needs the space, it's high maintenance and we respect it π
β¨ SEE ALSO β¨
the whole friend group, fr fr π«Ά
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_pdrpancrT (3)HPL_pdrpanllN (3)HPL_pdrpanllT (3)HPL_pdrpanrlN (3)HPL_pdrpanrlT (3)HPL_pdfact (3)
that's the whole page bestie, you ate it, you understood it, periodt ππ
signing off from HPL 2.2, dated February 24, 2016 β yeah it's an elder but it's still serving, and this page is officially closed, mwah ππ
π¦ 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