HPL_pdfact(3)

๐Ÿ“ฆ version 2.2, in fedora 43, fedora 44

๐Ÿ’– HPL_pdfact โ€” the girlies' guide to recursive panel factorization ๐Ÿ’–

okay so bestie, welcome to HPL_pdfact(3), one of the HPL Library Functions, and she is lowkey the backbone of your panel factorization era. let's get into it ๐Ÿซถ


โœจ NAME โœจ

HPL_pdfact โ€” recursive panel factorization. that's it, that's the vibe. ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

#include "hpl.h"

void HPL_pdfact( HPL_T_panel * PANEL );

literally one function, one pointer, zero drama. iconic.


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so HPL_pdfact recursively factorizes a 1-dimensional panel of columns. recursive!! like she's calling herself, main character energy fr fr. ๐Ÿ”ฅ

the RPFACT function pointer tells her which recursive algorithm to run โ€” she can go Crout, Left- looking, or Right looking. your choice bestie, she's flexible. โœจ

then NBMIN lets you vary the recursive stopping criterium, measured in number of columns in the panel. and NDIV lets you specify how many subpanels each panel should be divided into โ€” usually a value of 2 is the one to pick, no cap. ๐ŸŽ€

finally, PFACT is a function pointer specifying the non-recursive algorithm to be used on at most NBMIN columns. and yeah, here too you get to choose between Crout, Left- or Right looking. so many options, so much power. ๐Ÿ‘‘

and bestie, the empirical tests?? they seem to indicate that values of 4 or 8 for NBMIN give the best results. so if you were wondering, now you know. iykyk. ๐Ÿ’œ

Bi-directional exchange is used to perform the swap::broadcast operations at once for one column in the panel. the way that results in a lower number of slightly larger messages than usualโ€ฆ we love efficiency. ๐ŸŒˆ

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. periodt. ๐Ÿ’…

but โ€” and this is the part where we get a lil real โ€” 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. ๐Ÿ˜ญ

heads up bestie: Mono-directional links will double this communication cost. no like literally double. do with that information what you will. ๐Ÿ’€

๐Ÿ’œ ARGUMENTS ๐Ÿ’œ

  • PANEL โ€” (local input/output) HPL_T_panel * โ€” on entry, PANEL points to the data structure containing the panel information. she's both the input and the output, a true multi-hyphenate. ๐ŸŽ€

๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

the whole friend group, all invited to the group chat:

  • 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_pdrpanrlN (3)
  • HPL_pdrpanrlT (3)

and that's the whole page babes ๐Ÿซถ this was HPL 2.2, dated February 24, 2016 โ€” yes she's a 2016 girlie and she still ate. go factorize something recursively, you've got this. ๐Ÿ’–โœจ๐ŸŽ€๐Ÿฆ‹๐ŸŒธ๐Ÿ’…

๐Ÿ“ฆ where this page comes from