Alexander Kuhn and Marc Nienhaus, March 29, 2018
NVIDIA INDEX IMPLEMENTING ADVANCED DATA VISUALIZATION WITH NVIDIA - - PowerPoint PPT Presentation
NVIDIA INDEX IMPLEMENTING ADVANCED DATA VISUALIZATION WITH NVIDIA - - PowerPoint PPT Presentation
NVIDIA INDEX IMPLEMENTING ADVANCED DATA VISUALIZATION WITH NVIDIA INDEX Alexander Kuhn and Marc Nienhaus, March 29, 2018 NVIDIA INDEX Analyze Large-Scale Data for Faster Discoveries INTERACTIVE SCALABLE CLOUD MASSIVE 2 NVIDIA INDEX 2.0
2
NVIDIA INDEX
Analyze Large-Scale Data for Faster Discoveries INTERACTIVE SCALABLE CLOUD MASSIVE
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
4
VOLUME SHADING USING USER-DEFINED SAMPLE PROGRAMS (‘SHADER’)
5
NVIDIA INDEX
class NV_IDX_volume_sample_program { NV_IDX_VOLUME_SAMPLE_PROGRAM public: NV_IDX_DEVICE_INLINE_MEMBER void init_instance() { // … } NV_IDX_DEVICE_INLINE_MEMBER int 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_p return NV_IDX_PROG_O } 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_MEMBER void init_instance() { // … } NV_IDX_DEVICE_INLINE_MEMBER int 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++)
- bject 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 INDEX
Real 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)
10
LIVE TUTORIAL
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!
akuhn@nvidia.com mnienhaus@nvidia.com https://developer.nvidia.com/index
Wrap Up
STAG BEETLE
WWW.CG.TUWIEN.AC.AT/RESEARCH/PUBLICATIONS/2005/DATASET-STAGBEETLE/
GLOBAL WEATHER SIMULATION
ICON, 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)
13
APPENDIX
14
Life Science
(Microscopy, Brain of a Fly)
15
Climate Research
(Weather Simulation)
16
NVIDIA INDEX FOR PARAVIEW PLUGIN ON NGC
17
NVIDIA INDEX FOR PARAVIEW PLUGIN ON NGC
18
LATEST NVIDIA 2.0 INDEX FEATURES
CUDA programmable advanced visualization
Speed up the discovery process
CUDA programmable data query operations
Better justify observed phenomena
DGX technology optimized NVIDIA IndeX
Accelerate data visualization process
NVIDIA OptiX Technology
Visualize the most complex data structures
Application Layer
Convenience 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)
- bject
transformations
(M4x4f)
- bject grid
transformations
Sample Space
20
NVIDIA INDEX
Real 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
21
NVIDIA INDEX
- distributed, parallel rendering framework
- strong scalability, massive data support
- interactive, real-time data exploration
- programmable CUDA sample programs
- available as:
1. docker container 2. ParaView Plugin