HPL_rollT(3)
π HPL_rollT β the roll-and-forward glow-up π
ok so bestie, welcome to HPL_rollT(3), one of the HPL Library Functions β¨ this is the one that rolls your U and then yeets the column panel forward, and honestly? it's giving backstage-pass energy. let's get into it π«Ά
β¨ NAME β¨
HPL_rollT β rolls U and forwards the column panel. periodt.
πΈ SYNOPSIS πΈ
#include "hpl.h"
void HPL_rollT( HPL_T_panel * PBCST, int * IFLAG, HPL_T_panel * PANEL,
const int N, double * U, const int LDU, const int * IPLEN, const int *
IPMAP, const int * IPMAPM1 );
π¦ DESCRIPTION π¦
okay so here's the vibe: HPL_rollT rolls the local arrays that are holding all the local pieces of U, so that β by the time you exit this function β U is replicated in every process row. no cap, every single one. π
and also (because she's multi-talented, obviously), this function probes for the presence of the column panel and forwards it when it's available. slay.
π ARGUMENTS π
PBCST(local input/output) βHPL_T_panel *on entry,PBCSTpoints to the data structure containing the panel (to be broadcast) information. it's the panel's whole info situation fr fr.IFLAG(local input/output) βint *on entry,IFLAGtells you whether or not the broadcast has already been completed. if it has not, then probing will occur, and the outcome will land inIFLAGon exit. so like, watch that value, bestie πPANEL(local input/output) βHPL_T_panel *on entry,PANELpoints to the data structure containing the panel (to be rolled) information. yes, there are two panels here. one to broadcast, one to roll. iconic behavior honestly.N(local input) βconst inton entry,Nspecifies the local number of rows ofU. and listen βNmust be at least zero. don't try it with negatives, that's not the moment πU(local input/output) βdouble *on entry,Uis an array of dimension(LDU,*)containing the local pieces ofUin each process row.LDU(local input) βconst inton entry,LDUspecifies the local leading dimension ofU.LDUshould be at leastMAX(1,N). lowercase "should", so like, technically a suggestion, but also please respect her πΈIPLEN(global input) βconst int *on entry,IPLENis an array of dimensionNPROW+1. this array is such thatIPLEN[i+1] - IPLEN[i]is the number of rows ofUin each process row.IPMAP(global input) βconst int *on entry,IMAPis an array of dimensionNPROW. this array contains the logarithmic mapping of the processes. in other words,IMAP[myrow]is the absolute coordinate of the sorted process. (and yes, the manpage literally calls the argumentIMAPhere β we keep it, no edits, no notes π )IPMAPM1(global input) βconst int *on entry,IMAPM1is an array of dimensionNPROW. this array contains the inverse of the logarithmic mapping contained inIMAP: Foriin[0.. NPROW)IMAPM1[IMAP[i]] = i. it's giving mutuals. it's giving follows-back. π¦
π SEE ALSO π
HPL_pdlaswp01T (3)
go read that one next, bestie, she's the sister page π
π a lil sign-off π
this whole page is straight out of HPL 2.2, dated February 24, 2016 β yes she's an elder but she ATE and left no crumbs, we stan a legacy build β
k byeeee, go replicate that U πβ¨π
π¦ 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