HPL_infog2l(3)

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

πŸ’– HPL_infog2l β€” from the HPL Library Functions manual, bestie πŸ’–

okay so like, welcome to HPL_infog2l(3), the little routine that does global to local index translation. yes queen, it converts. it translates. it's giving multilingual but for indexes. πŸ¦‹


✨ NAME ✨

HPL_infog2l β€” global to local index translation. that's it, that's the whole vibe. no cap. πŸ’…


🌸 SYNOPSIS 🌸

#include "hpl.h"

void HPL_infog2l( int I, int J, const int IMB, const int MB, const int
INB, const int NB, const int RSRC, const int CSRC, const int MYROW,
const int MYCOL, const int NPROW, const int NPCOL, int * II, int * JJ,
int * PROW, int * PCOL );

look at all those arguments bestie 😭 she's thorough. she's committed. she knows what she wants.


πŸŽ€ DESCRIPTION πŸŽ€

so HPL_infog2l computes the starting local index II, JJ corresponding to the submatrix starting globally at the entry pointed by I, J. lowkey iconic behaviour.

and THEN β€” plot twist β€” this routine also returns the coordinates in the grid of the process owning the matrix entry of global indexes I, J, namely PROW and PCOL. so it's like, "here's your local spot AND here's who's holding the bag." main character energy fr fr πŸ‘‘


πŸ¦‹ ARGUMENTS πŸ¦‹

  • I (global input) β€” int β€” on entry, I specifies the global row index of the matrix entry. I must be at least zero. like, zero or more, bestie, don't be negative, that's not the vibe πŸ™ˆ
  • J (global input) β€” int β€” on entry, J specifies the global column index of the matrix entry. J must be at least zero. same energy. no negativity allowed. ✨
  • IMB (global input) β€” const int β€” on entry, IMB specifies the size of the first row block of the global matrix. IMB must be at least one. one or more, periodt.
  • MB (global input) β€” const int β€” on entry, MB specifies the blocking factor used to partition and distribute the rows of the matrix A. MB must be larger than one. strictly larger. she's picky and honestly? valid. πŸ’…
  • INB (global input) β€” const int β€” on entry, INB specifies the size of the first column block of the global matrix. INB must be at least one. again: one or more. we love consistency. πŸŽ€
  • NB (global input) β€” const int β€” on entry, NB specifies the blocking factor used to partition and distribute the columns of the matrix A. NB must be larger than one. bigger than one, no exceptions, that's the rule bestie.
  • RSRC (global input) β€” const int β€” on entry, RSRC specifies the row coordinate of the process that possesses the row I. RSRC must be at least zero and strictly less than NPROW. so like, in-bounds, okay? don't come for me with out-of-range values 😭
  • CSRC (global input) β€” const int β€” on entry, CSRC specifies the column coordinate of the process that possesses the column J. CSRC must be at least zero and strictly less than NPCOL. same deal, stay in your lane (affectionately). 🌸
  • MYROW (local input) β€” const int β€” on entry, MYROW specifies my row process coordinate in the grid. MYROW is greater than or equal to zero and less than NPROW. it's giving "know thyself." πŸͺž
  • MYCOL (local input) β€” const int β€” on entry, MYCOL specifies my column process coordinate in the grid. MYCOL is greater than or equal to zero and less than NPCOL. yes, your column. yours specifically. πŸ’œ
  • NPROW (global input) β€” const int β€” on entry, NPROW specifies the number of process rows in the grid. NPROW is at least one. at least one row, always. ⭐
  • NPCOL (global input) β€” const int β€” on entry, NPCOL specifies the number of process columns in the grid. NPCOL is at least one. and at least one column. the grid stays populated. 🌈
  • II (local output) β€” int * β€” on exit, II specifies the local starting row index of the submatrix. on exit, II is at least 0. she comes out non-negative, as she should. πŸ”₯
  • JJ (local output) β€” int * β€” on exit, JJ specifies the local starting column index of the submatrix. on exit, JJ is at least 0. same. non-negative. slay.
  • PROW (global output) β€” int * β€” on exit, PROW is the row coordinate of the process owning the entry specified by the global index I. PROW is at least zero and less than NPROW. so like, we found the row owner. mystery solved. πŸ•΅οΈβ€β™€οΈ
  • PCOL (global output) β€” int * β€” on exit, PCOL is the column coordinate of the process owning the entry specified by the global index J. PCOL is at least zero and less than NPCOL. and the column owner too. case closed, bestie. πŸ’–

πŸ‘‘ SEE ALSO πŸ‘‘

  • HPL_indxg2l (3)
  • HPL_indxg2p (3)
  • HPL_indxl2g (3)
  • HPL_numroc (3)
  • HPL_numrocI (3)

go read those too, they're the whole friend group, iykyk 🫢


ngl bestie, remember every single one of those bounds checks. negative values and out-of-range process coordinates are NOT the move, and MB and NB have to be strictly larger than one. don't test her. πŸ’€

HPL 2.2 🌸 February 24, 2016 β€” yeah she's been iconic since 2016 and she's still serving. mwah πŸ’…βœ¨ bye bestie, go translate some indexes πŸ¦‹

πŸ“¦ where this page comes from