Upload
lamdien
View
241
Download
0
Embed Size (px)
Citation preview
Alexander Kuhn and Marc Nienhaus, March 29, 2018
NVIDIA INDEXIMPLEMENTING ADVANCED DATA VISUALIZATION WITH NVIDIA INDEX
3
NVIDIA INDEX 2.0
• NVIDIA IndeX 2.0 Features:
• programmable rendering programs (CUDA),using real-time compiler
• allows access to scene data,highly customizable visualization
• IndeX controls parallelization & data distribution
• Access through NVIDIA GPU Cloud (NGC)
• https://ngc.nvidia.com
Overview
5
NVIDIA INDEX
class NV_IDX_volume_sample_program{
NV_IDX_VOLUME_SAMPLE_PROGRAM
public: NV_IDX_DEVICE_INLINE_MEMBERvoid init_instance() {
// …}
NV_IDX_DEVICE_INLINE_MEMBERint execute( const NV_IDX_sample_info_self& sample_info,
float4& output_color){
return NV_IDX_PROG_OK; }
};
Example Volume Program (CUDA C++)
volume domain
view ray
samples
int execute(
const float3&
sample_pos,
float4& color
{
color = foo(sample_pos
return NV_IDX_PROG_OK
}
int execute(
const float3&
sample_pos,
float4& color)
{
color = foo(sample_pos);
return NV_IDX_PROG_OK;
}
int execute(
const float3&
sample_pos,
float4& color)
{
color = foo(sample_pos);
return NV_IDX_PROG_OK;
}
int execute(
const float3&
sample_pos,
float4& color)
{
color = foo(sample_pos);
return NV_IDX_PROG_OK;
}
int execute(
const float3&
sample_pos,
float4& color)
{
color = foo(sample_pos);
return NV_IDX_PROG_OK;
}
int execute(
const float3&
sample_pos,
float4& color)
{
color = foo(sample_pos);
return NV_IDX_PROG_OK;
}
6
NVIDIA INDEX
class NV_IDX_surface_sample_program{
NV_IDX_VOLUME_SAMPLE_PROGRAM
public: NV_IDX_DEVICE_INLINE_MEMBERvoid init_instance() {
// …}
NV_IDX_DEVICE_INLINE_MEMBERint execute( const NV_IDX_sample_info_self& sample_info,
float& sample_depth,float4& output_color)
{ return NV_IDX_PROG_OK;
}
};
Example Surface Program (CUDA C++)
object surface
view rays samples
7
NVIDIA INDEX
Example Data & Shape Objects:
• NV_IDX_volume regular 3D volume
• NV_IDX_plane simple plane object
• NV_IDX_shape simple shape (here: ellipsoid)
Available Scene Access Objects:
• NV_IDX_state main state class state
• NV_IDX_scene scene reference container state.scene
• NV_IDX_ray sampling ray state.scene.ray
• NV_IDX_camera camera object state.scene.camera
• NV_IDX_colormap colormap reference object
CUDA Programming Interface
8
NVIDIA INDEX
Example Default IndeX Library Functionality
• CUDA standard operators
• Scene object access functions
• Algebraic operations
• basic vector & matrix operations
• transformation functionality
• Convenience operators
• gamma operations
• shading functions
• …
CUDA Programming Interface
9
NVIDIA INDEXReal Time Compilation Interface
IndeX Tutorial:
1. Basic Functions and Program Layout
• volume access & sampling
• colormapping and modification
2. Extended CUDA Kernel Parameter Support
• access scene shapes
• simple shading operations
3. Basic Scene Element Access
• sampling planes
• simple shapes (spheres)
11
NVIDIA INDEX
• introduction to CUDA sample programming
• implementing sample programs for Supernova
• download docker container at:
• ngc.nvidia.com and try yourself
• send us your feedback!
https://developer.nvidia.com/index
Wrap Up
STAG BEETLEWWW.CG.TUWIEN.AC.AT/RESEARCH/PUBLICATIONS/2005/DATASET-STAGBEETLE/
GLOBAL WEATHER SIMULATIONICON, HTTPS://WWW.MPIMET.MPG.DE/EN/SCIENCE/MODELS/ICON-LEM/
12
NVIDIA INDEX DOCKER IMAGE AVAILABLE THROUGH NGC REPOSITORY
https://ngc.nvidia.com (requires Chrome or Chromium browser)
18
LATEST NVIDIA 2.0 INDEX FEATURES
CUDA programmable advanced visualizationSpeed up the discovery process
CUDA programmable data query operationsBetter justify observed phenomena
DGX technology optimized NVIDIA IndeXAccelerate data visualization process
NVIDIA OptiX TechnologyVisualize the most complex data structures
Application LayerConvenience functionalities simplifies the integration of NVIDIA IndeX
Available Q2 2018
19
RTC TRANSFORMATION HANDLING
World Space
Scene Space
Regular Volume
(Object Space)
Height Field
(Object Space)
Shapes
(Object Space)
Meshes
(Object Space)
Sample Space Sample Space Sample Space
global scene
transformation(M4x4f)
object
transformations(M4x4f)
object grid
transformations
Sample Space
20
NVIDIA INDEXReal Time Compilation Interface
Basic Tipps & Tricks
• Use CUDA standard functions carefully
•avoid forced synchs
•avoid dynamic memory allocations
• Adapt kernel complextiy
• avoid recomputations
• e.g. expensive filtering should move into pre-processing stage
• only perform lookups & sampling when really required
• Custom kernel speed up tweeks maybe valuable
• e.g. discard very low alpha values
• Currently no save, keep kernels in separate editor