HPL_rollT(3)

πŸ“¦ version 2.2, in fedora 43, fedora 44

πŸ’– 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, PBCST points 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, IFLAG tells you whether or not the broadcast has already been completed. if it has not, then probing will occur, and the outcome will land in IFLAG on exit. so like, watch that value, bestie πŸ‘€
  • PANEL (local input/output) β€” HPL_T_panel * on entry, PANEL points 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 int on entry, N specifies the local number of rows of U. and listen β€” N must be at least zero. don't try it with negatives, that's not the moment πŸ’€
  • U (local input/output) β€” double * on entry, U is an array of dimension (LDU,*) containing the local pieces of U in each process row.
  • LDU (local input) β€” const int on entry, LDU specifies the local leading dimension of U. LDU should be at least MAX(1,N). lowercase "should", so like, technically a suggestion, but also please respect her 🌸
  • IPLEN (global input) β€” const int * on entry, IPLEN is an array of dimension NPROW+1. this array is such that IPLEN[i+1] - IPLEN[i] is the number of rows of U in each process row.
  • IPMAP (global input) β€” const int * on entry, IMAP is an array of dimension NPROW. 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 argument IMAP here β€” we keep it, no edits, no notes πŸ’…)
  • IPMAPM1 (global input) β€” const int * on entry, IMAPM1 is an array of dimension NPROW. this array contains the inverse of the logarithmic mapping contained in IMAP: For i in [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