HPL_pdlaswp01N(3)

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

πŸ’… HPL_pdlaswp01N πŸ’…

okay so bestie, welcome to the HPL Library Functions corner of the manual, and today's main character is HPL_pdlaswp01N ✨ no cap, she's a whole vibe. Let's get into it 🫢


🌸 NAME 🌸

HPL_pdlaswp01N β€” broadcast a column panel L and swap the row panel U. periodt πŸ’–


✨ SYNOPSIS ✨

#include "hpl.h"

void HPL_pdlaswp01N( HPL_T_panel * PBCST, int * IFLAG, HPL_T_panel *
PANEL, const int NN );

literally just four args, she's lowkey minimal and I respect it 😌


πŸ¦‹ DESCRIPTION πŸ¦‹

HPL_pdlaswp01N applies the NB row interchanges to NN columns of the trailing submatrix and broadcasts a column panel. two things at once, multitasking queen πŸ‘‘

so there's this algorithm called "Spread then roll" and it does the swap :: broadcast of the row panel U all at once β€” which means the communication volume is minimal and the use of the connectivity is, and I quote, "very good" if it's available. iykyk πŸ’«

now if you've got P process rows and we're assuming bi-directional links, the running time of this function can be approximated by:

(log_2(P)+(P-1)) * lat +   K * NB * LocQ(N) / bdwth

where:

  • NB is the number of rows of the row panel U
  • N is the global number of columns being updated
  • lat and bdwth are the latency and bandwidth of the network for double precision real words
  • K is a constant in (2,3] that depends on the achieved bandwidth during a simultaneous message exchange between two processes. an empirical optimistic value of K is typically 2.4 ⭐

so yeah. math. she ate πŸ”₯


πŸŽ€ ARGUMENTS πŸŽ€

  • PBCST β€” (local input/output) HPL_T_panel * on entry, PBCST points to the data structure containing the panel (to be broadcast) information. she's the one holding the gossip fr fr πŸ’Œ
  • IFLAG β€” (local input/output) int * on entry, IFLAG indicates whether or not the broadcast has already been completed. if not, probing will occur, and the outcome will be contained in IFLAG on exit. so she goes in as a question and comes out with an answer, we love a glow-up 🌈
  • PANEL β€” (local input/output) HPL_T_panel * on entry, PANEL points to the data structure containing the panel information. iconic struct behavior, no notes πŸ’œ
  • NN β€” (local input) const int on entry, NN specifies the local number of columns of the trailing submatrix to be swapped and broadcast starting at the current position. NN must be at least zero β€” bestie do not come in here with a negative, that's not the vibe πŸ™ˆ

πŸ’– SEE ALSO πŸ’–

the whole friend group, love them all:

HPL_pdgesv (3), HPL_pdgesvK2 (3), HPL_pdupdateNN (3), HPL_pdupdateTN (3), HPL_pipid (3), HPL_plindx1 (3), HPL_plindx10 (3), HPL_spreadN (3), HPL_equil (3), HPL_rollN (3), HPL_dlaswp00N (3), HPL_dlaswp01N (3), HPL_dlaswp06N (3).


🫢 and that's the whole page, bestie. go forth and swap those rows. main character energy only. πŸ“

this lil manual page came from HPL 2.2, dated February 24, 2016 β€” yeah she's an elder but she's still slaying, and you can find her hanging out under HPL_pdlaswp01N(3) whenever you need her. βœ¨πŸ§šπŸ’…

πŸ“¦ where this page comes from