HPL_rollN(3)

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

✨ HPL_rollN ✨

okay so bestie, we're in HPL land β€” that's the HPL Library Functions manual, section 3, and this one is HPL_rollN. it's giving very "internal linear algebra machinery that eats and breathes" and honestly? we love that for us. let's get into it πŸ’…


🌸 NAME 🌸

HPL_rollN β€” roll U and forward the column panel. no cap, that's literally the whole job.


πŸ¦‹ SYNOPSIS πŸ¦‹

#include "hpl.h"

void HPL_rollN( 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 πŸ’–

so HPL_rollN rolls the local arrays holding the local pieces of U, and the way that works is: on exit from this function, U is replicated in every process row. periodt. everyone gets a copy, nobody's left out 🫢

plus β€” because she's an overachiever β€” this function also probes for the presence of the column panel, and forwards it when it's available. multitasking icon behavior, honestly.


✨ ARGUMENTS ✨

  • PBCST (local input/output) β€” HPL_T_panel * β€” on entry, PBCST points at the data structure containing the panel (to be broadcast) information. she's the one holding the broadcast tea β˜•
  • IFLAG (local input/output) β€” int * β€” on entry, IFLAG tells you whether or not the broadcast has already been completed. if it hasn't, then probing will occur, and whatever comes out of that probing lands in IFLAG on exit. so like, it's the vibe check result field πŸŽ€
  • PANEL (local input/output) β€” HPL_T_panel * β€” on entry, PANEL points at the data structure containing the panel (to be rolled) information. yes bestie, this is the one getting rolled.
  • N (local input) β€” const int β€” on entry, N is the number of columns of U. and N must be at least zero. no negatives, we don't do that here πŸ™ˆ
  • U (local input/output) β€” double * β€” on entry, U is an array of dimension (LDU,*) containing the local pieces of U in each process row. this is the star of the show, the main character 🌟
  • LDU (local input) β€” const int β€” on entry, LDU is the local leading dimension of U. and LDU should be at least MAX(1,IPLEN[NPROW]). like, that's the floor, don't go below it πŸ’€
  • IPLEN (global input) β€” const int * β€” on entry, IPLEN is an array of dimension NPROW+1. the whole situation with this array is that IPLEN[i+1] - IPLEN[i] is the number of rows of U in each process row. offsets, basically. she's keeping track 🧚
  • 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. yes, the parameter is spelled IPMAP and the description calls her IMAP β€” that's just how the family talks, iykyk 😭
  • 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) we have IMAPM1[IMAP[i]] = i. the un-map. the reverse card. the "actually, go back" πŸŒ€

πŸ”₯ SEE ALSO πŸ”₯

  • HPL_pdlaswp01N (3).

okay that's the whole page, you ate that πŸ’…πŸ’– stay hydrated, stay mapped, and remember: on exit, U is replicated in every process row. iconic.

this has been your girl bringing you HPL 2.2, dated February 24, 2016 β€” mwah, love you, bye πŸŽ€πŸ¦‹βœ¨
πŸ“¦ where this page comes from