CINXE.COM
Kaolin Tools for 3D Deep Learning Research | NVIDIA Developer
<!DOCTYPE html> <html lang='en' class='h-100'> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="beE5FGNYLlx3FC8zZIKL9UjFm37UMhsPLl_XWPJ6dXmPQNU-eOYE_nJNGt4MFeQhGC_XurbJTkqdLvJlKNVjCQ" /> <meta name="csp-nonce" /> <title>Kaolin Tools for 3D Deep Learning Research | NVIDIA Developer</title> <meta name="description" content="Accelerate 3D deep learning research for neural fields, rendering, and more.."> <meta name="keywords" content="neural fields, rendering, 3d data, synthetic data, nvidia"> <link rel="canonical" href="https://developer.nvidia.com/kaolin"> <link rel="alternate" href="https://developer.nvidia.com/kaolin" hreflang="x-default"> <link rel="alternate" href="https://developer.nvidia.com/kaolin" hreflang="en-us"> <link rel="alternate" href="https://developer.nvidia.cn/kaolin" hreflang="zh-cn"> <meta property="og:site_name" content="NVIDIA Developer"> <meta property="og:title" content="Kaolin Suite of Tools"> <meta property="og:description" content="Accelerate 3D deep learning research with Kaolin Library, Kaolin Wisp, and Omniverse Kaolin app"> <meta property="og:type" content="website"> <meta property="og:image" content="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/images/nvidia-analytics-2c50-p%402x.jpg"> <meta property="og:url" content="https://developer.nvidia.com/kaolin"> <meta name="twitter:title" content="NVIDIA Kaolin Suite of Tools"> <meta name="twitter:description" content="Accelerate 3D deep learning research for neural fields, rendering, and more, with Kaolin Library, Kaolin Wisp, and Omniverse Kaolin app."> <meta name="twitter:image" content="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/images/nvidia-analytics-2c50-p%402x.jpg"> <meta name="twitter:site" content="@NVIDIA"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:creator" content="@NVIDIAAIDev"> <meta property="interest" content="Simulation / Modeling / Design,SIGGRAPH"> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/application-850056c0e23225daee0fd1b592d57245911c990e3aefce82212f37ebf18d96de.css" media="all" /> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/one-trust-bea625cf16a072ce5fdb0707a19f2645daf63c05eb1a016db72773eba008fc07.css" /> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="3e2b62ff-7ae7-4ac5-87c8-d5949ecafff5"></script> <script type="text/javascript" src="https://images.nvidia.com/aem-dam/Solutions/ot-js/ot-custom.js"></script> <script> function OptanonWrapper() { let event = new Event('bannerLoaded'); window.dispatchEvent(event); if (window.OnetrustActiveGroups && window.OnetrustActiveGroups.includes("C0002")) { window.DD_RUM && window.DD_RUM.init({ clientToken: 'pub0430c74fae5d2b467bcb8d48b13e5b32', applicationId: '9fc963c7-14e6-403d-bdec-ee671550bb7f', site: 'datadoghq.com', service: 'devzone', env: 'production', version: '', sessionSampleRate: 10, sessionReplaySampleRate: 5, trackUserInteractions: true, trackResources: true, trackLongTasks: true, defaultPrivacyLevel: 'mask-user-input', }); } } </script> <script> (function() { var didInit = false; function initMunchkin() { if(didInit === false) { didInit = true; Munchkin.init('156-OFN-742'); } } var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//munchkin.marketo.net/munchkin.js'; s.onreadystatechange = function() { if (this.readyState == 'complete' || this.readyState == 'loaded') { initMunchkin(); } }; s.onload = initMunchkin; document.getElementsByTagName('head')[0].appendChild(s); })(); </script> <meta name='typesense-host' content='typesense.svc.nvidia.com'> <meta name='typesense-key' content='uFs9XGl9BWS7af7eAIbKNQ49sJnjEfQk'> <script src="https://developer.download.nvidia.com/scripts/typesense.js"></script> <script src="https://assets.adobedtm.com/5d4962a43b79/c1061d2c5e7b/launch-191c2462b890.min.js" data-ot-ignore="true"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" integrity="sha512-STof4xm1wgkfm7heWqFJVn58Hm3EtS31XFaagaa8VMReCXAkQnJZ+jEy8PCC/iT18dFy95WcExNHFTqLyp72eQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/bootstrap/5.1.3/bootstrap.bundle.min-51ad1d8cab4ebd9873a0429f5e67ca717a71fd96daf8025bc04a88848e5b375c.js"></script> <link rel="icon" type="image/x-icon" href="https://dirms4qsy6412.cloudfront.net/assets/favicon-81bff16cada05fcff11e5711f7e6212bdc2e0a32ee57cd640a8cf66c87a6cbe6.ico" /> </head> <body class='d-flex flex-column h-100'> <div id='header'></div> <div id='page-mobile-nav-container'></div> <div class='page'> <div class="product-page"><div class="container breadcrumb-container"><div class="col"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="/">Home</a></li><div id="ibrfew-5" class="breadcrumb-item">Kaolin</div></ol></div></div><div id="iifml" class="container page"><div class="row"><div class="col-xl-9 col-lg-9 col-md-12 col-sm-12 col-main-content"><main class="page__content"><section class="page__section page__first-section"><div class="separator separator--no-scale product-page d-md-block d-lg-none"></div><h1 title="NVIDIA Kaolin Library" class="h--large section__heading toc-item mb-0">NVIDIA Kaolin Library<br></h1><div class="separator separator--45"></div><p class="p--large text-color-gray mb-0">Kaolin is a library for accelerating 3D Deep Learning research.<br></p><div class="separator separator--30"></div><p class="mb-0"><a href="https://github.com/NVIDIAGameWorks/kaolin/" target="_blank" class="btn btn-cta">Download Kaolin Library<br></a></p><div class="separator separator--45"></div></section><div class="separator product-page"></div> <div id="ilcrb5"><div class="row"><div class="col col-xl-9"><div class="ratio ratio-16x9"><video id="i9g029" src="https://developer.download.nvidia.com/kaolin/videos/Kaolin_explainer_mid.mp4" controls=""></video></div></div></div></div><p id="iqntij" class="mt-2">Kaolin is a suite of tools for 3D deep learning research <br></p><div class="separator separator--no-scale product-page"></div><section class="page__section page__second-section pb-0 pt-0"><h2 title="Key Features" class="h--medium section__heading toc-item">Key Features <br></h2><p class="p--large text-color-gray mb-0">The Kaolin library provides a PyTorch API for working with a variety of 3D representations. It includes a growing collection of GPU-optimized operations such as modular differentiable rendering, fast conversions between representations, data loading, camera classes, volumetric acceleration data structures, 3D checkpoints, and more.<br></p><div class="separator tablet-45 separator--45"></div><div class="separator product-page tablet-45"></div><div id="i8ak0r-2"><div class="row"><div class="col col-xl-6"><h3 id="i78hmy-2" class="h--smaller">Continuous Additions from NVIDIA Research<br></h3><p id="i2yas-2">Follow library releases for new research components from the NVIDIA Toronto AI Lab and across NVIDIA. Latest releases included <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.non_commercial.html#kaolin.non_commercial.FlexiCubes" id="idwaze" target="_blank">FlexiCubes</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.conversions.html#kaolin.ops.conversions.marching_tetrahedra" id="i7yr8l" target="_blank">Deep Marching Tetrahedra</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.mesh.html#kaolin.ops.mesh.subdivide_trianglemesh" id="i4gkfk" target="_blank">differentiable mesh subdivision</a>, and structured point clouds (SPCs) acceleration data structure supporting efficient volumetric rendering.<br></p></div><div class="col"><img alt="Kaolin supports 3D structure and 2D mesh rendering of images" src="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/updated_continuous_updates.png" class="img-fluid"><a id="igcw0k-2" href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div></div></div><div class="separator tablet-45 separator--60"></div><div id="i1dl5i"><div class="row"><div class="col"><img alt="Representation agnostic physics simulation" src="https://developer.download.nvidia.com/images/KaolinPhysicsgif2-optimize.gif" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div><div class="col col-xl-6"><h3 class="h--smaller">Representation Agnostic Physics Simulation<br></h3><p id="iv4jc7">We present a versatile framework for reduced elastic simulations of 3D objects in any geometric representation such as 3D Gaussian Splats, SDFs, point-clouds, and even medical scans. Our mesh-free, grid-free method utilizes implicit neural fields to construct a physics-aware subspace of the object via our data-free training process using the latest Simplicits method.<br></p></div></div></div><div class="separator product-page tablet-45"></div><div class="separator product-page tablet-45"></div><div class="separator tablet-45 separator--60"></div><div id="ix2f1l"><div class="row"><div class="col col-xl-6"><h3 class="h--smaller">Modular Differentiable Rendering<br></h3><p id="illzhp">Develop cutting-edge inverse graphics applications using modular and optimized implementations of differentiable rendering. This includes a <a href="https://kaolin.readthedocs.io/en/latest/notes/differentiable_camera.html" id="ihrmo8" target="_blank">differentiable camera API</a>, a <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#kaolin.render.mesh.rasterize" id="ilbzg3" target="_blank">mesh differentiable renderer</a> with two rasterization backends, an implementation of <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.lighting.html#kaolin.render.lighting.SgLightingParameters" id="i9aptt" target="_blank">Spherical Gaussians as environment maps</a> for <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.lighting.html#kaolin.render.lighting.sg_diffuse_fitted" id="ih6sfm" target="_blank">diffuse</a> and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.lighting.html#kaolin.render.lighting.sg_warp_specular_term" id="irzwm5" target="_blank">specular</a> lighting, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#kaolin.render.mesh.deftet_sparse_render" id="i7f7uv" target="_blank">DefTet tetrahedral meshes volumetric rendering</a>, and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.spc.html" id="i1l044" target="_blank">ray-tracing features for SPCs</a>, allowing both surface and volumetric differentiable rendering. Finally store the materials information in a <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.materials.html#kaolin.render.materials.PBRMaterial" id="io9g1k" target="_blank">PBRMaterial class</a>.</p></div><div class="col"><img alt="Develop inverse graphics apps with modular differentiable rendering" src="https://developer.download.nvidia.com/images/pipeline.png" class="img-fluid"><div class="separator tablet-45 mt-2"></div><p id="ihyc6o" class="text-center"><a href="https://research.nvidia.com/labs/toronto-ai/DIBRPlus/" id="ifzvrl" target="_blank">DIB-R++: Learning to Predict Lighting and Material with a Hybrid Differentiable Renderer</a><br></p><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div></div></div><div class="separator tablet-45 separator--60"></div><div id="iooupf"><div class="row"><div class="col"><img alt="Inspecting a 3D model in Jupyter Notebook" src="https://developer.download.nvidia.com/images/KaolinJup2-optimize.gif" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div><div class="col col-xl-6"><h3 class="h--smaller">Jupyter Notebook 3D Debugging<br></h3><p id="ibx3m8">Many 3D deep learning methods use a custom rendering function, such as implicit representations or custom differentiable renderers. Kaolin Library provides a utility to debug and inspect these 3D renderings in an interactive viewer, directly in a Jupyter notebook, with only a couple lines of code. <br></p></div></div></div><div class="separator tablet-45 separator--60"></div><div id="iezrey"><div class="row"><div class="col col-xl-6"><h3 class="h--smaller">USD Integration in Omniverse<br></h3><p id="il997a">Connecting 3D research to USD content on a live USD stage rendered in NVIDIA Omniverse is easy with Kaolin Library. For example, currently rendered 3D models can be easily converted into PyTorch tensors, ingestible by AI. For a code sample, refer to our <a href="https://research.nvidia.com/labs/toronto-ai/DiffusionTexturePainting/" target="_blank" id="id6s2k">AI Texture Painting</a> extension. <br></p></div><div class="col"><img alt="Painting a winding path in a fantasy house garden using the AI Texture Painting Omniverse extension." src="https://developer.download.nvidia.com/images/ai-texture-painting.png" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div></div></div><div class="separator tablet-45 separator--60"></div><div id="it4pyg"><div class="row"><div class="col"><img alt="Load large 3D datasets to train machine learning models" src="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/kaolin/kaolin_003a.png" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div><div class="col col-xl-6"><h3 class="h--smaller">Consistent 3D Data Loading <br></h3><p id="ig1sgf">Load USD, OBJ and glTF 3D formats into a consistent pytorch representation with Kaolin Library import utilities.Easily load large 3D datasets to train machine learning models. <br></p></div></div></div><div class="separator tablet-45 separator--60"></div><div id="iuh6ch"><div class="row"><div class="col col-xl-6"><h3 class="h--smaller">GPU-Optimized 3D Operations<br></h3><p id="itl116">Convert between 3D representations using fast and reliable conversion operations, including <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.conversions.html#kaolin.ops.conversions.voxelgrids_to_trianglemeshes" target="_blank" id="ivjwyl">marching cube</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.conversions.html#kaolin.ops.conversions.marching_tetrahedra" target="_blank" id="iqbyxe">marching tetrahedra</a> and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.non_commercial.html#kaolin.non_commercial.FlexiCubes" target="_blank" id="iibaf6">Flexicubes</a>, point cloud sampling from mesh and various conversion to SPCs. Use GPU-optimized implementations of 3D loss functions such as <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.trianglemesh.html#kaolin.metrics.trianglemesh.point_to_mesh_distance" target="_blank" id="iqp4d9">point-to-mesh distance</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.pointcloud.html#kaolin.metrics.pointcloud.sided_distance" target="_blank" id="ip3siz">nearest point distance</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.pointcloud.html#kaolin.metrics.pointcloud.chamfer_distance" target="_blank" id="i23a3h">chamfer distance</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.tetmesh.html#kaolin.metrics.tetmesh.amips" target="_blank" id="iyih2s">AMIPS loss</a>, and a collection of other operations on 3D data, such as <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.mesh.html" target="_blank" id="is9dtu">topology processing on mesh</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.voxelgrid.html#kaolin.ops.voxelgrid.extract_odms" target="_blank" id="iwq9qj">extraction</a> and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.voxelgrid.html#kaolin.ops.voxelgrid.project_odms" target="_blank" id="i7sm9h">projection</a> of orthographic depth maps, and operations on SPCs such as <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.spc.html#kaolin.ops.spc.Conv3d" target="_blank" id="i7drti">sparse convolutions</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.spc.html#kaolin.ops.spc.unbatched_interpolate_trilinear" target="_blank" id="ilpdth">trilinear interpolation</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.spc.html#kaolin.ops.spc.unbatched_make_dual" target="_blank" id="in9fyb">dual grid creation</a>, and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.conversions.html#kaolin.ops.conversions.unbatched_mesh_to_spc" target="_blank" id="irr8e2">conversion from mesh</a>.<br></p></div><div class="col"><img alt="Kaolin library provides GPU-Optimized 3D conversion operations" src="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/kaolin/kaolin_003.png" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div></div></div><div class="separator tablet-45 separator--60"></div><div id="ihhir5"><div class="row"><div class="col"><img alt="Sketch of Camera API" src="https://developer.download.nvidia.com/images/camera-api.png" class="img-fluid"><a href="https://research.nvidia.com/labs/toronto-ai/xcube/" target="_blank"><br></a></div><div class="col col-xl-6"><h3 class="h--smaller">Camera and Mesh API<br></h3><p id="ikslyf">Make use of convenient and modular differentiable <a href="https://kaolin.readthedocs.io/en/latest/notes/differentiable_camera.html" id="itrbf1" target="_blank">Camera API</a>, with many convenience methods and <a href="https://github.com/NVIDIAGameWorks/kaolin/tree/master/examples/recipes/camera" id="iwu68w" target="_blank">recipes</a>. Simplify 3D mesh management in PyTorch with a convenient <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.rep.surface_mesh.html#kaolin-rep-surfacemesh" id="i6c14l" target="_blank">mesh class</a>, consistent across imports from different 3D formats, including <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.gltf.html#kaolin.io.gltf.import_mesh" id="i3wx5d" target="_blank">glTF</a>, <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.usd.html#kaolin.io.usd.import_mesh" id="ij0zbu" target="_blank">USD</a> and <a href="https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.obj.html#kaolin.io.obj.import_mesh" id="isdf45" target="_blank">OBJ</a>.<br></p></div></div></div></section><div id="iebtn1"></div><section class="page__section pt-0 pb-0"></section><div class="separator product-page"></div><div class="separator tablet-45 separator--60"></div><section class="page__section page__section--light-gray page__last-section page__cta-section"><p id="ihmj8l-3-2-3" class="text-center"><a href="https://github.com/NVIDIAGameWorks/kaolin/" target="_blank" title="Download Now" class="btn btn-cta mt-2 me-4">Download Kaolin Library<br></a><a href="https://kaolin.readthedocs.io/en/latest/" target="_blank" title=" Visit Forums" class="btn btn-cta me-2 mt-2 btn-cta--light">Documentation</a></p><div class="separator product-page"></div></section></main></div><div class="col-xl-1 col-separator"></div><div class="col-xl-2 col-lg-3 col-md-12 col-sm-12 col-sidebar"><aside class="page__sidebar with-sticky-nav"><div class="page-navigation-container"><div class="page-quick-links"><p class="p--small page-quick-links__header">Quick Links</p><ul><li><a href="https://github.com/NVIDIAGameWorks/kaolin/" target="_blank" class="link-cta page-quick-links__link">Download Kaolin Library<br></a></li><li></li><li><a href="https://kaolin.readthedocs.io/en/latest/" target="_blank" class="link-cta page-quick-links__link">Library Documentation</a></li></ul></div><hr><div data-react-class="PageNavigation" data-react-props="{"draggable":"true","editable":"true","id":"ixq0r3"}" data-react-cache-id="PageNavigation-ixq0r3"></div></div></aside></div></div></div><div class="separator separator--90 phone-0"></div></div> </div> <div id='footer' class='mt-auto'></div> <script type="text/javascript"> (() => { const handleQuotesBlock = (quotesBlock, idx) => { const blockquotes = quotesBlock.querySelectorAll('blockquote'); if (blockquotes.length < 1) { return; } const navContainer = document.createElement('ul'); navContainer.classList.add('quotes-list-navigation'); for (let i = 0; i < blockquotes.length; i++) { let navItem = document.createElement('li'); let btn = document.createElement('button'); btn.type = 'button'; btn.dataset['group'] = idx.toString(); btn.dataset['length'] = blockquotes.length.toString(); btn.value = i.toString(); btn.addEventListener('click', (e) => { const group = e.target.dataset['group']; const groupActiveButtons = document.querySelectorAll(`button[data-group="${group}"].active`); groupActiveButtons.forEach((activeButton) => { activeButton.classList.remove('active'); }); e.target.classList.add('active'); const viewPortWidth = quotesBlock.getBoundingClientRect().width; const clickedSlide = parseInt(e.target.value); quotesBlock.querySelector('.quotes-list').style.transform = `translate(-${viewPortWidth * clickedSlide}px)`; }); navItem.appendChild(btn); navContainer.appendChild(navItem); if (i === 0) { btn.click(); } } quotesBlock.appendChild(navContainer); }; const refreshQuotesBlock = () => { document.querySelectorAll('.quotes-list-navigation button.active').forEach((b) => { const currentItem = parseInt(b.value); const maxItem = parseInt(b.dataset['length']); const group = parseInt(b.dataset['group']); const next = currentItem + 1; if (next < maxItem) { document.querySelectorAll(`button[data-group="${group}"]`)[next].click(); } else { document.querySelectorAll(`button[data-group="${group}"]`)[0].click(); } }); }; const refreshInterval = 4000; const quotesBlocks = document.querySelectorAll('.quotes-list-viewport'); if (quotesBlocks.length) { quotesBlocks.forEach(handleQuotesBlock); setInterval(refreshQuotesBlock, refreshInterval); } })(); </script> <script type="text/javascript" charset="utf-8"> (() => { const doInit = (accordionRoot, idx) => { const baseID = `page-accordion-${idx}`; accordionRoot.id = baseID; const headings = accordionRoot.querySelectorAll('.accordion-header'); if (!headings.length) { return; } const collapseElements = accordionRoot.querySelectorAll('.accordion-collapse'); headings.forEach((headingElement, idx) => { const headingID = `${baseID}-heading-${idx}`; const targetID = `${baseID}-target-${idx}`; headingElement.id = headingID; const headingButton = headingElement.querySelector('.accordion-button'); if (!headingButton) { return; } headingButton.type = 'button'; headingButton.dataset['bsToggle'] = 'collapse'; headingButton.dataset['bsTarget'] = `#${targetID}`; headingButton.setAttribute('aria-expanded', true); headingButton.setAttribute('aria-controls', targetID); headingButton.setAttribute('role', 'button'); if (!collapseElements[idx].classList.contains('show')) { headingButton.classList.add('collapsed'); } collapseElements[idx].id = targetID; collapseElements[idx].setAttribute('aria-labelledby', headingID); }); new bootstrap.Collapse(accordionRoot); }; const initAccordions = () => { const accordions = document.querySelectorAll('section.page__section div.accordion'); if (!accordions.length) { return; } let accordionIndex = 0; accordions.forEach((accordion) => { doInit(accordion, accordionIndex); accordionIndex += 1; }); }; document.addEventListener('DOMContentLoaded', initAccordions) })(); </script> <script src="https://dirms4qsy6412.cloudfront.net/assets/grapesjs-tabs-f0b094476ecf56695b765f533e437303138b1e0824d993c50ff672e16dcccd8f.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/legacy-chart/d3.v4.min-41cfecdf7c41476e805de7afacf4aacdd1a4be6947fbecf95217e947ebc2faf5.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/legacy-chart/visualize-d-06443fdef48364af6635f0d1d3535da26910671f6f6a680c531eff0e54ed595f.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/momentjs/moment-b955adb4137f92dd932ff2c3179ce60cb5e1daed5fcc4423f95cf17df02b4d68.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/momentjs/moment-timezone-with-data-10-year-range-dd05517070a46fa0052f9e706803d57a4fc38c1a223137ab480369e6308ba8d4.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/calendar-256ba38a1da92b24c057388ff6623eddd4cf1498f51d1a389cc4dfac501ab87c.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/nv-developer-menu-09b6a95e79b8d8d44b0f1ac794e39d5adac82391d128f6d4d39715826a860020.js"></script> <script> let menuLocale = 'en'; if (menuLocale == 'en') { menuLocale = 'en-US'; } function mountHeader(data = false) { let options = { baseURL: window.location.origin, signedIn: false, locale: menuLocale }; if (data) { options.secondaryMenu = data; } options.showMembershipCardLink = true; new NVDeveloperHeader({ target: document.getElementById('header'), props: options }); } function mountFooter(data = false) { let options = { menu: data, locale: menuLocale }; new NVDeveloperFooter({ target: document.getElementById('footer'), props: options }); } let url = 'd29g4g2dyqv443.cloudfront.net'; let headerMenuURL = "https://d29g4g2dyqv443.cloudfront.net/menu/en-US/header-secondary.json"; fetch(headerMenuURL) .then(response => response.json()) .then(data => { mountHeader(data); }) .catch((error) => { mountHeader(); window.nv.tracing.addError('menu', error); }); fetch(`https://${url}/menu/${menuLocale}/footer.json`) .then(response => response.json()) .then(data => { mountFooter(data); }) .catch((error) => { mountFooter(); window.nv.tracing.addError('menu', error); }); </script> <script src="https://www.datadoghq-browser-agent.com/us1/v5/datadog-rum.js"></script> <script> let silentAuthHost = 'www.nvidia.com'; let crossOriginPageUrl = `https://${silentAuthHost}/auth/hints/`; function readHint() { return new Promise((resolve) => { const { origin: targetOrigin } = new URL(crossOriginPageUrl); const iframe = document.createElement('iframe'); iframe.hidden = true; iframe.src = crossOriginPageUrl; function responseHandler(event) { if (event.origin === targetOrigin) { iframe.parentNode.removeChild(iframe); return resolve(event.data); } } window.addEventListener('message', responseHandler, { once: true }); iframe.onload = () => { iframe.contentWindow.postMessage({ type: 'read' }, targetOrigin); } document.body.appendChild(iframe); }); } function writeHint(login_hint, idp_id, timestamp, sub) { const { origin: targetOrigin } = new URL(crossOriginPageUrl); const iframe = document.createElement('iframe'); iframe.hidden = true; iframe.src = crossOriginPageUrl; iframe.onload = () => { const message = { type: 'write', login_hint, idp_id, timestamp, sub }; iframe.contentWindow.postMessage(message, targetOrigin); } document.body.appendChild(iframe); } function deleteHint() { const { origin: targetOrigin } = new URL(crossOriginPageUrl); const iframe = document.createElement('iframe'); iframe.hidden = true; iframe.src = crossOriginPageUrl; iframe.onload = () => { iframe.contentWindow.postMessage({ type: 'delete' }, targetOrigin); } document.body.appendChild(iframe); } </script> <script>_satellite.pageBottom();</script> <script src="https://api-prod.nvidia.com/search/nvidia-gallery-widget.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/nv-gallery-widget-3773782f8ce6c8c8a941c2b9081c011da255a54832177fb8bd2e6c7967d37182.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/runtime-503119e3bfeec75056bc.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/692-70104789368a40f2d231.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/341-3761d2892158034dde54.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/171-72c84e9bea55d778d36a.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/866-f9c34b19d1b60b883caf.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/311-033b6299b51897e65419.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/252-f83b27d9f72fef366bc7.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/582-d6d587645f7c87937f15.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/900-df684e5d2e49c0841d7f.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/application-34e06828c108fa024662.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/ls_track-4ba11c63b23b3f4ff0d5.js" defer="defer"></script> </body> </html>