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

Interface class for user-defined techniques for computing data (2D textures on plane and heightfield shapes and 3D volume data) on demand. More...

#include <idistributed_compute_technique.h>

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

Public Types

enum  Invocation_mode {
  INDIVIDUAL ,
  GROUPED_PER_DEVICE ,
  GROUPED_PER_HOST
}
 

Public Member Functions

virtual void launch_compute (IDistributed_compute_destination_buffer_container *dst_buffer_container, mi::neuraylib::IDice_transaction *dice_transaction) const =0
 Launches the user-defined compute technique. More...
 
virtual bool is_gpu_operation () const =0
 Return whether the compute technique will work on the potentially exposed device data directly. More...
 
virtual Invocation_mode get_invocation_mode () const =0
 This mode controls how IndeX is providing the destination buffers for multiple data subsets to an instance of the compute technique implementation. More...
 
virtual const char * get_configuration () const
 Returns optional configuration settings that may be used by the library for the session export mechanism provided by ISession::export_session(). More...
 

Detailed Description

Interface class for user-defined techniques for computing data (2D textures on plane and heightfield shapes and 3D volume data) on demand.

An implementation of this class can be assigned as a scene description attribute to an compute-enabled scene element, such as IPlane, IRegular_heightfield or ISparse_volume_scene_element. When rendering a certain area of the scene primitive (defined by the renderer), the compute technique is called and an instance of an IDistributed_compute_destination_buffer is passed. The compute technique fills this buffer for the required subregions of the distributed dataset. The renderer then maps either the generated data directly (ISparse_volume_scene_element) or uses it as a texture mapped onto the defined 2D area (c IPlane and IRegular_heightfield).

Typical use cases for the compute technique are to visualize data that result from complex, possibly distributed, computing processes either as 2D textures or 3D volumes.

Member Enumeration Documentation

 Invocation_mode

Enumerator
INDIVIDUAL 

The launch_compute() callback will be invoked for each data-subset individually.

GROUPED_PER_DEVICE 

The launch_compute() callback will be invoked with a list of all data-subsets grouped per device.

GROUPED_PER_HOST 

The launch_compute() callback will be invoked with a list of all data-subsets grouped per host.

Member Function Documentation

 get_configuration()

virtual const char * nv::index::IDistributed_compute_technique::get_configuration ( ) const
inlinevirtual

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

See also
IDistributed_data_import_callback::get_configuration()
Returns
String representation of the configuration settings, the instance of the interface class keeps ownership of the returned pointer.

 get_invocation_mode()

virtual Invocation_mode nv::index::IDistributed_compute_technique::get_invocation_mode ( ) const
pure virtual

This mode controls how IndeX is providing the destination buffers for multiple data subsets to an instance of the compute technique implementation.

The application can control whether to receive all jobs individually and in parallel, or grouped per device or host.

Returns
The expected invocation mode for the compute technique.

 is_gpu_operation()

virtual bool nv::index::IDistributed_compute_technique::is_gpu_operation ( ) const
pure virtual

Return whether the compute technique will work on the potentially exposed device data directly.

Some NVIDIA IndeX data-access interfaces exposed by the particular IDistributed_compute_destination_buffer interfaces allow manipulation of GPU-located data directly (e.g., ISparse_volume_subset). This function communicates to IndeX if the device data is accessed or manipulated in order to change the internal data residency scheduling during the NVIDIA IndeX rendering operation when the compute task is invoked.

Returns
Returns true if the compute technique will operate on the potentially exposed device data directly.

 launch_compute()

virtual void nv::index::IDistributed_compute_technique::launch_compute ( IDistributed_compute_destination_buffer_container *  dst_buffer_container,
mi::neuraylib::IDice_transaction *  dice_transaction 
) const
pure virtual

Launches the user-defined compute technique.

This method is called by the rendering system in a separate thread to trigger the computation of the buffers data asynchronously and in parallel to the rendering of subregion data.

Note
This method must only return upon finishing the all compute tasks.
Parameters
[in,out]dst_buffer_containerA set of instances of a IDistributed_compute_destination_buffer representing either a IDistributed_compute_destination_buffer_2d_texture for generating 2D texture data or a specialization of IDistributed_compute_destination_buffer_3d_volume for generating 3D volume data. Part of destination buffers attributes are set by the rendering system. These include, for instance, the bounding box of the subregion or the 2D screen space area covered by the subregion. The destination buffers are created by and will be cached inside the rendering system.
[in]dice_transactionThe current DiCE transaction.

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