NVIDIA IndeX API nvidia_logo_transpbg.gif Up
nv::index::IDistributed_data_import_callback Class Referenceabstract

Import callback mechanism for implementing distributed and parallel data loading from arbitrary sources. More...

#include <idistributed_data_import_callback.h>

Inherits mi::base::Interface_declare< 0x61a87e48, ... >.

Public Member Functions

virtual mi::Size estimate (const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::neuraylib::IDice_transaction *dice_transaction) const =0
 Shall provide the size of the dataset that is contained in the given bounding box. More...
 
virtual IDistributed_data_subsetcreate (const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const =0
 Shall create and provide the dataset subset contained in the given bounding box. More...
 
virtual IDistributed_data_subsetcreate (const mi::math::Bbox_struct< mi::Float32, 3 > &bounding_box, mi::Uint32 time_step, IData_subset_factory *factory, mi::neuraylib::IDice_transaction *dice_transaction) const =0
 Shall create and provide the dataset subset contained in the given bounding box for a given time step. More...
 
virtual mi::base::Uuid subset_id () const =0
 Shall provide the interface id that tells the NVIDIA IndeX library the kind of IDistributed_data_subset that the importer supports. More...
 
virtual const IDistributed_data_propertiesget_dataset_properties () const =0
 Shall provide an instance of IDistributed_data_properties giving basic property information about the dataset imported through the current instance of this import callback. More...
 
virtual const char * get_configuration () const =0
 Returns optional configuration settings that may be used by the library for the session export mechanism provided by ISession::export_session(). More...
 

Detailed Description

Import callback mechanism for implementing distributed and parallel data loading from arbitrary sources.

The IDistributed_data_import_callback interface enables the distributed cluster-wide uploading of large-scale data, such as 3D volumetric data or 2.5D height field surface data. In general, the distributed, parallel rendering and computing algorithms are based on a spatial decomposition scheme that subdivides the 3D space into subregions. Each of these subregions contains a subset of the entire dataset. The distributed data import callback implement the upload of the subset data contained in subregions.

Derived classes typically declare additional member variables. For instance, importers that read the data from a file server require the file and directory names where a dataset is stored.

Consequently, a derived class has to implement the methods of the (mi::neuraylib::ISerializable) interface class properly, i.e., care needs to be taken to correctly serialize and deserialize the additional member variables to ensure correct network transfer of the class's representation.

Whenever the subregion that contains part of the entire data is processed by the distributed rendering and computing solution, the NVIDIA IndeX library calls create() and passes a bounding box. The bounding box is given in the dataset's local space and defines the 3D area for which the data of the dataset subset needs to be imported.

Member Function Documentation

 create() [1/2]

virtual IDistributed_data_subset * nv::index::IDistributed_data_import_callback::create ( const mi::math::Bbox_struct< mi::Float32, 3 > &  bounding_box,
IData_subset_factory factory,
mi::neuraylib::IDice_transaction *  dice_transaction 
) const
pure virtual

Shall create and provide the dataset subset contained in the given bounding box.

Parameters
[in]bounding_boxThe 3D area for which data shall be imported. The bounding box is given in the dataset's local space.
[in]factoryA factory class that creates a dataset subset of a given kind on request (see also subset_id()).
[in]dice_transactionThe DiCE database transaction that the operation runs in. The transaction may be invalid indicating an asynchronous data import operation.
Returns
Returns the portion of the dataset contained in the 3D area.

 create() [2/2]

virtual IDistributed_data_subset * nv::index::IDistributed_data_import_callback::create ( const mi::math::Bbox_struct< mi::Float32, 3 > &  bounding_box,
mi::Uint32  time_step,
IData_subset_factory factory,
mi::neuraylib::IDice_transaction *  dice_transaction 
) const
pure virtual

Shall create and provide the dataset subset contained in the given bounding box for a given time step.

Parameters
[in]bounding_boxThe 3D area for which data shall be imported. The bounding box is given in the dataset's local space.
[in]time_stepThe time step for which data shall be imported.
[in]factoryA factory class that creates a dataset subset of a given kind on request (see also subset_id()).
[in]dice_transactionThe DiCE database transaction that the operation runs in. The transaction may be invalid indicating an asynchronous data import operation.
Returns
Returns the portion of the dataset contained in the 3D area.

 estimate()

virtual mi::Size nv::index::IDistributed_data_import_callback::estimate ( const mi::math::Bbox_struct< mi::Float32, 3 > &  bounding_box,
mi::neuraylib::IDice_transaction *  dice_transaction 
) const
pure virtual

Shall provide the size of the dataset that is contained in the given bounding box.

The size should approximate the number of primary items in the bounding box (e.g. voxels, cells, pixels). If the size is zero, the bounding box region will be seen as empty, and not considered for further processing.

Parameters
[in]bounding_boxThe bounding box of the subset in the dataset's local space.
[in]dice_transactionThe DiCE database transaction that the operation runs in.
Returns
Returns the approximate number of items contained in the given 3D area.

 get_configuration()

virtual const char * nv::index::IDistributed_data_import_callback::get_configuration ( ) const
pure virtual

Returns optional configuration settings that may be used by the library for the session export mechanism provided by ISession::export_session().

The returned string shall contain individual setting entries separated by newlines ('
'). Each entry is a key value pair separated by an equal sign ('='). Entries without an equal sign are considered as comments.

Example: "key1=value1\ncomment\nkey2=value2\n"

Returns
String representation of the configuration settings, the callee keeps ownerships.

 get_dataset_properties()

virtual const IDistributed_data_properties * nv::index::IDistributed_data_import_callback::get_dataset_properties ( ) const
pure virtual

Shall provide an instance of IDistributed_data_properties giving basic property information about the dataset imported through the current instance of this import callback.

Note
Currently it is optional for implementations of IDistributed_data_import_callback to provide a IDistributed_data_properties instance. In cases where it is not provided this query shall return a NULL pointer.
Returns
An instance of IDistributed_data_properties describing basic properties of the imported dataset.

 subset_id()

virtual mi::base::Uuid nv::index::IDistributed_data_import_callback::subset_id ( ) const
pure virtual

Shall provide the interface id that tells the NVIDIA IndeX library the kind of IDistributed_data_subset that the importer supports.

For instance, data of a sparse volume is handled by ISparse_volume_subset, which also defines the data representation (e.g. uint8 or float). The library has to be aware of the kind of data to manage the internal data representation and memory allocations. The factory class is able to create the appropriate instance of the data subset representation.

Returns
The UUID represent the type of the distributed data subset.

The documentation for this class was generated from the following file: