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 Overview • 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 3
VOLUME SHADING USING USER-DEFINED SAMPLE PROGRAMS (‘SHADER’) 4
NVIDIA INDEX Example Volume Program (CUDA C++) class NV_IDX_volume_sample_program { NV_IDX_VOLUME_SAMPLE_PROGRAM view ray public: NV_IDX_DEVICE_INLINE_MEMBER samples void init_instance () { // … int execute ( } int execute ( const float3& const float3& int execute ( sample_pos , sample_pos , const float3& int execute ( float4& color ) NV_IDX_DEVICE_INLINE_MEMBER sample_pos , float4& color ) const float3& { int execute ( int execute ( const NV_IDX_sample_info_self& sample_info , { float4& color ) sample_pos , color = foo(sample_pos) ; int execute ( const float3& float4& output_color ) color = foo(sample_pos) ; { float4& color ) return NV_IDX_PROG_OK ; volume domain sample_pos , const float3& { color = foo(sample_pos) ; { } return NV_IDX_PROG_OK ; sample_pos , float4& color ) } return NV_IDX_PROG_OK ; color = foo(sample_pos) ; float4& color return NV_IDX_PROG_OK; { } return NV_IDX_PROG_OK ; color = foo(sample_pos) ; { } } color = foo(sample_p return NV_IDX_PROG_OK ; } return NV_IDX_PROG_O } }; 5
NVIDIA INDEX Example Surface Program (CUDA C++) class NV_IDX_surface_sample_program { NV_IDX_VOLUME_SAMPLE_PROGRAM view rays samples 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, object surface float4& output_color ) { return NV_IDX_PROG_OK; } }; 6
NVIDIA INDEX CUDA Programming Interface 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 7
NVIDIA INDEX CUDA Programming Interface 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 • … 8
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) 9
LIVE TUTORIAL 10
NVIDIA INDEX Wrap Up • introduction to CUDA sample programming STAG BEETLE • implementing sample programs for Supernova WWW.CG.TUWIEN.AC.AT/RESEARCH/PUBLICATIONS/2005/DATASET-STAGBEETLE/ • 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 11 GLOBAL WEATHER SIMULATION ICON, HTTPS://WWW.MPIMET.MPG.DE/EN/SCIENCE/MODELS/ICON-LEM/
NVIDIA INDEX DOCKER IMAGE AVAILABLE THROUGH NGC REPOSITORY https://ngc.nvidia.com (requires Chrome or Chromium browser) 12
APPENDIX 13
Life Science (Microscopy, Brain of a Fly) 14
Climate Research (Weather Simulation) 15
NVIDIA INDEX FOR PARAVIEW PLUGIN ON NGC 16
NVIDIA INDEX FOR PARAVIEW PLUGIN ON NGC 17
LATEST NVIDIA 2.0 INDEX FEATURES Available Q2 2018 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 18
RTC TRANSFORMATION HANDLING World Space global scene transformation (M4x4f) Scene Space object transformations (M4x4f) Meshes Regular Volume Height Field Shapes (Object Space) (Object Space) (Object Space) (Object Space) object grid transformations Sample Space Sample Space Sample Space Sample Space 19
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 20
NVIDIA INDEX Overview • 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 21
Recommend
More recommend