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

  1. What version of dlib is being used
  2. Whether OpenBLAS is used or dlib BLAS
  3. Whether cudNN is installed and dlib is using cuda

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 dlib-19.9 and Machine-02 is running dlib-19.8 but with cuda enabled, 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?

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.