opari(1)

✨ opari β€” the manual page, but make it make sense ✨

okay bestie, welcome to opari(1), a General Commands Manual page, and honestly? she's giving source to source OpenMP program instrumentor. no cap. let's get into it πŸ’…


🌸 NAME 🌸

opari β€” the source-to-source OpenMP program instrumentor. that's it, that's the girl. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

opari
   [-f70|-f90|-c|-c++]
   [-disable <construct>[,<construct>]...]
   [-rcfile file] [-table <tabfile>] <infile> [<outfile>]
opari
   [-rcfile <file>] -table <tabfile>

two whole moods, bestie. pick your era. ✨


πŸ’– DESCRIPTION πŸ’–

okay so here's the tea. before you compile the source files of an OpenMP application, every single file needs to be transformed by a call to the OPARI tool. like, no skipping, no shortcuts, fr fr.

and then β€” plot twist β€” the application also has to be linked against the pomp runtime measurement library and the OPARI runtime table file. the way that table file has to be generated? using the -table option to OPARI, either:

  • together with the transformation of the last input source file, or
  • with a separate call to OPARI after all the transformations are done. 🫢

also, if you don't specify the output file name, OPARI is gonna be cute and use the name infile.mod.suffix β€” that's assuming your input file is called infile.suffix. iconic naming behaviour, honestly. πŸ’…


πŸ‘‘ OPTIONS πŸ‘‘

  • -f70, -f90, -c, -c++ β€” [OPTIONAL] this one tells OPARI what programming language your input source file is written in. it's only necessary if the automatic language detection (which works off the input file's suffix) fails β€” so basically, only when the vibe check on your filename comes back inconclusive. 😭
  • -rcfile <file> β€” [OPTIONAL] so OPARI normally uses the file ./opari.rc to preserve state information between calls to OPARI, and that matters when your OpenMP application is made of more than one source file. with the -rcfile option, the file file is used instead. super useful if more than one application is stored in the same directory, or if the source files of an application are stored in more than one directory. lowkey a lifesaver for messy folders. 🌈
  • -table <tabfile> β€” generate the OPARI runtime table in file tabfile. this option has to be used either together with the call to OPARI for the transformation of the last input source file, or with a separate call to OPARI after all the transformations are done. no in-between, bestie, those are the rules. ⭐
  • -disable <construct> β€” [OPTIONAL] disables the instrumentation of the more fine-grained OpenMP constructs, like !$OMP ATOMIC for example. construct is a comma separated list of the constructs for which the instrumentation should be disabled. accepted tokens are atomic, critical, master, flush, single, or locks β€” and also sync if you wanna disable all of them at once. πŸ‘‘

πŸ”₯ SEE ALSO πŸ”₯

  • /usr/share/doc/opari/Readme.html

go read her, she's the whole origin story. πŸ“–


πŸ’œ AUTHOR πŸ’œ

opari was written by Bernd Mohr. 🫢

this manual page was adapted from Readme.html by Samuel Thibault <thibault@debian.org>, for the Debian project (and may be used by others). she's a team player, we love to see it. πŸ’–


and that's the whole page, bestie!! 🌸✨ this cutie dropped back on May 20 as part of the General Commands Manual collection β€” go forth and instrument those OpenMP apps, you absolute main character. periodt. πŸ’…πŸŽ€πŸ¦‹