My question is somewhat open-ended, therefore, I will ask it specifically in the context of DLIB, however, any general advice would be appreciated.
We are an R&D company and we do extensive testing, and we need to capture as much information about the state of a system during experimentation as possible (ie. CPU speed, memory, GPU type, etc...). This also extends to compilers and libraries. If I have a C++ program, lets call it
foo I can get some information on the libraries it uses like so
ldd foo and get the following output
linux-vdso.so.1 => (0x00007ffd73d64000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbda773d000) libgif.so.7 => /usr/lib/x86_64-linux-gnu/libgif.so.7 (0x00007fbda7534000) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fbda730f000) libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fbda70b5000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbda6d33000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbda6a2a000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbda6813000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbda6449000) /lib64/ld-linux-x86-64.so.2 (0x0000559e91e7a000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbda622f000)
In our case, we are interested in knowing things like
- What version of
dlibis being used
OpenBLASis used or
cudNNis installed and
Currently I am managing the entire OS and we spin up/reinstall OSs and run a script which automates the entire process. Where possible (ie. cudNN version, dlib version) I figure out how to query that. Where not possible, then I go in the log file, look for a line that tells me what I want to know (ie.
-- Enabling CUDA support for dlib. DLIB WILL USE CUDA or
Using OpenBLAS's built in LAPACK). This is where things get really hacky and I start writing it down in the
README file, saving it to a
CSV file or walking over to the Science department and telling them
Machine-01 is running
Machine-02 is running
dlib-19.8 but with
Machine-03 is running
dlib-19.7 but with
OpenBLAS enabled, etc.
What is the Linux/Unix best practices when it comes to capturing information on a system for, in this case, benchmarking purposes? Should I be running a cuda C++ test program to confirm that it works? Should I peek inside the Makefile and check to see what versions of libraries are being installed?