Application-side control of data distribution to cluster machines and GPUs. More...
#include <iaffinity_information.h>
Inherits mi::base::Interface_declare< 0x3fbeb811, ... >.
Public Types | |
enum | Affinity_flags { ANY_GPU = 0xffffffffu , ANY_HOST = 0u } |
Flags for setting specific affinity modes. More... | |
Public Member Functions | |
virtual bool | get_affinity (const mi::math::Bbox_struct< mi::Float32, 3 > &subregion, mi::Uint32 &host_id, mi::IString *host_name, mi::Uint32 &device_id) const =0 |
Defines the affinity for a subregion with the given bounding box. More... | |
Application-side control of data distribution to cluster machines and GPUs.
NVIDIA IndeX applies a sort-last spatial decomposition for rendering that is based on a given subregion size (see IConfig_settings::set_subcube_configuration
) and that may be different to an application's decomposition scheme. This interface class enables the user to steer the data distribution and assign a subregion (or spatial region) to a certain machine and to a certain GPU in the cluster.
As a requirement for correct affinity usage the domain-specific subdivision and the spatial subdivision from NVIDIA IndeX have to result in the same spatial regions (bounding boxes). At least the domain-specific spatial regions for which an explicit affinity is given have to match or include (cover) one or a subset of bounding boxes that are created by NVIDIA IndeX. The sub cube configuration defines the size of the bounding boxes created by NVIDIA IndeX and allows to optimize the alignment of the internal spatial decomposition to a given domain-specific spatial decomposition.
|
pure virtual |
Defines the affinity for a subregion with the given bounding box.
The affinity includes the cluster machine as well as the CUDA device id on that machine. If neither the id of the cluster machine nor the id of the CUDA device is valid (e.g., the host is not listed in cluster) then the affinity definition is ignored.
[in] | subregion | The bounding box of the subregion. The affinity for this subregion is to be provided by the user. |
[out] | host_id | The id of the cluster machine/node where the subregion is supposed to be stored, processed and rendered. The id refers to the node identifier that the DiCE networking environment assigns/defines during startup automatically. |
[out] | host_name | The name of the cluster machine/node where the subregion is supposed to be stored, processed and rendered. If host_id and name don't match, then host_name will be used to query the corresponding host id. That is, the name has priority over the host_id . If host_name is the empty string (which is the default), only host_id will be used. |
[out] | device_id | The CUDA device id on the given cluster machine where the subregion is supposed to be stored, processed and rendered. If set to ANY_GPU then the GPU will be chosen automatically. |
host_id
and gpu_id
should be ignored.