I took some time on my last day of vacation to finish the refactorings I wanted to do on the PAPI wrapper that I mentioned in a previous post. Although I am sure that there is lots of things to clean up in this rather small code base, I made it publicly available!
It was used to generate the measurement results in my paper about the influence of measurement infrastructures, available in the ACM digital library.
The library was intended as an easy-to-use PAPI interface for C++ codes. It can be used as a library to be integrated in your code or it can be used as an external measurement routine using libmonitor. I may continue to work on this library in my free time as I do have some more ideas and want to integrate two features. One, implement a more structured way to output the measurement results. Two, have it not only count PAPI events, but also have it provide simple timer mechanisms.
If you are interested in this project, you can go to the papi-wrap on my github and download the source, build it and play around with it.
I just discovered a half-broken blueprint script that was supposed to open an interactive bash session within a newly allocated SLURM job. I typically allocate interactive sessions when I want to test a specific benchmark configuration on a particular machine or type of machine.
I always forget the exact command, so here is a fixed, i.e. working for me, line:
srun -n 1 --mem-per-cpu=100 -t 10:00 --pty bash -i
The line will have SLURM allocate a new resource with 1 task (-n 1) and 100 mb of memory (–mem-per-cpu 200). The job will live for 10 minutes (-t 10:00) and start a bash within it. I frequently also add the SLURM flag for exclusivity (–exclusive).
Please be aware that if your compute center operates with compute quotas the exclusivity will result in increased compute time consumed. Since you are practically allocating all machines for your own, you also occupy all CPUs. As a result, independent of the number of CPUs your job actually uses, the whole machine will be accounted, i.e. #number_of_cores * runtime_of_job.
In case you are interested in checking out what I do, you can visit two other places:
Currently I am doing some code clean-up on a small library that I implemented around the PAPI library. I used my library in a paper that I published and think it should be available for reference. However, I don’t know when it will become publicly available.
Like pretty much every tutorial for every programming language, this website starts with a “Hello world!”, yet, I still need to create the content.
I plan to use this website mainly as my “useful notes” archive and write about day-to-day tasks and observations, like benchmarking or how I work with vim.