Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
hwlocality_cpukinds(3)	    Library Functions Manual	  hwlocality_cpukinds(3)

NAME
     hwlocality_cpukinds - Kinds of CPU cores

SYNOPSIS
   Functions
     int hwloc_cpukinds_get_nr (hwloc_topology_t topology, unsigned long flags)
     int      hwloc_cpukinds_get_by_cpuset	(hwloc_topology_t      topology,
	 hwloc_const_bitmap_t cpuset, unsigned long flags)
     int hwloc_cpukinds_get_info (hwloc_topology_t topology,  unsigned	kind_in-
	 dex, hwloc_bitmap_t cpuset, int *efficiency, unsigned *nr_infos, struct
	 hwloc_info_s **infos, unsigned long flags)
     int   hwloc_cpukinds_register  (hwloc_topology_t  topology,  hwloc_bitmap_t
	 cpuset, int forced_efficiency, unsigned nr_infos,  struct  hwloc_info_s
	 *infos, unsigned long flags)

Detailed Description
     Platforms	with  heterogeneous CPUs may have some cores with different fea-
     tures or frequencies. This API exposes identical PUs  in  sets  called  CPU
     kinds. Each PU of the topology may only be in a single kind.

     The  number  of  kinds may be obtained with hwloc_cpukinds_get_nr(). If the
     platform is homogeneous, there may be a single kind with all  PUs.  If  the
     platform  or  operating  system  does  not expose any information about CPU
     cores, there may be no kind at all.

     The index of the kind that describes a given CPU set (if any, and not  par-
     tially) may be obtained with hwloc_cpukinds_get_by_cpuset().

     From  the	index  of  a  kind,  it is possible to retrieve information with
     hwloc_cpukinds_get_info(): an abstracted efficiency value, and an array  of
     info attributes (for instance the 'CoreType' and 'FrequencyMaxMHz', see CPU
     Kinds).

     A higher efficiency value means greater intrinsic performance (and possibly
     less  performance/power efficiency). Kinds with lower efficiency values are
     ranked first: Passing 0 as kind_index to hwloc_cpukinds_get_info() will re-
     turn information about the CPU kind with lower performance but  higher  en-
     ergy-efficiency.  Higher  kind_index values would rather return information
     about power-hungry high-performance cores.

     When available, efficiency values are gathered from the  operating  system.
     If  so,  cpukind_efficiency  is  set  in  the struct hwloc_topology_discov-
     ery_support array. This is currently available on	Windows  10,  Mac  OS  X
     (Darwin),	and  on some Linux platforms where core 'capacity' is exposed in
     sysfs.

     If the operating system does not expose core efficiencies	natively,  hwloc
     tries  to compute efficiencies by comparing CPU kinds using frequencies (on
     ARM), or core types and frequencies (on other architectures). The	environ-
     ment variable HWLOC_CPUKINDS_RANKING may be used to change this heuristics,
     see Environment Variables.

     If  hwloc fails to rank any kind, for instance because the operating system
     does not expose efficiencies and core frequencies, all kinds will	have  an
     unknown  efficiency  (-1), and they are not indexed/ordered in any specific
     way.

Function Documentation
   int	    hwloc_cpukinds_get_by_cpuset       (hwloc_topology_t       topology,
     hwloc_const_bitmap_t cpuset, unsigned long flags)
     Get  the  index  of the CPU kind that contains CPUs listed in cpuset. flags
     must be 0 for now.

     Returns
	 The index of the CPU kind (positive integer or 0) on success.

	 -1 with errno set to EXDEV if cpuset is only partially included in  the
	 some kind.

	 -1 with errno set to ENOENT if cpuset is not included in any kind, even
	 partially.

	 -1 with errno set to EINVAL if parameters are invalid.

   int	hwloc_cpukinds_get_info (hwloc_topology_t topology, unsigned kind_index,
     hwloc_bitmap_t cpuset,  int  *  efficiency,  unsigned  *  nr_infos,  struct
     hwloc_info_s ** infos, unsigned long flags)
     Get  the  CPU  set  and  infos about a CPU kind in the topology. kind_index
     identifies one kind of CPU between 0 and the number of  kinds  returned  by
     hwloc_cpukinds_get_nr() minus 1.

     If  not  NULL, the bitmap cpuset will be filled with the set of PUs of this
     kind.

     The integer pointed by efficiency, if not NULL will,  be  filled  with  the
     ranking  of  this	kind of CPU in term of efficiency (see above). It ranges
     from 0 to the number of kinds (as reported by hwloc_cpukinds_get_nr())  mi-
     nus 1.

     Kinds with lower efficiency are reported first.

     If  there	is a single kind in the topology, its efficiency 0. If the effi-
     ciency of some kinds of cores is unknown, the efficiency of  all  kinds  is
     set to -1, and kinds are reported in no specific order.

     The  array  of  info  attributes  (for instance the 'CoreType', 'Frequency-
     MaxMHz' or 'FrequencyBaseMHz', see CPU Kinds) and its length  are	returned
     in  infos	or nr_infos. The array belongs to the topology, it should not be
     freed or modified.

     If nr_infos or infos is NULL, no info is returned.

     flags must be 0 for now.

     Returns
	 0 on success.

	 -1 with errno set to ENOENT if kind_index does not match any CPU kind.

	 -1 with errno set to EINVAL if parameters are invalid.

   int hwloc_cpukinds_get_nr (hwloc_topology_t topology, unsigned long flags)
     Get the number of different kinds of CPU cores in the topology. flags  must
     be 0 for now.

     Returns
	 The number of CPU kinds (positive integer) on success.

	 0 if no information about kinds was found.

	 -1 with errno set to EINVAL if flags is invalid.

   int	 hwloc_cpukinds_register   (hwloc_topology_t   topology,  hwloc_bitmap_t
     cpuset, int forced_efficiency, unsigned nr_infos, struct hwloc_info_s * in-
     fos, unsigned long flags)
     Register a kind of CPU in the topology. Mark the PUs listed  in  cpuset  as
     being of the same kind with respect to the given attributes.

     forced_efficiency	should	be  -1 if unknown. Otherwise it is an abstracted
     efficiency value to enforce the ranking of all kinds if all  of  them  have
     valid (and different) efficiencies.

     The array infos of size nr_infos may be used to provide info names and val-
     ues describing this kind of PUs.

     flags must be 0 for now.

     Parameters  cpuset  and  infos will be duplicated internally, the caller is
     responsible for freeing them.

     If cpuset overlaps with some existing kinds, those might  get  modified  or
     split. For instance if existing kind A contains PUs 0 and 1, and one regis-
     ters another kind for PU 1 and 2, there will be 3 resulting kinds: existing
     kind  A  is restricted to only PU 0; new kind B contains only PU 1 and com-
     bines information from A and from the newly-registered  kind;  new  kind  C
     contains  only  PU  2  and  only gets information from the newly-registered
     kind.

     Note
	 The efficiency forced_efficiency provided to this function may be  dif-
	 ferent from the one reported later by hwloc_cpukinds_get_info() because
	 hwloc	will scale efficiency values down to between 0 and the number of
	 kinds minus 1.

     Returns
	 0 on success.

	 -1 with errno set to EINVAL if some parameters  are  invalid,	for  in-
	 stance if cpuset is NULL or empty.

Author
     Generated	automatically  by Doxygen for Hardware Locality (hwloc) from the
     source code.

Hardware Locality (hwloc)	 Version 2.12.1 	  hwlocality_cpukinds(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hwloc_cpukinds_get_info&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help