HPL_spreadN(3)
π HPL_spreadN π
okay bestie, welcome to HPL_spreadN(3) from the HPL Library Functions lineup β this is the one that spreads the row panel U around and forwards the current column panel. she's a real one. β¨
πΈ NAME πΈ
HPL_spreadN β spread row panel U and forward current column panel.
π SYNOPSIS π
#include "hpl.h"
void HPL_spreadN( 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 );
π¦ DESCRIPTION π¦
so basically, HPL_spreadN spreads the local array holding the local pieces of U, so that when this function exits, a piece of U is literally sitting in every process row. like, everybody eats. π
the array IPLEN tells you the number of rows of U that should be spread onto any given process row. she also probes for the presence of the column panel PBCST β and if it's a success, that panel gets forwarded. π«Ά
and ifPBCSTisNULLon input? then this whole probing mechanism is disabled, periodt. no probing for you.
π 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,IFLAGsays whether or not the broadcast has already been completed. if it hasn't, probing will occur, and the outcome lives inIFLAGon exit.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. no cap.N(global input) βconst intβ on entry,Nspecifies the local number of columns ofU.Nmust be at least zero. that's the vibe check. π€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,IPLEN[nprow]).SRCDIST(local input) βconst intβ on entry,SRCDISTspecifies the source process that spreads its piece ofU.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]. iykyk π§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.
π SEE ALSO π
HPL_pdlaswp01N (3).
that's the whole page, bestie β go forth and spread that panel π
this iconic lil manual page is from HPL 2.2, dated February 24, 2016 β mwah, xoxo, she ate and left no crumbs π π
π¦ 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