Downgrade hwloc

Hi
I am getting hwloc errors regarding hardware topology during gromacs 2018 installation. is there a way to troubleshoot it?

Hi - you should post the errors you’re getting. I’m guessing your issues are installing against hwloc 2.0 or greater. If this is the case, your options are:

  • (preferred) install a newer Gromacs. Hwloc 2.0 support was added in Gromacs 2019. Unless you have a very good reason, you should be installing the latest Gromacs (currently 2020.3)

  • Install hwloc 1.x (recommended at least 1.11.8). When installing, point to the correct installation using -DCMAKE_PREFIX_PATH

  • Turn off hwloc support using -DGMX_HWLOC=off. This won’t affect performance, it’ll just reduce the quality of the log file reports of the detected hardware.

Thank you @kevinboyd here’s list of the errors i am getting.

nabi@nabi-HP-Z6-G4-Workstation:~/simulations/gromacs-2018/build$ cmake … -DGMX_BUILD_OWN_FFTW=OFF -DREGRESSIONTEST_DOWNLOAD=ON -DCMAKE_PREFIX_PATH= /usr/share/doc/libfftw3-dev -DGMX_HWLOC=ON -DCMAKE_C_COMPILER=gcc


[ 92%] Building CXX object src/gromacs/CMakeFiles/libgromacs.dir/hardware/gpu_hw_info.cpp.o
[ 92%] Building CXX object src/gromacs/CMakeFiles/libgromacs.dir/hardware/hardwaretopology.cpp.o
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp: In function ‘int gmx::{anonymous}::parseHwLocNuma(hwloc_topology_t, gmx::HardwareTopology::Machine*)’:
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:354:64: error: ‘struct hwloc_obj’ has no member named ‘memory’
354 | machine->numa.nodes[i].memory = hwlocNumaNodes[i]->memory.total_memory;
| ^~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:378:49: error: ‘hwloc_get_whole_distance_matrix_by_depth’ was not declared in this scope
378 | const struct hwloc_distances_s * dist = hwloc_get_whole_distance_matrix_by_depth(topo, depth);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:381:54: error: ‘const struct hwloc_distances_s’ has no member named ‘latency_base’
381 | machine->numa.baseLatency = dist->latency_base;
| ^~~~~~~~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:382:54: error: ‘const struct hwloc_distances_s’ has no member named ‘latency_max’
382 | machine->numa.maxRelativeLatency = dist->latency_max;
| ^~~~~~~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:389:65: error: ‘const struct hwloc_distances_s’ has no member named ‘latency’
389 | machine->numa.relativeLatency[i][j] = dist->latency[i*dist->nbobjs+j];
| ^~~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:407:65: error: ‘struct hwloc_obj’ has no member named ‘memory’
407 | machine->numa.nodes[0].memory = hwlocMachine->memory.total_memory;
| ^~~~~~
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp: In function ‘void gmx::{anonymous}::parseHwLoc(gmx::HardwareTopology::Machine*, gmx::HardwareTopology::SupportLevel*, bool*)’:
/home/nabi/simulations/gromacs-2018/src/gromacs/hardware/hardwaretopology.cpp:507:36: error: ‘HWLOC_TOPOLOGY_FLAG_IO_DEVICES’ was not declared in this scope; did you mean ‘HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM’?
507 | hwloc_topology_set_flags(topo, HWLOC_TOPOLOGY_FLAG_IO_DEVICES);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
make[2]: *** [src/gromacs/CMakeFiles/libgromacs.dir/build.make:10782: src/gromacs/CMakeFiles/libgromacs.dir/hardware/hardwaretopology.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3636: src/gromacs/CMakeFiles/libgromacs.dir/all] Error 2
make: *** [Makefile:163: all] Error 2
getting error

That does sound like you’re trying to compile against v2.x - one of the solutions I suggested should work.