HPL_spreadT(3)
π HPL_spreadT β bestie edition π
okay so this is a page from the HPL Library Functions manual, and honestly? it's giving "parallel linear algebra but make it gossip". the function is called HPL_spreadT, and we're gonna spill every single detail about it, no cap. π¦
β¨ NAME β¨
HPL_spreadT β spread row panel U and forward current column panel. π
like, it takes U and it spreads it. that's the whole vibe.
πΈ SYNOPSIS πΈ
#include "hpl.h"
void HPL_spreadT( HPL_T_panel * PBCST, int * IFLAG, HPL_T_panel * PANEL,
const enum HPL_SIDE SIDE, const int N, double * U, const int LDU, const
int SRCDIST, const int * IPLEN, const int * IPMAP, const int * IPMAPM1 );
copy that exactly, bestie, don't be out here retyping it from memory π
π« DESCRIPTION π«
so HPL_spreadT spreads the local array containing local pieces of U, so that when you exit this function, a piece of U is contained in every process row. everyone gets a lil piece. we love an equitable distribution moment. β¨
the array IPLEN contains the number of columns of U that should be spread on any given process row.
this function also probes for the presence of the column panel PBCST. if it's available, that panel will be forwarded. but β and this is the important bit β if PBCST is NULL on input, this probing mechanism will be disabled. like, off. gone. no probing. π
π ARGUMENTS π
PBCST(local input/output)HPL_T_panel *β on entry,PBCSTpoints to the data structure containing the panel (to be broadcast) information.IFLAG(local input/output)int *β on entry,IFLAGindicates whether or not the broadcast has already been completed. if it hasn't, probing will occur, and the outcome will be contained inIFLAGon exit. so like...IFLAGgoes in one way and comes out changed. character development fr fr. πPANEL(local input/output)HPL_T_panel *β on entry,PANELpoints to the data structure containing the panel (to be spread) information.SIDE(global input)const enum HPL_SIDEβ on entry,SIDEspecifies whether the local piece ofUlocated in processIPMAP[SRCDIST]should be spread to the right or to the left. this feature is used by the equilibration process. pick a side, bestie. πN(global input)const intβ on entry,Nspecifies the local number of rows ofU.Nmust be at least zero. (yes, zero is allowed. negative is not. we do not do negative here.) π€U(local input/output)double *β on entry,Uis an array of dimension(LDU,*)containing the local pieces ofU.LDU(local input)const intβ on entry,LDUspecifies the local leading dimension ofU.LDUshould be at leastMAX(1,N). don't skimp on it. π«ΆSRCDIST(local input)const intβ on entry,SRCDISTspecifies the source process that spreads its piece ofU. it's the main character of this operation, lowkey. π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 before processIPMAP[i], with the convention thatIPLEN[nprow]is the total number of rows. in other words,IPLEN[i+1] - IPLEN[i]is the local number of rows ofUthat should be moved to processIPMAP[i]. πIPMAP(global input)const int *β on entry,IPMAPis an array of dimensionNPROW. this array contains the logarithmic mapping of the processes. in other words,IPMAP[myrow]is the absolute coordinate of the sorted process.IPMAPM1(global input)const int *β on entry,IPMAPM1is an array of dimensionNPROW. this array contains the inverse of the logarithmic mapping contained inIPMAP: foriin[0.. NPROW)IPMAPM1[IPMAP[i]] = i. it's giving "undo button energy". π§
π₯ SEE ALSO π₯
HPL_pdlaswp01T(3).
β οΈ real talk: thePBCST = NULLthing disables probing entirely, andNmust be at least zero. those are the vibes you can't argue with. π
and that's the whole page, bestie β this one came straight out of HPL 2.2, dated February 24, 2016. iconic era honestly. now go spread 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