CINXE.COM

NVIDIA Aerial | 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="tYfen3FZBknlZmiWWIxf-r7ELpUH46SPbw0EWjrZcwy-xCq0gNY-65IfXcdruF1gglk0OJN6h93_Soug5mzt0w" /> <meta name="csp-nonce" /> <title>NVIDIA Aerial | NVIDIA Developer</title> <meta name="description" content="NVIDIA Aerial is a suite of accelerated computing platforms, software, and services for designing, simulating, and operating wireless networks."> <meta name="keywords" content="aerial, ran software, 6g research, 6g developer, 5g network, nvidia"> <link rel="canonical" href="https://developer.nvidia.com/aerial"> <link rel="alternate" href="https://developer.nvidia.com/aerial" hreflang="x-default"> <link rel="alternate" href="https://developer.nvidia.com/aerial" hreflang="en-us"> <meta property="og:site_name" content="NVIDIA Developer"> <meta property="og:title" content="NVIDIA Aerial"> <meta property="og:description" content="For designing, simulating, and operating wireless networks."> <meta property="og:type" content="website"> <meta property="og:image" content="https://developer.download.nvidia.com/images/corp-kv-og.jpg"> <meta property="og:url" content="https://developer.nvidia.com/aerial"> <meta name="twitter:title" content="NVIDIA Aerial"> <meta name="twitter:description" content="NVIDIA Aerial is a suite of accelerated computing platforms, software, and services for designing, simulating, and operating wireless networks."> <meta name="twitter:image" content="https://developer.download.nvidia.com/images/corp-kv-og.jpg"> <meta name="twitter:site" content="@NVIDIA"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:creator" content="@NVIDIADeveloper"> <meta property="industry" content="Telecommunications"> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/application-1e91adb0e814253f53c7a621169b6daa7cc975f97befa1c8f1a2ffe493719eb1.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 src="https://dirms4qsy6412.cloudfront.net/assets/onetrust-overrides-v2-9d7d1399c432d702a5bf32a31067737e10c123fdbe5ffef8ae83a34cf2d680ee.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> <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" as="style" type="text/css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" /> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/devzone3/vars-cd3a0769a3c2f2d9ea6b83ac53ce86bceef4c719e4dbd22ed41d48d01f200901.css" media="all" /> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/devzone3/new/application-18e41529317cec7a71ff11ed11f560691cd0843420e9cb6082d8cf8ce8fc638c.css" media="all" /> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/feed-aggregator/feed-aggregator-9ace7521871242143cb35fa86d5be702c4dacb409600041fa6a5b14fa2a71dde.css" media="all" /> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/twentytwenty/css/twentytwenty-4ef2ccd719d09a97572e93c499c1fb11cc971d2a3519cfe105dcff2be92f65b9.css" media="all" /> <script src="https://dirms4qsy6412.cloudfront.net/assets/horizontal-chart/d3.v4.min-41cfecdf7c41476e805de7afacf4aacdd1a4be6947fbecf95217e947ebc2faf5.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/horizontal-chart/visualize-d-06443fdef48364af6635f0d1d3535da26910671f6f6a680c531eff0e54ed595f.js"></script> <link rel="stylesheet" href="https://dirms4qsy6412.cloudfront.net/assets/sf-validation/sf-validation-805362e079494cd052f713be5f91a44eb602f545c342f794abbd4a8050c0acb3.css" /> <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://api-prod.nvidia.com/search/nvidia-gallery-widget.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/devzone3/modules/nvidia_editor/nod_widgets-8c38a7d04ed3c3acd9117aa126bf76d7902d3c57c72b76dbf3c281c96ed09975.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' data-theme='devzone3_new'> <div id='header'></div> <main class="main-content dz3-main-section dz-new-theme page-aerial page-aerial" data-id="5689"> <style> ul.carousel-indicators { position: relative; } </style> <section class="sct--s"> <div class="cntnr--narrow txt-cntr"> <h1 class="h--medium">NVIDIA AI Aerial</h1> <p class="p--medium">NVIDIA AI Aerial is a suite of accelerated computing platforms, software, and services for designing, simulating, and operating wireless networks. NVIDIA AI Aerial contains hardened RAN software libraries for telcos, cloud service providers (CSPs), and enterprises building commercial 5G networks. Academic and industry researchers can access Aerial on cloud or on-premises setups for advanced wireless and AI and machine learning (ML) research for 6G. </p> <br> <a href="/6g-program" class="cta--prim cta--l" target="_blank">Join 6G Developer Program</a>  <a href="https://developer.nvidia.com/6g-program/members" class="cta--scnd cta--l" style="padding:12px;" target="_blank">Member Area</a> </div> </section> <section class="sct--s sct--lt-gry2"> <center> <div class="cntnr--narrow txt-cntr"> <div class="row"> <h2 class="h--medium">NVIDIA AI Aerial Building Blocks for Wireless Research and Development</h2> </div> </div> <div class="cntnr--cw"> <div class="row"> <div class="col-md-4"> <center><img class="img-responsive" src="https://developer.download.nvidia.com/images/aerial/m48-telecom-5g-tower.svg" style="width: 100px" alt="Decorative image of a 5G telecom tower" title="Decorative image of a 5G telecome tower"></center> <h3 class="h--smallest">Aerial CUDA-Accelerated RAN </h3> <p class="p--medium"><a target="_blank" href="https://developer.nvidia.com/aerial-cuda-accelerated-ran">NVIDIA Aerial CUDA-Accelerated RAN</a> is a framework for building commercial-grade, software-defined, and cloud-native 5G and future 6G radio access networks. It includes NVIDIA GPU-accelerated interoperable PHY and MAC layer libraries that can be easily modified and seamlessly extended with AI components.</p> </div> <div class="col-md-4"> <center><img class="img-responsive" src="https://developer.download.nvidia.com/images/aerial/m48-digital-twin.svg" style="width: 100px" alt="Decorative image of a digital twin simulation" title="Decorative image of a digital twin simulation"></center> <h3 class="h--smallest">Aerial Omniverse Digital Twin</h3> <p class="p--medium">The <a target="_blank" href="https://developer.nvidia.com/aerial-omniverse-digital-twin">Aerial Omniverse Digital Twin</a> enables physically accurate simulations of complete 6G systems, from a single tower to city scale. It incorporates software-defined RAN and user-equipment simulators, along with realistic terrain and object properties. Using the Omniverse Aerial Digital Twin, researchers will be able to simulate and build base-station algorithms based on site-specific data and train models in real time to improve transmission efficiency. </p> </div> <div class="col-md-4"> <center><img class="img-responsive" src="https://developer.download.nvidia.com/images/aerial/m48-neural-network-3.svg" style="width: 100px" alt="Decorative image of a neural network" title="Decorative image of a neural network"></center> <h3 class="h--smallest">Aerial AI Radio Frameworks</h3> <p class="p--medium"><a href="/aerial-ai-radio-frameworks">Aerial AI Radio Frameworks</a> provide seamless integration with popular libraries and frameworks like PyTorch and TensorFlow, leveraging NVIDIA GPUs for generating and capturing data and training AI and ML models at scale. The frameworks include pyAerial, Aerial Data Lake, Aerial RAN CoLab Over-The Air (ARC-OTA) and <a href="/sionna/">NVIDIA Sionna</a>, the leading link-level research tool for AI/ML-based wireless simulations. </p> </div> </div> </div> </center> </section> <section class="sct--s sct--lt-gry1"> <div class="cntnr--cw txt-cntr"> <div class="row"> <h2 class="h--medium">Use Cases</h2> </div> </div> <div class="cntnr--cw"> <div class="row"> <div class="col-md-6"> <div class="card"> <div class="card-cntnt-cntnr"> <h3 class="h--small">Building Commercial 5G Networks </h4> <h4 class="h--smaller">Accelerated 5G </h4> <p class="p--medium">NVIDIA AI Aerial enables the building of commercial-grade, high-performance, software-defined, cloud-native 5G networks, accelerated on NVIDIA infrastructure (i.e., GPU, DPU, and CPU). For the RAN L1 and L2 layers, Aerial supports GPU acceleration, delivering a high-performance virtualized distributed unit (vDU) for 5G networks.</p> <h4 class="h--smaller">Generative AI and 5G Data Centers </h4> <p class="p--medium">NVIDIA AI Aerial enables telcos, CSPs, and enterprises to build and deploy multi-tenant data centers capable of running both 5G and AI workloads in the cloud, at the edge, or on-premises. Examples of 5G workloads include accelerated 5G vDU and other virtualized 5G network functions like User Plane Function (UPF). These workloads run on the same data center with other orthogonal AI/generative AI workloads, such as model training (e.g., NVIDIA NeMo™) and offline image recognition (e.g., NVIDIA Metropolis). NVIDIA Aerial CUDA-Accelerated RAN is fully virtualized and cloud-ready, making it a pioneering <a href="/blog/ran-in-the-cloud-delivering-cloud-economics-to-5g-ran/">RAN-in-the-cloud</a> solution for the industry.</p><br> <a href="/aerial/5g-contact" class="cta--tert has-cta-icon">Contact the Aerial Team <span class="fas fa-angle-right fa-fw"></span></a> </div> </div> </div> <div class="col-md-6"> <div class="card"> <div class="card-cntnt-cntnr"> <h3 class="h--small">Accelerating 6G Research </h4> <h4 class="h--smaller">Cloud-Based Tools</h4> <p class="p--medium">NVIDIA 6G Research Cloud Platform provides access to the Aerial CUDA-Accelerated RAN, Aerial Omniverse Digital Twin and Aerial AI Radio Frameworks to academic and industry-based researchers. This suite of tools and frameworks enables research spanning RAN L1, L2, and core nodes. A primary focus for the 6G Research Cloud Platform is to facilitate research that brings AI/ML to all layers of the telecom stack.</p> <p class="p--medium p-t-15">The system-level simulation (i.e. Aerial Omniverse Digital Twin) and link-level simulation (i.e <a href="https://developer.nvidia.com/sionna" target="_blank">Sionna</a>) setups can be accessed via a cloud API and hosted in the cloud as a fully software-based research environment. Additionally, the Aerial RAN CoLab Over-The-Air (ARC-OTA) testbed can be used as an on-premises, real-time hardware testbed for benchmarking innovations.</p> <p class="p--medium p-t-15">The 6G Research Cloud Platform can be accessed by subscribing to the <a target="_blank" href="https://developer.nvidia.com/6g-program/">6G Developer Program</a>, which provides developers with tools, documentation, and early access to software releases to facilitate cutting edge 6G research.</p><br> <a href="/6g-program/" class="cta--tert has-cta-icon">Join the 6G Developer Program <span class="fas fa-angle-right fa-fw"></span></a> </div> </div> </div> </div> </div> </section> <section class="sct--s"> <div class="cntnr--cw txt-cntr"> <div class="row"> <h2 class="h--medium">Benefits</h2> </div> </div> <div class="cntnr--cw"> <div class="row"> <div class="col-md-4"> <center><img class="img-responsive" src="https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/aerial/images/software-define-icon.svg" style="width: 100px" alt="Decorative image of a programmable software" title="Decorative image of a programmable software"></center> <h3 class="h--smallest">100% Software Defined</h3> <p class="p--medium"><a href="https://developer.nvidia.com/aerial-cuda-accelerated-ran" target="_blank">NVIDIA Aerial CUDA-Accelerated RAN</a> is a fully software-defined, scalable, and highly programmable 5G RAN acceleration platform for the L1 and L2+ layers on general purpose compute. This unique solution provides full flexibility to researchers for updating any part of their software. </p> </div> <div class="col-md-4"> <center><img class="img-responsive" src="https://developer.download.nvidia.com/images/aerial/m48-interapp-workflow.svg" style="width: 100px" alt="Decorative image of a interapp workflow for a digital twin" title="Decorative image of a interapp workflow for a digital twin"></center> <h3 class="h--smallest">Test by Deploying in a Digital Twin</h3> <p class="p--medium">Since <a href="https://developer.nvidia.com/aerial-omniverse-digital-twin" target="_blank">NVIDIA Aerial Omniverse Digital Twins</a> run the NVIDIA Aerial CUDA-Accelerated RAN stack over ray-traced channels, you can test the system-level performance and efficiency of your algorithms before deploying them in a live system. </p> </div> <div class="col-md-4"> <center><img class="img-responsive" src="https://developer.download.nvidia.com/images/aerial/m48-collections.svg" style="width: 100px" alt="Decorative image of a full stack solution" title="Decorative image of a full stack solution"></center> <h3 class="h--smallest">Ideal for 6G Standardization</h3> <p class="p--medium"><a href="https://www.nvidia.com/en-us/industries/telecommunications/ai-ran/" target="_blank">NVIDIA AI Aerial</a> is uniquely positioned to help drive 6G standardization. New AI/ML use cases such as beam management, CSI compression, and positioning can be assessed with city scale simulation setups, realistic user mobility, and standard-compliant waveforms. </p> </div> </div> </div> </section> <section class="sct--s sct--lt-gry2"> <div class="cntnr--narrow txt-cntr"> <div class="cntnr--cw txt-cntr"> <h2 class="h--medium txt-clr--blck">Industry Affiliations</h2> <p class="p--medium">NVIDIA works closely with industry groups and standards bodies to develop new technologies and contribute to industry publications and standards. </p> </div> <br> <div class="row"> <div class="col-sm-3"> <div> <img width="100%" src="https://developer.download.nvidia.com/images/aerial/3gpp-logo.svg" alt="NVIDIA’s Industry Affiliation - 3GPP" title="NVIDIA’s Industry Affiliation - 3GPP"> </div> </div> <div class="col-sm-3"> <div> <img width="100%" src="https://developer.download.nvidia.com/images/aerial/ai-ran-logo.svg" alt="NVIDIA’s Industry Affiliation - AI RAN Alliance" title="NVIDIA’s Industry Affiliation - AI RAN Alliance"> </div> </div> <div class="col-sm-3"> <div> <img width="100%" src="https://developer.download.nvidia.com/images/aerial/gsma-logo.svg" alt="NVIDIA’s Industry Affiliation - GSMA" title="NVIDIA's Industry Affiliation - GSMA"> </div> </div> <div class="col-sm-3"> <div> <img width="100%" src="https://developer.download.nvidia.com/images/aerial/o-ran-logo.svg" alt="NVIDIA’s Industry Affiliation - Ran Alliance" title="NVIDIA's Industry Affiliation - Ran Alliance"> </div> </div> </div> </div> </section> <section class="sct--xs"> <div class="cntnr--cw"> <h3 class="h--small txt-cntr">Join the 6G Developer Program</h3> <p class="p--medium txt-cntr">Developers and researchers can gain access to the 6G Research Cloud Platform—that hosts our latest software, tools, and resources—by joining the NVIDIA 6G Developer Program. </p> <br> <center><a class="cta--prim" href="/6g-program" target="blank">Join Now</a> <a class="cta--scnd" href="https://developer.nvidia.com/6g-program/members" style="padding:12px;" target="blank">Member Area</a> </center> <br> </div> </section> <script> document.addEventListener('DOMContentLoaded', () => { const allLinks = document.querySelectorAll('.dz3-main-section.dz-new-theme a'); allLinks.forEach((link) => { let hasIcon = link.querySelector('span.fas'); if(hasIcon) { link.classList.add('has-cta-icon'); } }); }); </script> </main> <div id='footer' class='mt-auto'></div> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/devzone3/new/popper.min-a9eb3f3101919a18965114cfdcd0138652ec03b2b58cfb26806f9a256564c858.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/feed-aggregator/feed-aggregator-7f147443abc2d1300a239c29e4ba3ca0d0d2eb0dc66b608765e2b3be50e18e10.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/devzone3/new/dist/dz3-new-bundle-11f473650a558402a2733b7bb4d6133e28814892ec0527381c9144f3499b8d60.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/twentytwenty/js/jquery.event.move-16041d2e384b513c1b202af51fc404a0643b8c38ff823bb4326520ad5a82b761.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/twentytwenty/js/jquery.twentytwenty-835622257095d5bd0719a5484d68213ccc8708a321dd3deded777d1e6623b499.js"></script> <script> const template = document.createElement('template'); template.innerHTML = ` <style> @import "https://dirms4qsy6412.cloudfront.net/assets/feed-aggregator/feed-aggregator-9ace7521871242143cb35fa86d5be702c4dacb409600041fa6a5b14fa2a71dde.css"; .feed-aggregator-component .card { box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3) !important; } .feed-aggregator-component .card:hover { box-shadow: 0 0 8px 0 rgba(0,0,0,0.13), 0 14px 32px 5px rgba(0,0,0,0.13) !important; } </style> <div class="feed-aggregator-component"></div> `; const hosts = { 'en': 'https://developer.nvidia.com/blog', 'cn': 'https://developer.nvidia.com/zh-cn/blog', } class FeedAggregatorElement extends HTMLElement { constructor() { super(); this._shadowRoot = this.attachShadow({ 'mode': 'open' }); this._shadowRoot.appendChild(template.content.cloneNode(true)); } connectedCallback() { const categories = this.getAttribute('categories'); const tags = this.getAttribute('tags'); const perPage = this.getAttribute('per-page'); const excludedTags = this.getAttribute('excluded-tags'); let locale = this.getAttribute('locale'); if (!locale) { locale = 'en'; } let targetElement = this._shadowRoot.querySelector(".feed-aggregator-component"); let feed = { id: 'blog', host: hosts[locale], type: 'json', minCount: 2, }; if (categories && categories !== 'all') { feed['category_ids'] = categories.split(','); } if (tags && tags !== 'all') { feed['tag_ids'] = tags.split(','); } if(excludedTags && excludedTags !== 'null'){ feed['excluded_tag_ids'] = excludedTags.split(','); } document.addEventListener("DOMContentLoaded", function () { new FeedAggregator({ target: targetElement, props: { count: perPage, openInNewTab: true, showExcerpts: true, feeds: [feed] } }); }) } } window.customElements.define('feed-aggregator', FeedAggregatorElement); </script> <template id='application-button-template'> <style> @import "https://dirms4qsy6412.cloudfront.net/assets/application-button/application-button-68ca7e1e3aa49ec79169d49226e34ee0c341d27a15a38b28ce975cb2467e123e.css"; </style> <a href='' class='nvidia-application-button'>Join now</a> </template> <script> async function fetchMembershipState () { const userInfo = await fetch('/api/user'); const {status} = userInfo; if (status === 401) { let error = new Error('Unauthorized'); error.statusCode = status; throw error; } // TODO: Figure out how to get DZ4 program // Fetch page info. const {pathname} = location; const pageInfo = await fetch(`${pathname}.json`); const pageData = await pageInfo.json(); // Fetch membership info return pageData; } const initApplicationButton = (element) => { const linkElement = element.querySelector('a'); fetchMembershipState() .then(data => { console.log(data); }) .catch(error => { switch (error.statusCode) { default: linkElement.innerHTML = 'Login'; linkElement.href = '/login'; } }); }; class NvidiaApplicationButton extends HTMLElement { constructor() { const template = document.getElementById('application-button-template'); super(); this._shadowRoot = this.attachShadow({ 'mode': 'open' }); this._shadowRoot.appendChild(template.content.cloneNode(true)); } connectedCallback() { const element = this._shadowRoot; document.addEventListener('DOMContentLoaded', () => { initApplicationButton(element); }); } } window.customElements.define('nv-application-button', NvidiaApplicationButton); </script> <template id='application-text-template'> <p></p> </template> <script> class NvidiaApplicationText extends HTMLElement { constructor() { const template = document.getElementById('application-text-template'); super(); this._shadowRoot = this.attachShadow({ 'mode': 'open' }); this._shadowRoot.appendChild(template.content.cloneNode(true)); } connectedCallback() { } } window.customElements.define('nv-application-text', NvidiaApplicationText); </script> <template id='nv-sf-form-validator-template'> <script src="https://dirms4qsy6412.cloudfront.net/assets/sf-validation/moment-620a5949fff0ad37198f07464b91d7b7c110ecdb6f94ca90ca7d2e1b471f1da8.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/sf-validation/validate.min-2160a65c1b5d4a5966544ad25af8fe99f11c636a99c516fee6c7afd3b1f21409.js"></script> <p></p> </template> <script> class NvidiaSalesforceValidator extends HTMLElement { constructor() { const template = document.getElementById('nv-sf-form-validator-template'); super(); this._shadowRoot = this.attachShadow({'mode': 'open'}); this._shadowRoot.appendChild(template.content.cloneNode(true)); } initComponent() { if (!window.sfv) { return; } validate.extend(validate.validators.datetime, { parse: function (value, options) { if (moment(value, options.format, true).isValid()) { return +moment.utc(value); } }, format: function (value, options) { var format = options.dateOnly ? "MM/DD/YYYY" : "MM/DD/YYYY hh:mm"; return moment.utc(value).format(format); } }); function showErrors(errors) { $.each(errors, function (index, element) { $('input[name="' + errors[index]['attribute'] + '"]').each(function (i, e) { var errorMessage = errors[index]['options']['message']; $('<div class="js-validation-errors">' + errorMessage + '</div>').insertAfter(e); }).focus(); }); } function isValidForm(form, constraints) { var errors = validate(form, constraints, {format: "detailed"}); if (errors) { showErrors(errors); return false; } return true; } $.each(window.sfv, function (index, element) { $(element.target).on('click', function (event) { $('.js-validation-errors').remove(); if (!isValidForm(element.form, element.constraints)) { event.preventDefault(); } }); }); } connectedCallback() { document.addEventListener('DOMContentLoaded', () => { this.initComponent(); }); } } window.customElements.define('nv-sf-form-validator', NvidiaSalesforceValidator); </script> <script src="https://dirms4qsy6412.cloudfront.net/assets/horizontal-chart/d3.v4.min-41cfecdf7c41476e805de7afacf4aacdd1a4be6947fbecf95217e947ebc2faf5.js"></script> <script src="https://dirms4qsy6412.cloudfront.net/assets/horizontal-chart/visualize-d-06443fdef48364af6635f0d1d3535da26910671f6f6a680c531eff0e54ed595f.js"></script> <template id="chart-template"> <style> @import "https://dirms4qsy6412.cloudfront.net/assets/devzone3/modules/nvidia_tokens/nvidia-charts-a459e90d273ab4f8b282e0f5fef607074b5fc7cbb5f8d0f0e378281320e6b9c8.css"; </style> <div class="horizontal-chart-component"> <div class="chart-container"> <h4 class="chart-title"></h4> <p class="chart-subtitle"></p> <div class="legend"></div> <svg data-nvidia-chart="true" data-chart-legend=""></svg> <p class="chart-footnote"></p> </div> </div> </template> <script> function chartInit(element) { const chart = element.querySelector('svg[data-nvidia-chart]'); const isRendered = chart.getAttribute("data-rendered"); if (isRendered) { return; } const svgChart = d3.select(chart); const bars = JSON.parse(chart.dataset['chartBars']); const ticks = JSON.parse(chart.dataset['chartTicks']); const xAxisLabel = chart.dataset['xAxisLabel']; const barPadding = chart.dataset['barPadding']; const milestone = null; const isGrouped = chart.dataset['isGrouped'] === 'true'; if (isGrouped) { const legend = JSON.parse(chart.dataset['chartLegend']); createGroupedHorizontalBarChart(svgChart, bars, barPadding, legend, ticks, milestone, xAxisLabel, false); } else { createHorizontalBarChart(svgChart, bars, barPadding, ticks, xAxisLabel, "", false); } chart.dataset['rendered'] = 'true'; } $('a[data-toggle="tab"]').on("click", function (event) { setTimeout(() => { // Triggering 'resize' event to redraw charts. window.dispatchEvent(new Event('resize')); const target = jQuery(event.target).parents('.nav.nav-tabs').siblings('.tab-content').find('.tab-pane.active'); if (target.length > 0) { const svg = jQuery(target).find('horizontal-chart'); if (svg.length) { svg.each((idx, el) => { setTimeout(function () { const chartContainer = el._shadowRoot.querySelector('.chart-container'); chartInit(chartContainer); }, 300); }); } } }, 50); }); async function loadFileSource(url) { try{ const response = await fetch(url); return response.json(); }catch (e) { console.warn(`Failed to load chart data. URL: ${url}`); } return {}; } class HorizontalChartElement extends HTMLElement { constructor() { const horizontalCharTemplate = document.getElementById('chart-template'); super(); this._shadowRoot = this.attachShadow({ 'mode': 'open' }); this._shadowRoot.appendChild(horizontalCharTemplate.content.cloneNode(true)); } connectedCallback() { const url = this.getAttribute('source'); const element = this._shadowRoot; document.addEventListener("DOMContentLoaded", function () { loadFileSource(url).then(data => { const { chartTitle: title, chartSubtitle: subTitle, chartFootnote: footNote, chartId: id, isGrouped: isGrouped, legendData, barPadding, xAxisLabel, bars, ticks } = data; element.querySelector('.chart-title').innerHTML = title; // Subtitle if (subTitle) { element.querySelector('.chart-subtitle').innerHTML = subTitle; } else { element.querySelector('.chart-subtitle').remove(); } // Chart const svgElement = element.querySelector('.chart-container svg'); svgElement.id = id; const dataAttributes = [ ['isGrouped', isGrouped ? 'true' : 'false', ''], ['chartLegend', JSON.stringify(legendData), ''], ['xAxisLabel', xAxisLabel, ''], ['barPadding', barPadding, 5], ['chartBars', bars, ''], ['chartTicks', ticks, ''], ]; dataAttributes.forEach(dataAttribute => { if (dataAttribute[0] === 'chartBars' && dataAttribute[1]) { dataAttribute[1] = JSON.stringify(dataAttribute[1]); } if (dataAttribute[0] === 'chartTicks' && dataAttribute[1]) { dataAttribute[1] = JSON.stringify(dataAttribute[1]); } svgElement.dataset[dataAttribute[0]] = dataAttribute[1] ? dataAttribute[1] : dataAttribute[2]; }); // Caption if (footNote) { element.querySelector('.chart-footnote').innerHTML = footNote; } else { element.querySelector('.chart-footnote').remove(); } // Init chart const chartContainer = element.querySelector('.chart-container'); setTimeout(function () { if (jQuery(chartContainer).is(':visible')) { chartInit(chartContainer); } }, 300); }); }) } } window.customElements.define('horizontal-chart', HorizontalChartElement); </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://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/798-8f26177f1189c7399fb3.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/367-0b2e82a8016bebbc82b5.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/900-34f3bf570904cbfb5a16.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/application-54bf18784eb1ee5cdece.js" defer="defer"></script> <script src="https://dirms4qsy6412.cloudfront.net/packs/js/ls_track-4ba11c63b23b3f4ff0d5.js" defer="defer"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10