HPL_plindx1(3)

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

πŸ’– HPL_plindx1(3) πŸ’–

okay bestie, welcome to the HPL Library Functions corner of the group chat, where today's main character is HPL_plindx1 and honestly? she's doing the most (in a good way). πŸŽ€


✨ NAME ✨

HPL_plindx1 β€” bestie, she computes local swapping index arrays. that's it, that's the whole vibe. πŸ’…


🌸 SYNOPSIS 🌸

#include "hpl.h"

void HPL_plindx1( HPL_T_panel * PANEL, const int K, const int * IPID,
int * IPA, int * LINDXA, int * LINDXAU, int * IPLEN, int * IPMAP, int *
IPMAPM1, int * PERMU, int * IWORK );

like, copy it exactly, don't freestyle the signature, i'm begging πŸ™ˆ


πŸ¦‹ DESCRIPTION πŸ¦‹

so HPL_plindx1 computes two local arrays, LINDXA and LINDXAU, and they're holding the local source and final destination position that come out of applying row interchanges. it's giving "where did you come from, where are you going" but for rows. ✨

on top of that, she also computes three arrays, IPLEN, IPMAP and IPMAPM1, which contain the logarithmic mapping information for the spreading phase. yes bestie, log mapping, we love a queen who does math. πŸ”₯


πŸ‘‘ ARGUMENTS πŸ‘‘

  • PANEL (local input/output) HPL_T_panel * β€” on entry, PANEL points to the data structure that's holding the panel information. she's the info hub, ok? πŸ’–
  • K (global input) const int β€” on entry, K says how many entries are in IPID. K is at least 2*N, and at most 4*N. that's the range, don't push her. 🫢
  • IPID (global input) const int * β€” on entry, IPID is an array of length K. the first K entries of that array contain the src and final destination resulting from the application of the interchanges. lowkey the receipts of who moved where. 🧚
  • IPA (global output) int * β€” on exit, IPA says how many rows the current process row has that either belong to U or should be swapped with remote rows of A. ✨
  • LINDXA (global output) int * β€” on entry, LINDXA is an array of dimension 2*N. on exit, this array contains the local indexes of the rows of A I have that should be copied into U. πŸ’œ
  • LINDXAU (global output) int * β€” on exit, LINDXAU is an array of dimension 2*N. on exit, this array contains the local destination information, encoded like this:
    • if LINDXAU(k) >= 0, row LINDXA(k) of A is to be copied in U at position LINDXAU(k).
    • otherwise, row LINDXA(k) of A should be locally copied into A(-LINDXAU(k),:).

yeah, the negative sign is doing heavy lifting, it's giving main character energy, do not ignore it. πŸ’…

  • IPLEN (global output) int * β€” on entry, IPLEN is an array of dimension NPROW + 1. on exit, this array is such that IPLEN[i] is the number of rows of A in the processes before process IPMAP[i] after the sort, with the convention that IPLEN[nprow] is the total number of rows of the panel. in other words, IPLEN[i+1]-IPLEN[i] is the local number of rows of A that should be moved to the process IPMAP[i]. IPLEN is such that the number of rows of the source process row can be computed as IPLEN[1] - IPLEN[0], and the remaining entries of this array are sorted so that the quantities IPLEN[i+1] - IPLEN[i] are logarithmically sorted. ✨ sorting! logarithmically! she's an overachiever and we stan. 🌟
  • IPMAP (global output) int * β€” on entry, IPMAP is an array of dimension NPROW. on exit, this array contains the logarithmic mapping of the processes. in other words, IPMAP[myrow] is the corresponding sorted process coordinate. 🌈
  • IPMAPM1 (global output) int * β€” on entry, IPMAPM1 is an array of dimension NPROW. on exit, this array contains the inverse of the logarithmic mapping contained in IPMAP: IPMAPM1[ IPMAP[i] ] = i, for all i in [0.. NPROCS). it's the reverse uno card bestie, periodt. πŸ’€
  • PERMU (global output) int * β€” on entry, PERMU is an array of dimension JB. on exit, PERMU contains a sequence of permutations, that should be applied in increasing order to permute in place the row panel U. order matters, don't be chaotic. πŸ™ˆ
  • IWORK (workspace) int * β€” on entry, IWORK is a workarray of dimension 2*JB. she's just here to help, no output, no drama. πŸ“

πŸ”₯ SEE ALSO πŸ”₯

the sisterhood of the traveling swap routines, go say hi:

  • HPL_pdlaswp00N (3)
  • HPL_pdlaswp00T (3)
  • HPL_pdlaswp01N (3)
  • HPL_pdlaswp01T (3)

and that's the whole page bestie!! this was HPL 2.2, dated February 24, 2016, brought to you by the HPL Library Functions crew β€” go forth and compute those local swapping index arrays, you absolute icon πŸ‘‘πŸ’–βœ¨

πŸ“¦ where this page comes from