HPL_pdrpancrT(3)
π HPL_pdrpancrT π
okay bestie, welcome to the HPL Library Functions corner of the man pages, this one's literally called HPL_pdrpancrT(3) and it's giving recursive panel factorization energy, no cap π«Ά
β¨ NAME β¨
HPL_pdrpancrT β Crout recursive panel factorization. that's it, that's the whole name, slay π
πΈ SYNOPSIS πΈ
#include "hpl.h"
void HPL_pdrpancrT( HPL_T_panel * PANEL, const int M, const int N, const
int ICOFF, double * WORK );
copy that exactly, don't get cute with it π
π¦ DESCRIPTION π¦
so like. HPL_pdrpancrT 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 transpose form β yes, transpose, that's the whole T in the name, iykyk π
bi-directional exchange is used to perform the swap::broadcast operations at once for one column in the panel. the way that works out is you get 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 (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. and honestly? the recursive algorithm allows it to almost achieve Level 3 BLAS performance in the panel factorization, which is iconic fr fr π
but here's the tea π on a large number of modern machines, this operation is however latency bound, meaning its cost can be estimated by only the latency portion N0 * log_2(P) * lat. and mono-directional links will double this communication cost. so like, know your network bestie, it matters π
π ARGUMENTS π
PANEL(local input/output) βHPL_T_panel *. on entry,PANELpoints to the data structure containing the panel information. it's the main character, everything revolves around it β¨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 giving coordinates π§WORK(local workspace) βdouble *. on entry,WORKis a workarray of size at least2*(4+2*N0). do not skimp on the workspace, she needs her room π
π SEE ALSO π
the whole friend group, go say hi π«Ά
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_pdrpanllN (3)HPL_pdrpanllT (3)HPL_pdrpanrlN (3)HPL_pdrpanrlT (3)HPL_pdfact (3)
and that's the whole page bestie!! πβ¨ this lil masterpiece is from HPL 2.2, dated February 24, 2016 β go forth and factorize those panels, you absolute icon πππ¦
π¦ 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