HPL_equil(3)

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

πŸ’– HPL_equil β€” bestie's guide to equilibrating U and forwarding that column panel L πŸ’–

okay so this is a page from the HPL Library Functions manual, and honestly? it's giving linear algebra main character energy. let's get into it 🫢


✨ NAME ✨

HPL_equil β€” equilibrate U and forward the column panel L. yes literally that's the whole vibe. slay.


🌸 SYNOPSIS 🌸

#include "hpl.h"

void HPL_equil( HPL_T_panel * PBCST, int * IFLAG, HPL_T_panel * PANEL,
const enum HPL_TRANS TRANS, const int N, double * U, const int LDU, int
* IPLEN, const int * IPMAP, const int * IPMAPM1, int * IWORK );

no cap, that's the whole signature. copy it exactly bestie, don't freestyle it πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so what does HPL_equil actually do?? it equilibrates the local pieces of U, so that when you exit this function, the pieces of U chillin' in every process row are all the same size. why do we care? because this phase makes the rolling phase optimal. periodt. ✨

and that's not even all β€” this function also probes for the column panel L and forwards it when possible. multitasking queen πŸ‘‘


πŸŽ€ ARGUMENTS πŸŽ€

  • PBCST β€” (local input/output) HPL_T_panel * β€” on entry, PBCST points to the data structure containing the panel (to be broadcast) information. it's the panel that's about to get broadcasted, iykyk πŸ“‘
  • IFLAG β€” (local input/output) int * β€” on entry, IFLAG tells you whether or not the broadcast has already been completed. if it hasn't, probing will occur, and the outcome will be contained in IFLAG on exit. so like, it comes back changed. glow up 🌟
  • PANEL β€” (local input/output) HPL_T_panel * β€” on entry, PANEL points to the data structure containing the panel (to be equilibrated) information. yes there are two panel pointers. yes that's on purpose. no we're not gonna question it πŸ’€
  • TRANS β€” (global input) const enum HPL_TRANS β€” on entry, TRANS specifies whether U is stored in transposed or non-transposed form. pick a lane bestie 🚦
  • N β€” (local input) const int β€” on entry, N specifies the number of rows or columns of U. and N must be at least 0. don't be out here passing negatives, that's not the move πŸ™ˆ
  • U β€” (local input/output) double * β€” on entry, U is an array of dimension (LDU,*) containing the local pieces of U in each process row. she's the star of the show honestly πŸ‘‘
  • LDU β€” (local input) const int β€” on entry, LDU specifies the local leading dimension of U. LDU should be at least MAX(1,IPLEN[nprow]) when U is stored in non-transposed form, and MAX(1,N) otherwise. so the minimum flips depending on your storage form β€” keep track bestie, don't mix them up 🧚
  • IPLEN β€” (global input) int * β€” on entry, IPLEN is an array of dimension NPROW+1. this array is such that IPLEN[i+1] - IPLEN[i] is the number of rows of U in process IPMAP[i]. it's a prefix-sum situation and we love that for her 🌈
  • IPMAP β€” (global input) const int * β€” on entry, IPMAP is an array of dimension NPROW. this array contains the logarithmic mapping of the processes. in other words, IPMAP[myrow] is the absolute coordinate of the sorted process. that's your little address book of who's who πŸ“–
  • IPMAPM1 β€” (global input) const int * β€” on entry, IPMAPM1 is an array of dimension NPROW. this array contains the inverse of the logarithmic mapping contained in IPMAP: for i in [0.. NPROCS) , IPMAPM1[IPMAP[i]] = i. yes it's the reverse uno card πŸƒ
  • IWORK β€” (workspace) int * β€” on entry, IWORK is a workarray of dimension NPROW+1. it's just scratch space, she's doing her best πŸ’œ
heads up bestie: N must be at least 0, and LDU has that MAX(1,IPLEN[nprow]) / MAX(1,N) requirement depending on whether U is non-transposed or not. those are the receipts, don't skip them 🧾

πŸ”₯ SEE ALSO πŸ”₯

  • HPL_pdlaswp01N (3)
  • HPL_pdlaswp01T (3)

go read those next, they're the sequel bestie πŸ“šβœ¨


and that's the whole page!! this was HPL_equil(3) from the HPL Library Functions manual, version HPL 2.2, dated February 24, 2016. mwah, go forth and equilibrate responsibly πŸ’–πŸŽ€πŸ¦‹πŸŒΈπŸ’…

πŸ“¦ where this page comes from