HPL_pdpancrT(3)
π HPL_pdpancrT π
okay bestie, welcome to HPL_pdpancrT(3) from the HPL Library Functions fam π«Ά this one is literally the Crout panel factorization glow-up, and yes it's giving β¨high performanceβ¨ so let's get into it.
β¨ NAME β¨
HPL_pdpancrT β Crout panel factorization. that's it, that's the vibe π
πΈ SYNOPSIS πΈ
#include "hpl.h"
void HPL_pdpancrT( HPL_T_panel * PANEL, const int M, const int N, const
int ICOFF, double * WORK );
π¦ DESCRIPTION π¦
so what this function does: it factorizes a panel of columns that is a sub-array of a larger one-dimensional panel A, using the Crout variant of the usual one-dimensional algorithm. and here's the lil plot twist β the lower triangular N0-by-N0 upper block of the panel is stored in transpose form. iconic behavior honestly π
bi-directional exchange is used to perform the swap::broadcast operations all at once for one column in the panel. the result? 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. the recursive algorithm allows indeed to almost achieve Level 3 BLAS performance in the panel factorization. on a large number of modern machines though, this operation is latency bound, meaning its cost can be estimated by only the latency portion N0 * log_2(P) * lat. and heads up β mono-directional links will double this communication cost π
not me forgetting to mention: one iteration of the main loop is unrolled. the local computation of the absolute value max of the next column is performed just after its update by the current column. this allows bringing the current column only once through cache at each step π§
the current implementation does not perform any blocking for this sequence of BLAS operations, however the design allows for plugging in an optimal (machine-specific) specialized BLAS-like kernel. this idea was suggested to us by Fred Gustavson, IBM T.J. Watson Research Center. slay, Fred π
π ARGUMENTS π
PANEL(local input/output) βHPL_T_panel *β on entry,PANELpoints to the data structure containing the panel information.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.WORK(local workspace) βdouble *β on entry,WORKis a workarray of size at least2*(4+2*N0).
π SEE ALSO π
HPL_dlocmax(3)HPL_dlocswpN(3)HPL_dlocswpT(3)HPL_pdmxswp(3)HPL_pdpancrN(3)HPL_pdpanllN(3)HPL_pdpanllT(3)HPL_pdpanrlN(3)HPL_pdpanrlT(3)
and that's the whole page bestie, no cap π this was HPL 2.2, dated February 24, 2016, and it ate fr fr. go factorize some panels, you got this πβ¨π¦
π¦ 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