hwloc describes the core/processor/cache/memory layout where a program is running; no other library does this that well. I am developing infrastructure for multi-threading, and need to decide how to lay out threads so that they traverse multi-dimensional arrays in the most efficient manner. Before hwloc, I had to manually set up tables describing each system where my application (the Einstein Toolkit) would run. hwloc allows automating this, making this much simpler and more flexible.