|
NAMEhwloc-calc - Operate on cpu mask strings and objectsSYNOPSIShwloc-calc [options] <location1> [<location2> [...] ]Note that hwloc(7) provides a detailed explanation of the hwloc system and of valid <location> formats; it should be read before reading this man page. OPTIONS
DESCRIPTIONhwloc-calc generates and manipulates CPU mask strings or objects. Both input and output may be either objects (with physical or logical indexes), CPU lists (with physical or logical indexes), or CPU mask strings (always physically indexed).If objects or CPU mask strings are given on the command-line, they are combined and a single output is printed. If no object or CPU mask strings are given on the command-line, the program will read the standard input. It will combine multiple objects or CPU mask strings that are given on the same line of the standard input line with spaces as separators. Different input lines will be processed separately. Command-line arguments and options are processed in order. For instance, it means that changing the type of input indexes with --li or changing the input topology with -i only affects the processing the following arguments. NOTE: hwloc-calc cannot manipulate NUMA memory node sets. It only manipulates CPU sets, which means it cannot do much about CPU-less NUMA nodes. NOTE: It is highly recommended that you read the hwloc(7) overview page before reading this man page. Most of the concepts described in hwloc(7) directly apply to the hwloc-calc utility. EXAMPLEShwloc-calc's operation is best described through several examples.To display the (physical) CPU mask corresponding to the second package: $ hwloc-calc package:1 0x000000f0 To display the (physical) CPU mask corresponding to the third pacakge, excluding its even numbered logical processors: $ hwloc-calc package:2 ~PU:even 0x00000c00 To combine two (physical) CPU masks: $ hwloc-calc 0x0000ffff 0xff000000 0xff00ffff To display the list of logical numbers of processors included in the second package: $ hwloc-calc --intersect PU package:1 4,5,6,7 To bind GNU OpenMP threads logically over the whole machine, we need to use physical number output instead: $ export GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU machine:0` $ echo $GOMP_CPU_AFFINITY 0,4,1,5,2,6,3,7 To display the list of NUMA nodes, by physical indexes, that intersect a given (physical) CPU mask: $ hwloc-calc --physical --intersect NUMAnode 0xf0f0f0f0 0,2 To display the physical index of a processor given by its logical index: $ hwloc-calc PU:2 --physical-output --intersect PU 3 To display the set of CPUs near network interface eth0: $ hwloc-calc os=eth0 0x00005555 To display the indexes of packages near PCI device whose bus ID is 0000:01:02.0: $ hwloc-calc pci=0000:01:02.0 --intersect Package 1 To display the list of per-package cores that intersect the input: $ hwloc-calc 0x00003c00 --hierarchical package.core Package:2.Core:1 Package:3.Core:0 To display the (physical) CPU mask of the entire topology except the third package: $ hwloc-calc all ~package:3 0x0000f0ff To combine both physical and logical indexes as input: $ hwloc-calc PU:2 --physical-input PU:3 0x0000000c To synthetize a set of cores into largest objects on a 2-node 2-package 2-core machine: $ hwloc-calc core:0 --largest Core:0 $ hwloc-calc core:0-1 --largest Package:0 $ hwloc-calc core:4-7 --largest NUMANode:1 $ hwloc-calc core:2-6 --largest Package:1 Package:2 Core:6 $ hwloc-calc pack:2 --largest Package:2 $ hwloc-calc package:2-3 --largest NUMANode:1 To get the set of first threads of all cores: $ hwloc-calc core:all.pu:0 This can also be very useful in order to make GNU OpenMP use exactly one thread per core, and in logical core order: $ export OMP_NUM_THREADS=`hwloc-calc --number-of core machine:0` $ echo $OMP_NUM_THREADS 4 $ export GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU core:all.pu:0` $ echo $GOMP_CPU_AFFINITY 0,2,1,3 RETURN VALUEUpon successful execution, hwloc-calc displays the (physical) CPU mask string, (physical or logical) object list, or (physical or logical) object number list. The return value is 0.hwloc-calc will return nonzero if any kind of error occurs, such as (but not limited to): failure to parse the command line. SEE ALSOhwloc(7), lstopo(1), hwloc-info(1), hwloc-gather-topology(1)
Visit the GSP FreeBSD Man Page Interface. |