NVIDIA IndeX API nvidia_logo_transpbg.gif Up
idistributed_data_locality.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_IDISTRIBUTED_DATA_LOCALITY_H
8#define NVIDIA_INDEX_IDISTRIBUTED_DATA_LOCALITY_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_declare.h>
12#include <mi/neuraylib/iserializer.h>
13
15
16namespace nv
17{
18namespace index
19{
20
30{
37 mi::Uint32 id; //<! Numerical value that serves as unique identifier.
38};
39
60 public mi::base::Interface_declare<0x841224fe, 0x3c17, 0x43b3, 0xa1, 0xc1, 0xba, 0x30, 0x72, 0xc8, 0x44, 0xf1>
61{
62public:
65 QUERY_MODE_NONE = 0x00u,
68
70 };
71public:
83 virtual const mi::neuraylib::Tag_struct& get_distributed_data_tag() const = 0;
84
91 virtual mi::Uint32 get_query_mode_flags() const = 0;
92};
93
104 public mi::base::Interface_implement<nv::index::IDistributed_data_locality_query_mode>
105{
106public:
112 const mi::neuraylib::Tag_struct& tag) : m_distribute_data_tag(tag) {}
115
121 virtual const mi::neuraylib::Tag_struct& get_distributed_data_tag() const { return m_distribute_data_tag; };
122
128
129private:
130 mi::neuraylib::Tag_struct m_distribute_data_tag;
131};
132
149 public mi::base::Interface_declare<0x841224fe, 0x3c17, 0x43b3, 0xa2, 0xc4, 0xbc, 0x22, 0xa2, 0xa8, 0xcc, 0xa7,
150 nv::index::IDistributed_data_locality_query_mode>
151{
152public:
164 virtual const mi::math::Bbox_struct<mi::Float32, 3>& get_spatial_coverage() const = 0;
165};
166
177 public mi::base::Interface_implement<nv::index::IDistributed_data_subset_locality_query_mode>
178{
179public:
190 const mi::neuraylib::Tag_struct& tag,
191 const mi::math::Bbox_struct<mi::Float32, 3>& coverage)
192 : m_distribute_data_tag(tag),
193 m_spatial_coverage(coverage) {}
194
206 const mi::neuraylib::Tag_struct& tag,
207 const mi::math::Bbox_struct<mi::Sint32, 3>& coverage)
208 : m_distribute_data_tag(tag)
209 {
210 // Following is still unfortunate, i.e., the need to convert to float typed bbox.
211 m_spatial_coverage.min.x = static_cast<mi::Float32>(coverage.min.x);
212 m_spatial_coverage.min.y = static_cast<mi::Float32>(coverage.min.y);
213 m_spatial_coverage.min.z = static_cast<mi::Float32>(coverage.min.z);
214 m_spatial_coverage.max.x = static_cast<mi::Float32>(coverage.max.x);
215 m_spatial_coverage.max.y = static_cast<mi::Float32>(coverage.max.y);
216 m_spatial_coverage.max.z = static_cast<mi::Float32>(coverage.max.z);
217 }
218
221
227 virtual const mi::neuraylib::Tag_struct& get_distributed_data_tag() const { return m_distribute_data_tag; };
228
234
246 virtual const mi::math::Bbox_struct<mi::Float32, 3>& get_spatial_coverage() const { return m_spatial_coverage; };
247
248private:
249 mi::neuraylib::Tag_struct m_distribute_data_tag;
250 mi::math::Bbox_struct<mi::Float32, 3> m_spatial_coverage;
251};
252
273 public mi::base::Interface_declare<0xc985b49c,0xdb6a,0x4808,0x94,0x19,0xe8,0x3c,0xbb,0x69,0x77,0x59,
274 nv::index::IDistributed_data_locality_query_mode>
275{
276public:
287 };
288
294
304 virtual const mi::math::Bbox_struct<mi::Float32, 2>& get_spatial_coverage() const = 0;
305};
306
312 public mi::base::Interface_implement<nv::index::IDistributed_height_field_locality_query_mode>
313{
314public:
328 Height_field_locality_query_mode query_mode,
329 const mi::neuraylib::Tag_struct& tag,
330 const mi::math::Bbox_struct<mi::Float32, 2>& coverage)
331 : m_query_mode(query_mode),
332 m_distribute_data_tag(tag),
333 m_spatial_coverage(coverage) {}
334
349 Height_field_locality_query_mode query_mode,
350 const mi::neuraylib::Tag_struct& tag,
351 const mi::math::Bbox_struct<mi::Sint32, 2>& coverage)
352 : m_query_mode(query_mode),
353 m_distribute_data_tag(tag)
354 {
355 // Following is still unfortunate, i.e., the need to convert to float typed bbox.
356 m_spatial_coverage.min.x = static_cast<mi::Float32>(coverage.min.x);
357 m_spatial_coverage.min.y = static_cast<mi::Float32>(coverage.min.y);
358 m_spatial_coverage.max.x = static_cast<mi::Float32>(coverage.max.x);
359 m_spatial_coverage.max.y = static_cast<mi::Float32>(coverage.max.y);
360 }
361
364
370 virtual Height_field_locality_query_mode get_query_mode() const { return m_query_mode; }
371
377 virtual const mi::neuraylib::Tag_struct& get_distributed_data_tag() const { return m_distribute_data_tag; }
378
384
396 virtual const mi::math::Bbox_struct<mi::Float32, 2>& get_spatial_coverage() const { return m_spatial_coverage; }
397
398private:
399 Height_field_locality_query_mode m_query_mode;
400 mi::neuraylib::Tag_struct m_distribute_data_tag;
401 mi::math::Bbox_struct<mi::Float32, 2> m_spatial_coverage;
402};
403
411 public mi::base::Interface_declare<0xde972a15, 0x1593, 0x4db3, 0xa0, 0x2f, 0xa, 0x3e, 0x46, 0xe0, 0x90, 0xc,
412 nv::index::IDistributed_data_locality_query_mode>
413{
414public:
420 virtual bool is_editing_mode() const = 0;
423 virtual const mi::math::Bbox_struct<mi::Uint32, 2>& get_spatial_coverage() const = 0;
424};
425
433 public mi::base::Interface_implement<nv::index::IRegular_heightfield_locality_query_mode>
434{
435public:
446 const mi::neuraylib::Tag_struct& tag,
447 const mi::math::Bbox_struct<mi::Uint32, 2>& coverage,
448 bool editing_mode = false)
449 : m_editing_mode(editing_mode),
450 m_distribute_data_tag(tag),
451 m_spatial_coverage(coverage) {}
454
460 virtual bool is_editing_mode() const { return m_editing_mode; }
463 virtual const mi::neuraylib::Tag_struct& get_distributed_data_tag() const { return m_distribute_data_tag; }
464
470
473 virtual const mi::math::Bbox_struct<mi::Uint32, 2>& get_spatial_coverage() const { return m_spatial_coverage; }
474
475private:
476 bool m_editing_mode;
477 mi::neuraylib::Tag_struct m_distribute_data_tag;
478 mi::math::Bbox_struct<mi::Uint32, 2> m_spatial_coverage;
479};
480
516 public mi::base::Interface_declare<0x64624ed0,0x6e2a,0x48c9,0xb9,0x73,0x61,0x8d,0x32,0xd0,0x5e,0xf5,
517 mi::neuraylib::ISerializable>
518{
519public:
534 virtual mi::Uint32 get_nb_cluster_nodes() const = 0;
535
559 virtual mi::Uint32 get_cluster_node(mi::Uint32 index) const = 0;
560
583 virtual mi::Size get_nb_bounding_box(mi::Uint32 cluster_node_id) const = 0;
584
620 virtual const mi::math::Bbox_struct<mi::Sint32, 3> get_bounding_box(
621 mi::Uint32 cluster_node_id,
622 mi::Uint32 bounding_box_index) const = 0;
623
645 mi::Uint32 cluster_node_id,
646 mi::Uint32 bounding_box_index) const = 0;
647};
648
650
651
652class IData_assignment :
653 public mi::base::Interface_declare<0x141852fe,0x1a17,0x4ab1,0xc7,0x03,0x3b,0xa0,0x10,0xc1,0xaa,0xf3>
654{
655public:
656 virtual mi::Uint32 get_host_id() const = 0;
657 virtual mi::Uint32 get_sub_cluster_id() const = 0;
658 virtual mi::Sint32 get_device_id() const = 0;
659
660 virtual Subregion_identifier get_subregion() const = 0;
661 virtual const mi::math::Bbox_struct<mi::Float32, 3>& get_subregion_box() const = 0;
662
663 virtual mi::Size get_nb_datasets() const = 0;
664 virtual mi::neuraylib::Tag_struct get_dataset(
665 mi::Uint32 dataset_index,
666 mi::math::Bbox_struct<mi::Float32, 3>& subset_data_bbox) const = 0;
667};
668
669class IDistributed_data_assignments :
670 public mi::base::Interface_declare<0x141852fe,0x1a17,0x4ab1,0xc7,0x03,0x1a,0xa0,0x10,0xc1,0xaa,0xf1>
671{
672public:
673 virtual mi::Size get_nb_assignments() const = 0;
674
675 virtual IData_assignment* get_assignment(mi::Size assignment_index) const = 0;
676 virtual IData_assignment* get_assignment(const mi::math::Bbox_struct<mi::Float32, 3>& bbox) const = 0;
677};
678
692 public mi::base::Interface_declare<0xc37caf77,0xe632,0x46ad,0x8c,0x19,0x6d,0x57,0x56,0x04,0xda,0x68,
693 mi::neuraylib::IElement>
694{
695public:
704
723 const mi::base::Uuid& class_id,
725 mi::neuraylib::IDice_transaction* dice_transaction) const = 0;
726
727
749 template <class T>
752 mi::neuraylib::IDice_transaction* dice_transaction) const
753 {
754 return get_data_locality(typename T::IID(), query_method, dice_transaction);
755 }
756
782 template <class T>
784 mi::neuraylib::Tag_struct tag,
785 const mi::math::Bbox_struct<mi::Float32, 3>& query_bbox,
786 mi::neuraylib::IDice_transaction* dice_transaction) const
787 {
788 mi::base::Handle<IDistributed_data_subset_locality_query_mode> selection(
790 return get_data_locality(typename T::IID(), selection.get(), dice_transaction);
791 }
792
793 virtual IDistributed_data_assignments* get_data_assignments(
794 mi::neuraylib::IDice_transaction* dice_transaction,
795 mi::Uint32 host_id = 0) const = 0;
796};
797
798}} // namespace index / nv
799
800#endif // NVIDIA_INDEX_IDISTRIBUTED_DATA_LOCALITY_H
Implements a query method that selection all data subsets of a distributed dataset for distributed jo...
Definition: idistributed_data_locality.h:105
virtual mi::Uint32 get_query_mode_flags() const
Implements the default query flags.
Definition: idistributed_data_locality.h:127
virtual ~Distributed_data_locality_query_mode()
Implements an empty default destructor.
Definition: idistributed_data_locality.h:114
Distributed_data_locality_query_mode(const mi::neuraylib::Tag_struct &tag)
Instantiating a query method using the distributed dataset unique identifier.
Definition: idistributed_data_locality.h:111
virtual const mi::neuraylib::Tag_struct & get_distributed_data_tag() const
Implements query methods apply to a distributed dataset that is referred to by an unique identifier.
Definition: idistributed_data_locality.h:121
Implements a query method that selection all data subsets of a distributed dataset covered by a regio...
Definition: idistributed_data_locality.h:178
virtual mi::Uint32 get_query_mode_flags() const
Implements the default query flags.
Definition: idistributed_data_locality.h:233
virtual const mi::neuraylib::Tag_struct & get_distributed_data_tag() const
Implements the query method that applies to a distributed dataset that is referred to by an unique id...
Definition: idistributed_data_locality.h:227
virtual ~Distributed_data_subset_locality_query_mode()
Implements an empty default destructor.
Definition: idistributed_data_locality.h:220
Distributed_data_subset_locality_query_mode(const mi::neuraylib::Tag_struct &tag, const mi::math::Bbox_struct< mi::Sint32, 3 > &coverage)
Instantiating a query method using the distributed dataset unique identifier and a given region of in...
Definition: idistributed_data_locality.h:205
Distributed_data_subset_locality_query_mode(const mi::neuraylib::Tag_struct &tag, const mi::math::Bbox_struct< mi::Float32, 3 > &coverage)
Instantiating a query method using the distributed dataset unique identifier and a given region of in...
Definition: idistributed_data_locality.h:189
virtual const mi::math::Bbox_struct< mi::Float32, 3 > & get_spatial_coverage() const
Implements the spatial query method let determine data localities based on a spatial coverage.
Definition: idistributed_data_locality.h:246
Implements the height field specific query mode height field patches.
Definition: idistributed_data_locality.h:313
virtual const mi::math::Bbox_struct< mi::Float32, 2 > & get_spatial_coverage() const
Implements the spatial query method to determine data localities based on a 2D coverage.
Definition: idistributed_data_locality.h:396
virtual mi::Uint32 get_query_mode_flags() const
Implements the default query flags.
Definition: idistributed_data_locality.h:383
virtual Height_field_locality_query_mode get_query_mode() const
implement the height field mode defines if globally or locally unique data subsets shall be considere...
Definition: idistributed_data_locality.h:370
Distributed_height_field_locality_query_mode(Height_field_locality_query_mode query_mode, const mi::neuraylib::Tag_struct &tag, const mi::math::Bbox_struct< mi::Sint32, 2 > &coverage)
Instantiating a query method using the distributed dataset unique identifier and a given area of inte...
Definition: idistributed_data_locality.h:348
virtual const mi::neuraylib::Tag_struct & get_distributed_data_tag() const
Implements the query method that applies to a height field dataset that is referred to by an unique i...
Definition: idistributed_data_locality.h:377
virtual ~Distributed_height_field_locality_query_mode()
Implements an empty default destructor.
Definition: idistributed_data_locality.h:363
Distributed_height_field_locality_query_mode(Height_field_locality_query_mode query_mode, const mi::neuraylib::Tag_struct &tag, const mi::math::Bbox_struct< mi::Float32, 2 > &coverage)
Instantiating a query method using the distributed dataset unique identifier and a given region of in...
Definition: idistributed_data_locality.h:327
Retrieving information about the data distribution and scheduling tasks against distributed data.
Definition: idistributed_data_locality.h:694
IDistributed_data_locality * get_data_locality(IDistributed_data_locality_query_mode *query_method, mi::neuraylib::IDice_transaction *dice_transaction) const
Convenience template functions for creating a typed data locality.
Definition: idistributed_data_locality.h:750
virtual IDistributed_data_locality * get_data_locality(const mi::base::Uuid &class_id, IDistributed_data_locality_query_mode *query_method, mi::neuraylib::IDice_transaction *dice_transaction) const =0
Creating a data locality for the given query method and a given distributed dataset type.
IDistributed_data_locality * get_data_locality(mi::neuraylib::Tag_struct tag, const mi::math::Bbox_struct< mi::Float32, 3 > &query_bbox, mi::neuraylib::IDice_transaction *dice_transaction) const
Convenience template functions for creating a typed data locality.
Definition: idistributed_data_locality.h:783
virtual IDistributed_data_job_scheduler * create_scheduler() const =0
Scheduler that directs distributed data jobs to nodes and GPUs for analyzing and processing large-sca...
Scheduling and launching distributed data analysis and processing jobs.
Definition: idata_distribution.h:249
Query modes enable the purposeful selection of data subsets for data localities.
Definition: idistributed_data_locality.h:61
virtual mi::Uint32 get_query_mode_flags() const =0
Should return a combination of Query_mode_flags to indicate required behavior to NVIDIA IndeX related...
virtual const mi::neuraylib::Tag_struct & get_distributed_data_tag() const =0
Query methods apply to a distributed dataset that is refered to by an unique identifier.
Query_mode_flags
Query methods apply to a distributed dataset that is referred to by an unique identifier.
Definition: idistributed_data_locality.h:64
@ QUERY_MODE_DEFAULT
Default query mode flag.
Definition: idistributed_data_locality.h:69
@ QUERY_MODE_IMPORT_UNAVAILABLE_DATA
Indicates that data-subsets not yet imported should be made available to compute operations.
Definition: idistributed_data_locality.h:66
Data locality information for distributed datasets.
Definition: idistributed_data_locality.h:518
virtual Subregion_identifier get_subregion(mi::Uint32 cluster_node_id, mi::Uint32 bounding_box_index) const =0
Each data subsets is stored on a cluster node are defined inside its local-space bounding box.
virtual mi::Uint32 get_nb_cluster_nodes() const =0
Data subsets are distributed to a number of hosts in a cluster.
virtual const mi::math::Bbox_struct< mi::Sint32, 3 > get_bounding_box(mi::Uint32 cluster_node_id, mi::Uint32 bounding_box_index) const =0
Each data subsets is stored on a cluster node are defined inside its local-space bounding box.
virtual mi::Uint32 get_cluster_node(mi::Uint32 index) const =0
A set of data subsets on a specific cluster node with explicit host identifier.
virtual mi::Size get_nb_bounding_box(mi::Uint32 cluster_node_id) const =0
A cluster node hosts a set of data subsets bound inside their local-space bounding box.
Query modes to determine the data localities of data subsets inside a region of interest.
Definition: idistributed_data_locality.h:151
virtual const mi::math::Bbox_struct< mi::Float32, 3 > & get_spatial_coverage() const =0
Spatial query methods let determine data localities based on a spatial coverage.
Height field specific query modes to determine the data localities of height field patches.
Definition: idistributed_data_locality.h:275
virtual const mi::math::Bbox_struct< mi::Float32, 2 > & get_spatial_coverage() const =0
Spatial query methods let determine data localities based on a 2D spatial coverage.
virtual Height_field_locality_query_mode get_query_mode() const =0
The height field query mode defines if globally or locally unique data subsets shall be considered fo...
Height_field_locality_query_mode
Height field data locality query modes.
Definition: idistributed_data_locality.h:284
@ HEIGHT_FIELD_LOCALITY_QUERY_SUBSETS_UNIQUE_PER_HOST
! Data locality considers locally unique data subsets only.
Definition: idistributed_data_locality.h:286
@ HEIGHT_FIELD_LOCALITY_QUERY_SUBSETS_UNIQUE_CLUSTER
! Data locality considers globally unique data subsets only.
Definition: idistributed_data_locality.h:285
Data locality query mode for deprecated heightfield datasets.
Definition: idistributed_data_locality.h:413
virtual const mi::math::Bbox_struct< mi::Uint32, 2 > & get_spatial_coverage() const =0
The locality query only considers patches that cover or intersect a given 2D spatial area.
virtual bool is_editing_mode() const =0
Editing and a non-editing inspection mode produce different data localities.
Implements a data locality query mode for deprecated heightfield datasets.
Definition: idistributed_data_locality.h:434
virtual mi::Uint32 get_query_mode_flags() const
Implements the default query flags.
Definition: idistributed_data_locality.h:469
virtual const mi::neuraylib::Tag_struct & get_distributed_data_tag() const
The distributed heightfield dataset.
Definition: idistributed_data_locality.h:463
virtual const mi::math::Bbox_struct< mi::Uint32, 2 > & get_spatial_coverage() const
The locality query only considers patches that cover or intersect a given 2D spatial area.
Definition: idistributed_data_locality.h:473
virtual ~Regular_heightfield_locality_query_mode()
Implements an empty default destructor.
Definition: idistributed_data_locality.h:453
virtual bool is_editing_mode() const
Editing and a non-editing inspection mode produce different data localities.
Definition: idistributed_data_locality.h:460
Regular_heightfield_locality_query_mode(const mi::neuraylib::Tag_struct &tag, const mi::math::Bbox_struct< mi::Uint32, 2 > &coverage, bool editing_mode=false)
Instantiating a query method for regular heightfield datasets.
Definition: idistributed_data_locality.h:445
Interfaces for distributed data processing.
Common namespace for all NVIDIA APIs.
Definition: iindex.h:349
Unique identifier refering to a subregion.
Definition: idistributed_data_locality.h:30
mi::Uint32 id
The actual identifier of the subregion refers to a unique spatial area of NVIDIA IndeX's spatial subd...
Definition: idistributed_data_locality.h:37