I am trying to get MRtrix running faster in an HPC environment. I read this page: HPC clusters installation — MRtrix 3.0 documentation
and am now getting ready to experiment with different values for NumberOfThreads.
According to the documentation the default is: default: number of threads provided by hardware
How do I know the default number of threads provided by the hardware? I think this will help me understand whether MRtrix is currently using the available resources, and if I should tune this value for faster performance.
lscpu will give you detailed information about your CPU. One of the lines reports the number of cores (listed as
CPU(s)), with a more detailed breakdown in terms of actual cores and threads per core (for hyper-threading systems). One thing to watch out for is that on a HPC system, you might end up running that command on the head node rather than one of the compute nodes, so you could get different results.
If you want to check exactly how many threads mrtrix is using, you can try running any command (e.g.
mrconvert) with the
-debug option. It’ll report how many threads are being launched at runtime.
Just appending the technical answer in case it’s relevant, which is that it is based on the result of function
std::thread::hardware_concurrency() (MRtrix code).