HPL_pdtest(3)

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

✨ HPL_pdtest β€” bestie's guide to running ONE (1) test ✨

okay so like. hi. you're here because you wanna know about HPL_pdtest from the HPL library functions, and honestly? valid. this one's a lil function that does a WHOLE lot of work and we're gonna break it down together, no cap πŸ’…


🌸 NAME 🌸

HPL_pdtest β€” Perform one test. that's it. that's the whole vibe. one test. iconic behavior honestly.


πŸŽ€ SYNOPSIS πŸŽ€

#include "hpl.h"

void HPL_pdtest( HPL_T_test * TEST, HPL_T_grid * GRID, HPL_T_palg *
ALGO, const int N, const int NB );

look at her. five args. serving real "trust the process" energy 🫢


πŸ’– DESCRIPTION πŸ’–

okay so HPL_pdtest performs one test given a whole lil set of parameters β€” think the process grid, the problem size, the distribution blocking factor, the whole squad ✨

here's the pipeline, bestie, and it's giving main character energy from start to finish:

  • it generates the data
  • it calls and times the linear system solver
  • it checks the accuracy of the obtained vector solution
  • it writes all that info to the file pointed to by TEST->outfp

periodt. that's the whole job. she does data, she does timing, she does accuracy check, she does the receipts πŸ’…


πŸ‘‘ ARGUMENTS πŸ‘‘

  • TEST (global input) β€” HPL_T_test *

On entry, TEST points to a testing data structure, and she's carrying a LOT of lore, so listen up:

  • outfp specifies the output file where the results will be printed. it's only defined and used by the process 0 of the grid β€” so like, process zero is the one holding the pen, everyone else is just vibing πŸ–ŠοΈ
  • thrsh specifies the threshhold value for the test ratio.

concretely, a test is declared "PASSED" if and only if this inequality is satisfied:

||Ax-b||_oo / ( epsil * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )  < thrsh

where epsil is the relative machine precision of the distributed computer. (math girlies rise up, this is your moment 🌈)

and finally, the test counters kfail, kpass, kskip and ktest get updated like so:

  • if the test passes, kpass is incremented by one βœ…
  • if the test fails, kfail is incremented by one πŸ’€
  • if the test is skipped, kskip is incremented by one πŸ™ˆ
  • ktest is left unchanged. she's not like the other counters. she's chillin 😌
  • GRID (local input) β€” HPL_T_grid *

On entry, GRID points to the data structure containing the process grid information. it's the map of who's where, basically πŸ—ΊοΈ

  • ALGO (global input) β€” HPL_T_palg *

On entry, ALGO points to the data structure containing the algorithmic parameters to be used for this test. all the little knobs and dials, bestie βš™οΈ

  • N (global input) β€” const int

On entry, N specifies the order of the coefficient matrix A. and here's the rule: N must be at least zero. zero is fine. negative is NOT the vibe. 🚫

  • NB (global input) β€” const int

On entry, NB specifies the blocking factor used to partition and distribute the matrix A. and heads up: NB must be larger than one. so 1 is a no, 0 is a no, negative is a big no. 2 and up, slay πŸŽ€

fr fr though β€” those constraints on N and NB are not suggestions. N β‰₯ 0 and NB > 1. don't test the function's patience, she WILL be dramatic about it.

πŸ”₯ SEE ALSO πŸ”₯

  • HPL_pddriver (3)
  • HPL_pdinfo (3)

go read those too, they're the friend group, you can't just know one of them 😭


and that's the whole page, bestie!! you understood it, you ate, no crumbs left πŸ’…βœ¨

this was HPL version 2.2, dated February 24, 2016 β€” so yeah she's a lil vintage but she still serves. mwah πŸ«ΆπŸ’–

πŸ“¦ where this page comes from