HPL_rollN(3)
β¨ 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,PBCSTpoints 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,IFLAGtells 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 inIFLAGon exit. so like, it's the vibe check result field πPANEL(local input/output) βHPL_T_panel *β on entry,PANELpoints 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,Nis the number of columns of U. andNmust 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,LDUis the local leading dimension of U. andLDUshould be at leastMAX(1,IPLEN[NPROW]). like, that's the floor, don't go below it πIPLEN(global input) βconst int *β on entry,IPLENis an array of dimensionNPROW+1. the whole situation with this array is thatIPLEN[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,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. yes, the parameter is spelledIPMAPand the description calls herIMAPβ that's just how the family talks, iykyk π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)we haveIMAPM1[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
- 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