CINXE.COM

Codee - NERSC Documentation

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="NERSC Documentation"><meta name=author content=NERSC><link href=https://docs.nersc.gov/tools/performance/codee/ rel=canonical><link href=../ rel=prev><link href=../craypat/ rel=next><link rel=icon href=../../../assets/images/favicon.ico><meta name=generator content="mkdocs-1.5.3, mkdocs-material-9.2.7"><title>Codee - NERSC Documentation</title><link rel=stylesheet href=../../../assets/stylesheets/main.046329b4.min.css><script async src=https://siteimproveanalytics.com/js/siteanalyze_8343.js></script><!-- Google tag (gtag.js) --><script async src="https://www.googletagmanager.com/gtag/js?id=G-JCP9RYSNKF"></script><script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-JCP9RYSNKF'); </script><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../../stylesheets/extra.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script id=__analytics>function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-JCP9RYSNKF"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-JCP9RYSNKF",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-JCP9RYSNKF",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script><script>"undefined"!=typeof __md_analytics&&__md_analytics()</script></head> <body dir=ltr> <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#codee class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class="md-header md-header--shadow" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="NERSC Documentation" class="md-header__button md-logo" aria-label="NERSC Documentation" data-md-component=logo> <img src=../../../assets/images/logo.png alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> NERSC Documentation </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Codee </span> </div> </div> </div> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://gitlab.com/NERSC/nersc.gitlab.io title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> GitLab/NERSC/docs </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="NERSC Documentation" class="md-nav__button md-logo" aria-label="NERSC Documentation" data-md-component=logo> <img src=../../../assets/images/logo.png alt=logo> </a> NERSC Documentation </label> <div class=md-nav__source> <a href=https://gitlab.com/NERSC/nersc.gitlab.io title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> GitLab/NERSC/docs </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../.. class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class=md-nav__item> <a href=../../../getting-started/ class=md-nav__link> <span class=md-ellipsis> Getting Started at NERSC </span> </a> </li> <li class=md-nav__item> <a href=../../../beginner-guide/ class=md-nav__link> <span class=md-ellipsis> Absolute Beginner's Guide </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Understanding Our Systems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Understanding Our Systems </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../systems/ class=md-nav__link> <span class=md-ellipsis> NERSC Systems </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <label class=md-nav__link for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class=md-ellipsis> Perlmutter </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> Perlmutter </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../systems/perlmutter/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../systems/perlmutter/timeline/ class=md-nav__link> <span class=md-ellipsis> Timeline </span> </a> </li> <li class=md-nav__item> <a href=../../../current/ class=md-nav__link> <span class=md-ellipsis> Current Known Issues </span> </a> </li> <li class=md-nav__item> <a href=../../../systems/perlmutter/vendorbugs/ class=md-nav__link> <span class=md-ellipsis> Vendor Bugs </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5 id=__nav_5_label tabindex=0> <span class=md-ellipsis> Getting and Managing Your Account </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Getting and Managing Your Account </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../accounts/ class=md-nav__link> <span class=md-ellipsis> Accounts </span> </a> </li> <li class=md-nav__item> <a href=../../../accounts/passwords/ class=md-nav__link> <span class=md-ellipsis> Passwords </span> </a> </li> <li class=md-nav__item> <a href=../../../accounts/policy/ class=md-nav__link> <span class=md-ellipsis> Policy </span> </a> </li> <li class=md-nav__item> <a href=../../../accounts/collaboration_accounts/ class=md-nav__link> <span class=md-ellipsis> Collaboration Accounts </span> </a> </li> <li class=md-nav__item> <a href=../../../iris/iris-for-users/ class=md-nav__link> <span class=md-ellipsis> Iris Guide for Users </span> </a> </li> <li class=md-nav__item> <a href=../../../iris/iris-publications/ class=md-nav__link> <span class=md-ellipsis> Associating Publications with Your Account </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6 id=__nav_6_label tabindex=0> <span class=md-ellipsis> Connecting to NERSC </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_6_label aria-expanded=false> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> Connecting to NERSC </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../connect/ class=md-nav__link> <span class=md-ellipsis> Establishing Connections </span> </a> </li> <li class=md-nav__item> <a href=../../../connect/mfa/ class=md-nav__link> <span class=md-ellipsis> Multi-Factor Authentication </span> </a> </li> <li class=md-nav__item> <a href=../../../connect/federatedid/ class=md-nav__link> <span class=md-ellipsis> Federated Identity </span> </a> </li> <li class=md-nav__item> <a href=../../../connect/thinlinc/ class=md-nav__link> <span class=md-ellipsis> ThinLinc </span> </a> </li> <li class=md-nav__item> <a href=../../../connect/vscode/ class=md-nav__link> <span class=md-ellipsis> Visual Studio Code / VSCode </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7> <label class=md-nav__link for=__nav_7 id=__nav_7_label tabindex=0> <span class=md-ellipsis> Working in a NERSC Shell </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_7_label aria-expanded=false> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> Working in a NERSC Shell </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../environment/ class=md-nav__link> <span class=md-ellipsis> Customizing and Troubleshooting Shells </span> </a> </li> <li class=md-nav__item> <a href=../../../environment/shell_startup/ class=md-nav__link> <span class=md-ellipsis> Shell Startup </span> </a> </li> <li class=md-nav__item> <a href=../../../environment/lmod/ class=md-nav__link> <span class=md-ellipsis> Lmod </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7_4> <label class=md-nav__link for=__nav_7_4 id=__nav_7_4_label tabindex=0> <span class=md-ellipsis> Containers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_7_4_label aria-expanded=false> <label class=md-nav__title for=__nav_7_4> <span class="md-nav__icon md-icon"></span> Containers </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/containers/ class=md-nav__link> <span class=md-ellipsis> Containers </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7_4_2> <label class=md-nav__link for=__nav_7_4_2 id=__nav_7_4_2_label tabindex=0> <span class=md-ellipsis> Podman-hpc </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_7_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_7_4_2> <span class="md-nav__icon md-icon"></span> Podman-hpc </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/containers/podman-hpc/podman-beginner-tutorial/ class=md-nav__link> <span class=md-ellipsis> Podman-hpc for Beginners Tutorial </span> </a> </li> <li class=md-nav__item> <a href=../../../development/containers/podman-hpc/overview/ class=md-nav__link> <span class=md-ellipsis> Using Podman-hpc at NERSC </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7_4_3> <label class=md-nav__link for=__nav_7_4_3 id=__nav_7_4_3_label tabindex=0> <span class=md-ellipsis> Shifter </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_7_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_7_4_3> <span class="md-nav__icon md-icon"></span> Shifter </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/containers/shifter/ class=md-nav__link> <span class=md-ellipsis> Shifter </span> </a> </li> <li class=md-nav__item> <a href=../../../development/containers/shifter/shifter-beginner-tutorial/ class=md-nav__link> <span class=md-ellipsis> Shifter for Beginners Tutorial </span> </a> </li> <li class=md-nav__item> <a href=../../../development/containers/shifter/how-to-use/ class=md-nav__link> <span class=md-ellipsis> How to use Shifter </span> </a> </li> <li class=md-nav__item> <a href=../../../development/containers/shifter/faq-troubleshooting/ class=md-nav__link> <span class=md-ellipsis> FAQ and Troubleshooting </span> </a> </li> <li class=md-nav__item> <a href=../../../development/containers/shifter/examples/ class=md-nav__link> <span class=md-ellipsis> Example Shifter Containers </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7_4_4> <label class=md-nav__link for=__nav_7_4_4 id=__nav_7_4_4_label tabindex=0> <span class=md-ellipsis> registry.nersc.gov </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_7_4_4_label aria-expanded=false> <label class=md-nav__title for=__nav_7_4_4> <span class="md-nav__icon md-icon"></span> registry.nersc.gov </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/containers/registry/ class=md-nav__link> <span class=md-ellipsis> Using NERSC's registry.nersc.gov </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8> <label class=md-nav__link for=__nav_8 id=__nav_8_label tabindex=0> <span class=md-ellipsis> Running Jobs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_8_label aria-expanded=false> <label class=md-nav__title for=__nav_8> <span class="md-nav__icon md-icon"></span> Running Jobs </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../jobs/ class=md-nav__link> <span class=md-ellipsis> Basics of Running Jobs </span> </a> </li> <li class=md-nav__item> <a href=../../../systems/perlmutter/running-jobs/ class=md-nav__link> <span class=md-ellipsis> Running Jobs on Perlmutter </span> </a> </li> <li class=md-nav__item> <a href=../../../policies/resource-usage/ class=md-nav__link> <span class=md-ellipsis> Resource Usage Policies </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/scheduling/ class=md-nav__link> <span class=md-ellipsis> Scheduling </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/policy/ class=md-nav__link> <span class=md-ellipsis> Queues and Charges </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/interactive/ class=md-nav__link> <span class=md-ellipsis> Interactive </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/examples/ class=md-nav__link> <span class=md-ellipsis> Example Jobs </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/best-practices/ class=md-nav__link> <span class=md-ellipsis> Best Practices </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/jobscript-generator/ class=md-nav__link> <span class=md-ellipsis> Jobscript Generator </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/cost/ class=md-nav__link> <span class=md-ellipsis> Job Cost Calculator </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/troubleshooting/ class=md-nav__link> <span class=md-ellipsis> Troubleshooting Jobs </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/monitoring/ class=md-nav__link> <span class=md-ellipsis> Monitoring </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/affinity/ class=md-nav__link> <span class=md-ellipsis> Affinity </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/reservations/ class=md-nav__link> <span class=md-ellipsis> Reservations </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_15> <label class=md-nav__link for=__nav_8_15 id=__nav_8_15_label tabindex=0> <span class=md-ellipsis> Checkpoint/Restart </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_15_label aria-expanded=false> <label class=md-nav__title for=__nav_8_15> <span class="md-nav__icon md-icon"></span> Checkpoint/Restart </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/checkpoint-restart/ class=md-nav__link> <span class=md-ellipsis> Checkpoint/Restart Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../development/checkpoint-restart/dmtcp/ class=md-nav__link> <span class=md-ellipsis> DMTCP </span> </a> </li> <li class=md-nav__item> <a href=../../../development/checkpoint-restart/mana/ class=md-nav__link> <span class=md-ellipsis> MANA </span> </a> </li> <li class=md-nav__item> <a href=../../../development/checkpoint-restart/containers/ class=md-nav__link> <span class=md-ellipsis> Containerized checkpoint restart </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_9> <label class=md-nav__link for=__nav_9 id=__nav_9_label tabindex=0> <span class=md-ellipsis> Running Workflows </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_9_label aria-expanded=false> <label class=md-nav__title for=__nav_9> <span class="md-nav__icon md-icon"></span> Running Workflows </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../jobs/workflow/ class=md-nav__link> <span class=md-ellipsis> Workflow Tools </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/workflow-queue/ class=md-nav__link> <span class=md-ellipsis> Workflow queue </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/scrontab/ class=md-nav__link> <span class=md-ellipsis> Scrontab </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/gnuparallel/ class=md-nav__link> <span class=md-ellipsis> GNU Parallel </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/taskfarmer/ class=md-nav__link> <span class=md-ellipsis> TaskFarmer </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/fireworks/ class=md-nav__link> <span class=md-ellipsis> FireWorks </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/nextflow/ class=md-nav__link> <span class=md-ellipsis> Nextflow </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/papermill/ class=md-nav__link> <span class=md-ellipsis> Papermill </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/parsl/ class=md-nav__link> <span class=md-ellipsis> Parsl </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/snakemake/ class=md-nav__link> <span class=md-ellipsis> Snakemake </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/libensemble/ class=md-nav__link> <span class=md-ellipsis> libEnsemble </span> </a> </li> <li class=md-nav__item> <a href=../../../jobs/workflow/community_tools/ class=md-nav__link> <span class=md-ellipsis> Community Supported Tools </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10> <label class=md-nav__link for=__nav_10 id=__nav_10_label tabindex=0> <span class=md-ellipsis> Using Applications and Frameworks </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_10_label aria-expanded=false> <label class=md-nav__title for=__nav_10> <span class="md-nav__icon md-icon"></span> Using Applications and Frameworks </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../applications/ class=md-nav__link> <span class=md-ellipsis> Applications Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_2> <label class=md-nav__link for=__nav_10_2 id=__nav_10_2_label tabindex=0> <span class=md-ellipsis> Supported Applications and Frameworks </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_10_2_label aria-expanded=false> <label class=md-nav__title for=__nav_10_2> <span class="md-nav__icon md-icon"></span> Supported Applications and Frameworks </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../applications/amber/ class=md-nav__link> <span class=md-ellipsis> AMBER </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/berkeleygw/ class=md-nav__link> <span class=md-ellipsis> BerkeleyGW </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/cp2k/ class=md-nav__link> <span class=md-ellipsis> CP2K </span> </a> </li> <li class=md-nav__item> <a href=../../../analytics/dask/ class=md-nav__link> <span class=md-ellipsis> Dask </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_2_5> <label class=md-nav__link for=__nav_10_2_5 id=__nav_10_2_5_label tabindex=0> <span class=md-ellipsis> E4S </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_10_2_5_label aria-expanded=false> <label class=md-nav__title for=__nav_10_2_5> <span class="md-nav__icon md-icon"></span> E4S </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../applications/e4s/ class=md-nav__link> <span class=md-ellipsis> Extreme-scale Scientific Software Stack (E4S) </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/e4s/perlmutter/spack-v0.22/ class=md-nav__link> <span class=md-ellipsis> Spack v0.22 </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/e4s/spack_environments/ class=md-nav__link> <span class=md-ellipsis> Spack Environments </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../applications/gromacs/ class=md-nav__link> <span class=md-ellipsis> Gromacs </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_2_7> <label class=md-nav__link for=__nav_10_2_7 id=__nav_10_2_7_label tabindex=0> <span class=md-ellipsis> Jupyter </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_10_2_7_label aria-expanded=false> <label class=md-nav__title for=__nav_10_2_7> <span class="md-nav__icon md-icon"></span> Jupyter </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/jupyter/ class=md-nav__link> <span class=md-ellipsis> Jupyter Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../services/jupyter/how-to-guides/ class=md-nav__link> <span class=md-ellipsis> How-To Guides </span> </a> </li> <li class=md-nav__item> <a href=../../../services/jupyter/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../services/jupyter/background/ class=md-nav__link> <span class=md-ellipsis> Background </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../applications/lammps/ class=md-nav__link> <span class=md-ellipsis> LAMMPS </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/mathematica/ class=md-nav__link> <span class=md-ellipsis> Mathematica </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_2_10> <label class=md-nav__link for=__nav_10_2_10 id=__nav_10_2_10_label tabindex=0> <span class=md-ellipsis> MATLAB </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_10_2_10_label aria-expanded=false> <label class=md-nav__title for=__nav_10_2_10> <span class="md-nav__icon md-icon"></span> MATLAB </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../applications/matlab/ class=md-nav__link> <span class=md-ellipsis> MATLAB </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/matlab/matlab_compiler/ class=md-nav__link> <span class=md-ellipsis> MATLAB Compiler </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../applications/namd/ class=md-nav__link> <span class=md-ellipsis> NAMD </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/ncl/ class=md-nav__link> <span class=md-ellipsis> NCL </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/nwchem/ class=md-nav__link> <span class=md-ellipsis> NWChem </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/orca/ class=md-nav__link> <span class=md-ellipsis> ORCA </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/paraview/ class=md-nav__link> <span class=md-ellipsis> ParaView </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/pytorch/ class=md-nav__link> <span class=md-ellipsis> PyTorch </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/qchem/ class=md-nav__link> <span class=md-ellipsis> Q-Chem </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/quantum-espresso/ class=md-nav__link> <span class=md-ellipsis> Quantum ESPRESSO </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/cernroot/ class=md-nav__link> <span class=md-ellipsis> ROOT </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/tensorboard/ class=md-nav__link> <span class=md-ellipsis> TensorBoard </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/tensorflow/ class=md-nav__link> <span class=md-ellipsis> TensorFlow </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/vasp/ class=md-nav__link> <span class=md-ellipsis> VASP </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/visit/ class=md-nav__link> <span class=md-ellipsis> VisIt </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_2_24> <label class=md-nav__link for=__nav_10_2_24 id=__nav_10_2_24_label tabindex=0> <span class=md-ellipsis> WRF </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_10_2_24_label aria-expanded=false> <label class=md-nav__title for=__nav_10_2_24> <span class="md-nav__icon md-icon"></span> WRF </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../applications/wrf/ class=md-nav__link> <span class=md-ellipsis> Introduction to WRF </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/wrf/wps/ class=md-nav__link> <span class=md-ellipsis> WPS </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/wrf/wrf/ class=md-nav__link> <span class=md-ellipsis> WRF </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/wrf/wrf_module/ class=md-nav__link> <span class=md-ellipsis> WRF module </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/wrf/wrf_benchmark/ class=md-nav__link> <span class=md-ellipsis> WRF benchmark </span> </a> </li> <li class=md-nav__item> <a href=../../../applications/wrf/publications/ class=md-nav__link> <span class=md-ellipsis> Publications </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../analytics/analytics/ class=md-nav__link> <span class=md-ellipsis> Analytics </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10_4> <label class=md-nav__link for=__nav_10_4 id=__nav_10_4_label tabindex=0> <span class=md-ellipsis> Machine Learning </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_10_4_label aria-expanded=false> <label class=md-nav__title for=__nav_10_4> <span class="md-nav__icon md-icon"></span> Machine Learning </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../machinelearning/ class=md-nav__link> <span class=md-ellipsis> Machine Learning at NERSC </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/distributed-training/ class=md-nav__link> <span class=md-ellipsis> Distributed training </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/hpo/ class=md-nav__link> <span class=md-ellipsis> Hyperparameter optimization </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/science-use-cases/ class=md-nav__link> <span class=md-ellipsis> Science use-cases </span> </a> </li> <li class=md-nav__item> <a href=../../../machinelearning/science-use-cases/hep-cnn/ class=md-nav__link> <span class=md-ellipsis> Deep Networks for HEP </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../policies/software-policy/ class=md-nav__link> <span class=md-ellipsis> Software Support Policy </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11 checked> <label class=md-nav__link for=__nav_11 id=__nav_11_label tabindex=0> <span class=md-ellipsis> Developing and Installing Software </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_11_label aria-expanded=true> <label class=md-nav__title for=__nav_11> <span class="md-nav__icon md-icon"></span> Developing and Installing Software </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_1> <label class=md-nav__link for=__nav_11_1 id=__nav_11_1_label tabindex=0> <span class=md-ellipsis> Compilers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_1_label aria-expanded=false> <label class=md-nav__title for=__nav_11_1> <span class="md-nav__icon md-icon"></span> Compilers </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/compilers/ class=md-nav__link> <span class=md-ellipsis> Compilers Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../development/compilers/base/ class=md-nav__link> <span class=md-ellipsis> Base Compilers </span> </a> </li> <li class=md-nav__item> <a href=../../../development/compilers/wrappers/ class=md-nav__link> <span class=md-ellipsis> Compiler Wrappers (recommended) </span> </a> </li> <li class=md-nav__item> <a href=../../../tutorials/playbooks/compiling/ class=md-nav__link> <span class=md-ellipsis> Compiling a Code </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_2> <label class=md-nav__link for=__nav_11_2 id=__nav_11_2_label tabindex=0> <span class=md-ellipsis> Build Tools </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_2_label aria-expanded=false> <label class=md-nav__title for=__nav_11_2> <span class="md-nav__icon md-icon"></span> Build Tools </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/build-tools/autoconf-make/ class=md-nav__link> <span class=md-ellipsis> Autoconf and Make </span> </a> </li> <li class=md-nav__item> <a href=../../../development/build-tools/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../development/build-tools/spack/ class=md-nav__link> <span class=md-ellipsis> Spack </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_3> <label class=md-nav__link for=__nav_11_3 id=__nav_11_3_label tabindex=0> <span class=md-ellipsis> Installing Software </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_3_label aria-expanded=false> <label class=md-nav__title for=__nav_11_3> <span class="md-nav__icon md-icon"></span> Installing Software </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/installing-software/ class=md-nav__link> <span class=md-ellipsis> Installing Software </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_4> <label class=md-nav__link for=__nav_11_4 id=__nav_11_4_label tabindex=0> <span class=md-ellipsis> Programming Models </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_4_label aria-expanded=false> <label class=md-nav__title for=__nav_11_4> <span class="md-nav__icon md-icon"></span> Programming Models </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/programming-models/ class=md-nav__link> <span class=md-ellipsis> Programming Models Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_4_2> <label class=md-nav__link for=__nav_11_4_2 id=__nav_11_4_2_label tabindex=0> <span class=md-ellipsis> MPI </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_11_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_11_4_2> <span class="md-nav__icon md-icon"></span> MPI </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/programming-models/mpi/ class=md-nav__link> <span class=md-ellipsis> Introduction to MPI </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/mpi/cray-mpich/ class=md-nav__link> <span class=md-ellipsis> Cray MPICH </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/mpi/openmpi/ class=md-nav__link> <span class=md-ellipsis> Open MPI </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/mpi/mpich/ class=md-nav__link> <span class=md-ellipsis> Upstream MPICH </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_4_3> <label class=md-nav__link for=__nav_11_4_3 id=__nav_11_4_3_label tabindex=0> <span class=md-ellipsis> OpenMP </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_11_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_11_4_3> <span class="md-nav__icon md-icon"></span> OpenMP </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/programming-models/openmp/ class=md-nav__link> <span class=md-ellipsis> Introduction to OpenMP </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/openmp/compiling/ class=md-nav__link> <span class=md-ellipsis> Compiling OpenMP Code </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/openmp/openmp-tools/ class=md-nav__link> <span class=md-ellipsis> Tools for OpenMP </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../development/programming-models/openacc/ class=md-nav__link> <span class=md-ellipsis> OpenACC </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/cuda/ class=md-nav__link> <span class=md-ellipsis> CUDA </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/upc/ class=md-nav__link> <span class=md-ellipsis> UPC </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/upcxx/ class=md-nav__link> <span class=md-ellipsis> UPC++ </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/coarrays/ class=md-nav__link> <span class=md-ellipsis> Coarrays </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/sycl/ class=md-nav__link> <span class=md-ellipsis> SYCL </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/kokkos/ class=md-nav__link> <span class=md-ellipsis> Kokkos </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/hpx/ class=md-nav__link> <span class=md-ellipsis> HPX </span> </a> </li> <li class=md-nav__item> <a href=../../../development/programming-models/iso-cpp-parstl-benchmark/cppParSTL/ class=md-nav__link> <span class=md-ellipsis> C++ parallel algorithms benchmark </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_5> <label class=md-nav__link for=__nav_11_5 id=__nav_11_5_label tabindex=0> <span class=md-ellipsis> Languages </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_5_label aria-expanded=false> <label class=md-nav__title for=__nav_11_5> <span class="md-nav__icon md-icon"></span> Languages </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/languages/julia/ class=md-nav__link> <span class=md-ellipsis> Julia </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/r/ class=md-nav__link> <span class=md-ellipsis> R </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/rust/ class=md-nav__link> <span class=md-ellipsis> Rust </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/idl/ class=md-nav__link> <span class=md-ellipsis> IDL </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_5_5> <label class=md-nav__link for=__nav_11_5_5 id=__nav_11_5_5_label tabindex=0> <span class=md-ellipsis> Python </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_11_5_5_label aria-expanded=false> <label class=md-nav__title for=__nav_11_5_5> <span class="md-nav__icon md-icon"></span> Python </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/languages/python/ class=md-nav__link> <span class=md-ellipsis> Python Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/python-intro/ class=md-nav__link> <span class=md-ellipsis> Intro to Python at NERSC </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/nersc-python/ class=md-nav__link> <span class=md-ellipsis> Using Python at NERSC </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/parallel-python/ class=md-nav__link> <span class=md-ellipsis> Parallel Python </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/python-shifter/ class=md-nav__link> <span class=md-ellipsis> Python in Shifter </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/profiling-debugging-python/ class=md-nav__link> <span class=md-ellipsis> Profiling Python </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/python-amd/ class=md-nav__link> <span class=md-ellipsis> Python on AMD CPUs </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/using-python-perlmutter/ class=md-nav__link> <span class=md-ellipsis> Using Python on Perlmutter </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/perlmutter-prep/ class=md-nav__link> <span class=md-ellipsis> Porting Python to Perlmutter GPUs </span> </a> </li> <li class=md-nav__item> <a href=../../../development/languages/python/faq-troubleshooting/ class=md-nav__link> <span class=md-ellipsis> FAQ and Troubleshooting </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_6> <label class=md-nav__link for=__nav_11_6 id=__nav_11_6_label tabindex=0> <span class=md-ellipsis> Libraries </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_6_label aria-expanded=false> <label class=md-nav__title for=__nav_11_6> <span class="md-nav__icon md-icon"></span> Libraries </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../development/libraries/ class=md-nav__link> <span class=md-ellipsis> Math Libraries </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/fftw/ class=md-nav__link> <span class=md-ellipsis> FFTW </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/lapack/ class=md-nav__link> <span class=md-ellipsis> LAPACK </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/mkl/ class=md-nav__link> <span class=md-ellipsis> MKL </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/libsci/ class=md-nav__link> <span class=md-ellipsis> LibSci </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/hdf5/ class=md-nav__link> <span class=md-ellipsis> HDF5 </span> </a> </li> <li class=md-nav__item> <a href=../../../development/libraries/netcdf/ class=md-nav__link> <span class=md-ellipsis> NetCDF </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_7 checked> <label class=md-nav__link for=__nav_11_7 id=__nav_11_7_label tabindex=0> <span class=md-ellipsis> Performance </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_7_label aria-expanded=true> <label class=md-nav__title for=__nav_11_7> <span class="md-nav__icon md-icon"></span> Performance </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../performance/readiness/ class=md-nav__link> <span class=md-ellipsis> Perlmutter Readiness </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/vectorization/ class=md-nav__link> <span class=md-ellipsis> Vectorization </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/parallelism/ class=md-nav__link> <span class=md-ellipsis> Parallelism </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/compiler-diagnostics/ class=md-nav__link> <span class=md-ellipsis> Compiler Diagnostics </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_7_5> <label class=md-nav__link for=__nav_11_7_5 id=__nav_11_7_5_label tabindex=0> <span class=md-ellipsis> I/O </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_11_7_5_label aria-expanded=false> <label class=md-nav__title for=__nav_11_7_5> <span class="md-nav__icon md-icon"></span> I/O </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../performance/io/dvs/ class=md-nav__link> <span class=md-ellipsis> DVS </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/io/ class=md-nav__link> <span class=md-ellipsis> I/O Resources at NERSC </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/io/library/ class=md-nav__link> <span class=md-ellipsis> I/O Tuning </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/io/lustre/ class=md-nav__link> <span class=md-ellipsis> Lustre </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/io/dev-shm/ class=md-nav__link> <span class=md-ellipsis> File system in memory </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../performance/portability/ class=md-nav__link> <span class=md-ellipsis> Portability </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/variability/ class=md-nav__link> <span class=md-ellipsis> Variability </span> </a> </li> <li class=md-nav__item> <a href=../../../performance/network/ class=md-nav__link> <span class=md-ellipsis> Network </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_7_9 checked> <label class=md-nav__link for=__nav_11_7_9 id=__nav_11_7_9_label tabindex=0> <span class=md-ellipsis> Performance Tools </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_11_7_9_label aria-expanded=true> <label class=md-nav__title for=__nav_11_7_9> <span class="md-nav__icon md-icon"></span> Performance Tools </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../ class=md-nav__link> <span class=md-ellipsis> Performance Tools Overview </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Codee </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Codee </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#introduction class=md-nav__link> Introduction </a> </li> <li class=md-nav__item> <a href=#command-line-tools class=md-nav__link> Command-line tools </a> </li> <li class=md-nav__item> <a href=#using-codee class=md-nav__link> Using Codee </a> <nav class=md-nav aria-label="Using Codee"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#analyze-hotspots class=md-nav__link> Analyze hotspots </a> </li> <li class=md-nav__item> <a href=#dig-deeper-into-the-actionable-insights-for-your-hotspots class=md-nav__link> Dig deeper into the actionable insights for your hotspots </a> </li> <li class=md-nav__item> <a href=#optimize-the-performance-of-your-hotspots class=md-nav__link> Optimize the performance of your hotspots </a> </li> <li class=md-nav__item> <a href=#other-analyses class=md-nav__link> Other analyses </a> </li> <li class=md-nav__item> <a href=#integration-with-build-tools class=md-nav__link> Integration with build tools </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#use-profiling-tools class=md-nav__link> Use Profiling Tools </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../craypat/ class=md-nav__link> <span class=md-ellipsis> CrayPat </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_7_9_4> <label class=md-nav__link for=__nav_11_7_9_4 id=__nav_11_7_9_4_label tabindex=0> <span class=md-ellipsis> Darshan </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=4 aria-labelledby=__nav_11_7_9_4_label aria-expanded=false> <label class=md-nav__title for=__nav_11_7_9_4> <span class="md-nav__icon md-icon"></span> Darshan </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../darshan/ class=md-nav__link> <span class=md-ellipsis> Darshan I/O Profiler </span> </a> </li> <li class=md-nav__item> <a href=../darshan/dxt/ class=md-nav__link> <span class=md-ellipsis> DXT Explorer </span> </a> </li> <li class=md-nav__item> <a href=../darshan/drishti/ class=md-nav__link> <span class=md-ellipsis> Drishti </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../map/ class=md-nav__link> <span class=md-ellipsis> MAP </span> </a> </li> <li class=md-nav__item> <a href=../nvidiaproftools/ class=md-nav__link> <span class=md-ellipsis> NVIDIA Profiling Tools </span> </a> </li> <li class=md-nav__item> <a href=../performancereports/ class=md-nav__link> <span class=md-ellipsis> Performance Reports </span> </a> </li> <li class=md-nav__item> <a href=../reveal/ class=md-nav__link> <span class=md-ellipsis> Reveal </span> </a> </li> <li class=md-nav__item> <a href=../roofline/ class=md-nav__link> <span class=md-ellipsis> Roofline Performance Model </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11_8> <label class=md-nav__link for=__nav_11_8 id=__nav_11_8_label tabindex=0> <span class=md-ellipsis> Debugging Tools </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_11_8_label aria-expanded=false> <label class=md-nav__title for=__nav_11_8> <span class="md-nav__icon md-icon"></span> Debugging Tools </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../debug/ class=md-nav__link> <span class=md-ellipsis> Debugging Tools Overview </span> </a> </li> <li class=md-nav__item> <a href=../../debug/compute-sanitizer/ class=md-nav__link> <span class=md-ellipsis> Compute Sanitizer </span> </a> </li> <li class=md-nav__item> <a href=../../debug/cuda-gdb/ class=md-nav__link> <span class=md-ellipsis> CUDA-GDB </span> </a> </li> <li class=md-nav__item> <a href=../../debug/ddt/ class=md-nav__link> <span class=md-ellipsis> DDT </span> </a> </li> <li class=md-nav__item> <a href=../../debug/gdb/ class=md-nav__link> <span class=md-ellipsis> GDB </span> </a> </li> <li class=md-nav__item> <a href=../../debug/gdb4hpc_ccdb/ class=md-nav__link> <span class=md-ellipsis> gdb4hpc and CCDB </span> </a> </li> <li class=md-nav__item> <a href=../../debug/sanitizers/ class=md-nav__link> <span class=md-ellipsis> Sanitizers and sanitizers4hpc </span> </a> </li> <li class=md-nav__item> <a href=../../debug/stat_atp/ class=md-nav__link> <span class=md-ellipsis> STAT and ATP </span> </a> </li> <li class=md-nav__item> <a href=../../debug/totalview/ class=md-nav__link> <span class=md-ellipsis> TotalView </span> </a> </li> <li class=md-nav__item> <a href=../../debug/valgrind/ class=md-nav__link> <span class=md-ellipsis> Valgrind and Valgrind4hpc </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_12> <label class=md-nav__link for=__nav_12 id=__nav_12_label tabindex=0> <span class=md-ellipsis> Managing Data </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_12_label aria-expanded=false> <label class=md-nav__title for=__nav_12> <span class="md-nav__icon md-icon"></span> Managing Data </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../filesystems/unix-file-permissions/ class=md-nav__link> <span class=md-ellipsis> Unix File Permissions </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/pitoolbox/ class=md-nav__link> <span class=md-ellipsis> PI Toolbox </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/quotas/ class=md-nav__link> <span class=md-ellipsis> Quotas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_12_4> <label class=md-nav__link for=__nav_12_4 id=__nav_12_4_label tabindex=0> <span class=md-ellipsis> Filesystems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_12_4_label aria-expanded=false> <label class=md-nav__title for=__nav_12_4> <span class="md-nav__icon md-icon"></span> Filesystems </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../filesystems/ class=md-nav__link> <span class=md-ellipsis> Filesystems Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/perlmutter-scratch/ class=md-nav__link> <span class=md-ellipsis> Perlmutter scratch </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/community/ class=md-nav__link> <span class=md-ellipsis> Community </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/dna/ class=md-nav__link> <span class=md-ellipsis> DnA </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_12_4_5> <label class=md-nav__link for=__nav_12_4_5 id=__nav_12_4_5_label tabindex=0> <span class=md-ellipsis> Archive (HPSS) </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_12_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_12_4_5> <span class="md-nav__icon md-icon"></span> Archive (HPSS) </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../filesystems/archive/ class=md-nav__link> <span class=md-ellipsis> The HPSS Archive System </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/HPSS-best-practices/ class=md-nav__link> <span class=md-ellipsis> HPSS Best Practices </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/HPSS-charging-sharing/ class=md-nav__link> <span class=md-ellipsis> HPSS Charging and Data Sharing </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/hsi/ class=md-nav__link> <span class=md-ellipsis> hsi </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/htar/ class=md-nav__link> <span class=md-ellipsis> htar </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/archive-stats/ class=md-nav__link> <span class=md-ellipsis> Storage Statistics </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../filesystems/global-home/ class=md-nav__link> <span class=md-ellipsis> Global Home </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/global-common/ class=md-nav__link> <span class=md-ellipsis> Global Common </span> </a> </li> <li class=md-nav__item> <a href=../../../filesystems/backups/ class=md-nav__link> <span class=md-ellipsis> Backups </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../services/databases/ class=md-nav__link> <span class=md-ellipsis> Databases </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_12_6> <label class=md-nav__link for=__nav_12_6 id=__nav_12_6_label tabindex=0> <span class=md-ellipsis> Moving Data </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_12_6_label aria-expanded=false> <label class=md-nav__title for=__nav_12_6> <span class="md-nav__icon md-icon"></span> Moving Data </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/ class=md-nav__link> <span class=md-ellipsis> File Transfer Software </span> </a> </li> <li class=md-nav__item> <a href=../../../systems/dtn/ class=md-nav__link> <span class=md-ellipsis> Data Transfer Nodes </span> </a> </li> <li class=md-nav__item> <a href=../../../services/globus/ class=md-nav__link> <span class=md-ellipsis> Globus </span> </a> </li> <li class=md-nav__item> <a href=../../../services/cvmfs/ class=md-nav__link> <span class=md-ellipsis> CVMFS </span> </a> </li> <li class=md-nav__item> <a href=../../../services/frontiercache/ class=md-nav__link> <span class=md-ellipsis> Frontier Cache </span> </a> </li> <li class=md-nav__item> <a href=../../../services/gridftp/ class=md-nav__link> <span class=md-ellipsis> GridFTP </span> </a> </li> <li class=md-nav__item> <a href=../../../services/scp/ class=md-nav__link> <span class=md-ellipsis> Scp </span> </a> </li> <li class=md-nav__item> <a href=../../../services/bbcp/ class=md-nav__link> <span class=md-ellipsis> Bbcp </span> </a> </li> <li class=md-nav__item> <a href=../../../services/nonuser-files/ class=md-nav__link> <span class=md-ellipsis> Files from Non-Users </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../filesystems/sharing/ class=md-nav__link> <span class=md-ellipsis> Sharing Data </span> </a> </li> <li class=md-nav__item> <a href=../../../policies/data-policy/policy/ class=md-nav__link> <span class=md-ellipsis> Data Policy </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13> <label class=md-nav__link for=__nav_13 id=__nav_13_label tabindex=0> <span class=md-ellipsis> Building Your Own Services </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_13_label aria-expanded=false> <label class=md-nav__title for=__nav_13> <span class="md-nav__icon md-icon"></span> Building Your Own Services </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13_1> <label class=md-nav__link for=__nav_13_1 id=__nav_13_1_label tabindex=0> <span class=md-ellipsis> Hosting Services with Spin </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_13_1_label aria-expanded=false> <label class=md-nav__title for=__nav_13_1> <span class="md-nav__icon md-icon"></span> Hosting Services with Spin </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/spin/ class=md-nav__link> <span class=md-ellipsis> Spin Overview </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/terminology/ class=md-nav__link> <span class=md-ellipsis> Terminology </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13_1_3> <label class=md-nav__link for=__nav_13_1_3 id=__nav_13_1_3_label tabindex=0> <span class=md-ellipsis> Getting Started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_13_1_3_label aria-expanded=false> <label class=md-nav__title for=__nav_13_1_3> <span class="md-nav__icon md-icon"></span> Getting Started </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/spin/local/ class=md-nav__link> <span class=md-ellipsis> Local Development </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/running/ class=md-nav__link> <span class=md-ellipsis> Running Your App in Spin </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/storage/ class=md-nav__link> <span class=md-ellipsis> Attaching Storage </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/connecting/ class=md-nav__link> <span class=md-ellipsis> Connecting to a Spin App </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13_1_4> <label class=md-nav__link for=__nav_13_1_4 id=__nav_13_1_4_label tabindex=0> <span class=md-ellipsis> Advanced Concepts </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_13_1_4_label aria-expanded=false> <label class=md-nav__title for=__nav_13_1_4> <span class="md-nav__icon md-icon"></span> Advanced Concepts </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/spin/cli/ class=md-nav__link> <span class=md-ellipsis> Using the Rancher CLI </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/envs/ class=md-nav__link> <span class=md-ellipsis> Development and Production environments </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/helm/ class=md-nav__link> <span class=md-ellipsis> Managing Spin Apps with Helm </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/migrate/ class=md-nav__link> <span class=md-ellipsis> Migrating Apps from Docker Compose </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../services/spin/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../services/spin/examples/ class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13_2> <label class=md-nav__link for=__nav_13_2 id=__nav_13_2_label tabindex=0> <span class=md-ellipsis> API </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_13_2_label aria-expanded=false> <label class=md-nav__title for=__nav_13_2> <span class="md-nav__icon md-icon"></span> API </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../services/sfapi/ class=md-nav__link> <span class=md-ellipsis> The Superfacility API </span> </a> </li> <li class=md-nav__item> <a href=../../../services/sfapi/authentication/ class=md-nav__link> <span class=md-ellipsis> Authentication </span> </a> </li> <li class=md-nav__item> <a href=../../../services/sfapi/examples/ class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=../../../services/sfapi/versioning/ class=md-nav__link> <span class=md-ellipsis> Version </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../services/science-gateways/ class=md-nav__link> <span class=md-ellipsis> Science Gateways </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_14> <label class=md-nav__link for=__nav_14 id=__nav_14_label tabindex=0> <span class=md-ellipsis> Managing Projects and Allocations </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_14_label aria-expanded=false> <label class=md-nav__title for=__nav_14> <span class="md-nav__icon md-icon"></span> Managing Projects and Allocations </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../iris/iris-for-pis/ class=md-nav__link> <span class=md-ellipsis> Iris Guide for PIs and Project Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../iris/iris-for-allocation-managers/ class=md-nav__link> <span class=md-ellipsis> ERCAP and Iris Guide for Allocation Managers </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../help/acronyms/ class=md-nav__link> <span class=md-ellipsis> Acronyms </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#introduction class=md-nav__link> Introduction </a> </li> <li class=md-nav__item> <a href=#command-line-tools class=md-nav__link> Command-line tools </a> </li> <li class=md-nav__item> <a href=#using-codee class=md-nav__link> Using Codee </a> <nav class=md-nav aria-label="Using Codee"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#analyze-hotspots class=md-nav__link> Analyze hotspots </a> </li> <li class=md-nav__item> <a href=#dig-deeper-into-the-actionable-insights-for-your-hotspots class=md-nav__link> Dig deeper into the actionable insights for your hotspots </a> </li> <li class=md-nav__item> <a href=#optimize-the-performance-of-your-hotspots class=md-nav__link> Optimize the performance of your hotspots </a> </li> <li class=md-nav__item> <a href=#other-analyses class=md-nav__link> Other analyses </a> </li> <li class=md-nav__item> <a href=#integration-with-build-tools class=md-nav__link> Integration with build tools </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#use-profiling-tools class=md-nav__link> Use Profiling Tools </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://gitlab.com/NERSC/nersc.gitlab.io/blob/main/docs/tools/performance/codee/index.md title="Edit this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z"/></svg> </a> <h1 id=codee>Codee<a class=headerlink href=#codee title="Permanent link">&para;</a></h1> <h2 id=introduction>Introduction<a class=headerlink href=#introduction title="Permanent link">&para;</a></h2> <p>Codee (previously known as Parallelware Analyzer) is a suite of command-line tools that automates code inspection from the performance perspective. Codee scans the source code without executing it and produces aimed at helping software developers to build better quality parallel software in less time. The tool can detect and fix defects related to parallelism with OpenMP and OpenACC. Data race conditions are very hard to detect and debug. It can also identify opportunities for OpenMP/OpenACC parallelization on CPUs and GPUs, too.</p> <p>Codee supports the C and C++ programming languages as well as multi-threading, SIMD vectorization and GPU offloading paradigms using both OpenMP and OpenACC.</p> <h2 id=command-line-tools>Command-line tools<a class=headerlink href=#command-line-tools title="Permanent link">&para;</a></h2> <p>Codee provides several command-line tools for the key stages of the parallel development workflow:</p> <ul> <li><em>pwreport</em> provides a structured report displaying the actionable items (defects, recommendations, remarks, opportunities for parallelization, ...) detected at the function level and at the loop level, followed by a code coverage summary and a performance metrics summary. You can control the amount of detail to be displayed and you will get clear suggestions on what your next actions should be, whether they correspond to code changes or further invocations of Codee to dig into more information.</li> <li><em>pwloops</em> provides insight into the parallel properties of loops found in the code which may constitute opportunities for OpenMP/OpenACC parallelism. There are different sub-analyses available that offer data scoping insights, array memory footprint and access patterns or the code annotated with parallelization opportunities.</li> <li><em>pwdirectives</em> provides guided generation of parallel code for multicore CPUs and GPUs, with OpenMP or OpenACC, using multithreading, offloading, (loop-level) tasking or SIMD either with OpenMP or GCC/Clang/ICC compiler-specific directives.</li> </ul> <h2 id=using-codee>Using Codee<a class=headerlink href=#using-codee title="Permanent link">&para;</a></h2> <p>You need to run your applications on compute nodes in a batch job. This is especially true when your code is using Cray MPI, Cray SHMEM, UPC, etc., as your code will fail to run on login nodes. Note also that it is against the <a href=../../../policies/resource-usage/ >NERSC policy</a> to run compute-intensive work on login nodes.</p> <p>For this example, we start an interactive batch job on Perlmutter:</p> <div class=highlight><pre><span></span><code>salloc -C gpu -A &lt;GPU_allocation_account&gt; -G 1 -N 1 -t 30 -q interactive </code></pre></div> <p>You’ll need to load the codee module:</p> <div class=highlight><pre><span></span><code>module load codee </code></pre></div> <p>The following examples use a matrix multiplication example in C. You can find the code in the <code>examples/matmul</code> directory inside your Codee installation.</p> <p>Copy the example to your working directory. To build, run:</p> <div class=highlight><pre><span></span><code>make </code></pre></div> <div class="admonition note"> <p class=admonition-title>Note</p> <p>This tool is under active development. As a result, the example commands below may show different output or results, depending on a version being used.</p> </div> <h3 id=analyze-hotspots>Analyze hotspots<a class=headerlink href=#analyze-hotspots title="Permanent link">&para;</a></h3> <p><code>pwreport</code> is the starting tool in most use cases, providing the entry-level reports, notably the <code>--evaluation</code> report which provides high level metrics and the <code>--actions</code> report which provides the structured report showing the detected actionable insights per function and loop.</p> <p>You should always start by invoking the <code>pwreport</code> tool for your hotspots. In this example, this corresponds to the <code>matmul</code> function located in the <code>main.c</code> source file. Invoke as follows. Note that included header files must be specified in the command.</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>pwreport<span class=w> </span>--evaluation<span class=w> </span>--include-tags<span class=w> </span>all<span class=w> </span>src/main.c:matmul<span class=w> </span>--<span class=w> </span>-I<span class=w> </span>src/include <span class=go>Compiler flags: -I src/include</span> <span class=go>Target Lines of code Analyzed lines Analysis time # actions Effort Cost Profiling</span> <span class=go>----------------- ------------- -------------- ------------- --------- ------ ------- ---------</span> <span class=go>src/main.c:matmul 55 14 57 ms 8 64 h 2094€ n/a</span> <span class=go>ACTIONS PER OPTIMIZATION TYPE</span> <span class=go>Target Serial scalar Serial control Serial memory Vectorization Multithreading Offloading</span> <span class=go>----------------- ------------- -------------- ------------- ------------- -------------- ----------</span> <span class=go>src/main.c:matmul 0 0 3 3 1 1</span> <span class=go>Target : analyzed directory or source code file</span> <span class=go>Lines of code : total lines of code found in the target (computed the same way as the sloccount tool)</span> <span class=go>Analyzed lines : relevant lines of code successfully analyzed</span> <span class=go>Analysis time : time required to analyze the target</span> <span class=gp># </span>actions<span class=w> </span>:<span class=w> </span>total<span class=w> </span>actionable<span class=w> </span>items<span class=w> </span><span class=o>(</span>opportunities,<span class=w> </span>recommendations,<span class=w> </span>defects<span class=w> </span>and<span class=w> </span>remarks<span class=o>)</span><span class=w> </span>detected <span class=go>Effort : estimated number of hours it would take to carry out all actions (serial scalar, serial control, serial memory, vectorization, multithreading and offloading with 1, 2, 4, 8, 12 and 16 hours respectively)</span> <span class=go>Cost : estimated cost in euros to carry out all the actions, paying the average salary of 56,286€/year for a professional C/C++ developer working 1720 hours per year</span> <span class=go>Profiling : estimation of overall execution time required by this target</span> <span class=go>SUGGESTIONS</span> <span class=go> You can specify multiple inputs which will be displayed as multiple rows (ie. targets) in the table, eg:</span> <span class=go> pwreport --evaluation some/other/dir --include-tags all src/main.c:matmul -- -I src/include</span> <span class=go> Use --actions to find out details about the detected actions:</span> <span class=go> pwreport --actions --include-tags all src/main.c:matmul -- -I src/include</span> <span class=go> You can focus on a specific optimization type by filtering by its tag (serial-scalar, serial-control, serial-memory, vectorization, multithreading, offloading), eg.:</span> <span class=go> pwreport --actions --include-tags serial-scalar src/main.c:matmul -- -I src/include</span> <span class=go>1 file successfully analyzed and 0 failures in 57 ms</span> </code></pre></div> <p>The entry-level performance optimization report lists the total number of actions found in the code, as well the total number of lines of code analyzed and the time needed by the tool to complete the inspection of the code. In addition, this entry-level report provides a breakdown of the total number of actions into the steps of the performance optimization process, from sequential optimization to memory optimization to vectorization, including offloading to accelerator devices like GPUs. Finally, the report suggests subsequent command-line tools invocations to assist the developer through the performance optimization process.</p> <p>Typically, the next step is invoking the <code>pwreport</code> tool with <code>--actions</code> to show the details about the actions detected in the code. The command-line invocation is as follows:</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>pwreport<span class=w> </span>--actions<span class=w> </span>--include-tags<span class=w> </span>all<span class=w> </span>src/main.c:matmul<span class=w> </span>--<span class=w> </span>-I<span class=w> </span>src/include <span class=go>Compiler flags: -I src/include</span> <span class=go>ACTIONS REPORT</span> <span class=go> FUNCTION BEGIN at src/main.c:matmul:6:1</span> <span class=go> 6: void matmul(size_t m, size_t n, size_t p, double **A, double **B, double **C) {</span> <span class=go> LOOP BEGIN at src/main.c:matmul:8:5</span> <span class=go> 8: for (size_t i = 0; i &lt; m; i++) {</span> <span class=go> LOOP BEGIN at src/main.c:matmul:9:9</span> <span class=go> 9: for (size_t j = 0; j &lt; n; j++) {</span> <span class=go> [RMK011] src/main.c:9:9 the vectorization cost model states the loop might benefit from explicit vectorization</span> <span class=go> [OPP002] src/main.c:9:9 is a SIMD opportunity</span> <span class=go> LOOP END</span> <span class=go> LOOP END</span> <span class=go> LOOP BEGIN at src/main.c:matmul:15:5</span> <span class=go> 15: for (size_t i = 0; i &lt; m; i++) {</span> <span class=go> LOOP BEGIN at src/main.c:matmul:16:9</span> <span class=go> 16: for (size_t j = 0; j &lt; n; j++) {</span> <span class=go> LOOP BEGIN at src/main.c:matmul:17:13</span> <span class=go> 17: for (size_t k = 0; k &lt; p; k++) {</span> <span class=go> 17: for (size_t k = 0; k &lt; p; k++) {</span> <span class=go> [PWR010] src/main.c:17:13 &#39;B&#39; multi-dimensional array not accessed in row-major order</span> <span class=go> [RMK010] src/main.c:17:13 the vectorization cost model states the loop is not a SIMD opportunity due to strided memory accesses in the loop body</span> <span class=go> LOOP END</span> <span class=go> [PWR039] src/main.c:16:9 consider loop interchange to improve the locality of reference and enable vectorization</span> <span class=go> LOOP END</span> <span class=go> [PWR035] src/main.c:15:5 avoid non-consecutive array access for variables &#39;A&#39;, &#39;B&#39; and &#39;C&#39; to improve performance</span> <span class=go> [OPP001] src/main.c:15:5 is a multi-threading opportunity</span> <span class=go> [OPP003] src/main.c:15:5 is an offload opportunity</span> <span class=go> LOOP END</span> <span class=go> FUNCTION END</span> <span class=go>CODE COVERAGE</span> <span class=go> Analyzable files: 1 / 1 (100.00 %)</span> <span class=go> Analyzable functions: 1 / 1 (100.00 %)</span> <span class=go> Analyzable loops: 5 / 5 (100.00 %)</span> <span class=go> Parallelized SLOCs: 0 / 14 ( 0.00 %)</span> <span class=go>METRICS SUMMARY</span> <span class=go> Total recommendations: 3</span> <span class=go> Total opportunities: 3</span> <span class=go> Total defects: 0</span> <span class=go> Total remarks: 2</span> <span class=go>SUGGESTIONS</span> <span class=go> Use --level 0|1|2 to get more details, e.g:</span> <span class=go> pwreport --level 2 --actions --include-tags all src/main.c:matmul -- -I src/include</span> <span class=go> 3 recommendations were found in your code, get more information with pwreport:</span> <span class=go> pwreport --actions --include-tags pwr src/main.c:matmul -- -I src/include</span> <span class=go> 3 opportunities for parallelization were found in your code, get more information with pwloops:</span> <span class=go> pwloops src/main.c:matmul -- -I src/include</span> <span class=go> More details on the defects, recommendations and more in the Knowledge Base:</span> <span class=go> https://www.appentra.com/knowledge/</span> <span class=go>1 file successfully analyzed and 0 failures in 20 ms</span> </code></pre></div> <p>The hotspot analysis succeeds and a report is outputted with the following sections:</p> <ul> <li>ACTIONS REPORT: structured report with actionable insights per function and loop.</li> <li>CODE COVERAGE: summary of how much code could be analyzed.</li> <li>METRICS SUMMARY: aggregated summary of the actionable insights detected in the analysis.</li> <li>SUGGESTIONS: general Codee usage hints.</li> </ul> <p>In our MATMUL example code, the Codee output shows that the source code file was analyzed successfully (0 failures), providing actions for all of the 5 loops of the code. In total Codee reported 3 opportunities for parallelization and 3 recommendations from the open catalog of <a href=https://www.codee.com/knowledge/ >best practices for performance optimization</a>, including memory optimization, vectorization, multithreading and offloading. As suggested by the tool, you can add <code>--level</code> to increase the level of the detail of the Codee performance optimization report.</p> <h3 id=dig-deeper-into-the-actionable-insights-for-your-hotspots>Dig deeper into the actionable insights for your hotspots<a class=headerlink href=#dig-deeper-into-the-actionable-insights-for-your-hotspots title="Permanent link">&para;</a></h3> <p>Try adding <code>--level 2</code> which is a more detailed level. This is very verbose but it will even provide Codee invocations that you can copy and paste. For instance, let's focus on the following excerpt from the output:</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>pwreport<span class=w> </span>--actions<span class=w> </span>--level<span class=w> </span><span class=m>2</span><span class=w> </span>--include-tags<span class=w> </span>all<span class=w> </span>src/main.c:matmul<span class=w> </span>--<span class=w> </span>-I<span class=w> </span>src/include <span class=go>[snip]</span> <span class=go> [OPP003] src/main.c:15:5 is an offload opportunity</span> <span class=go> Compute patterns:</span> <span class=go> - &#39;forall&#39; over the variable &#39;C&#39;</span> <span class=go> SUGGESTION: use pwloops to get more details or pwdirectives to generate directives to parallelize it:</span> <span class=go> pwloops src/main.c:matmul:15:5 -- -I src/include</span> <span class=go> pwdirectives --omp offload src/main.c:matmul:15:5 --in-place -- -I src/include</span> <span class=go> More information on: https://www.appentra.com/knowledge/opportunities</span> <span class=go>[snip]</span> </code></pre></div> <p>You can see suggestions on how to use other Codee command-line tools: use <code>pwloops</code> to get more detailed information about the loop or pwdirectives to actually rewrite the code using offloading in this example.</p> <h3 id=optimize-the-performance-of-your-hotspots>Optimize the performance of your hotspots<a class=headerlink href=#optimize-the-performance-of-your-hotspots title="Permanent link">&para;</a></h3> <p>Let's give the latter a try to add OpenACC offloading to your matrix computation. First, let's build and run <code>matmul</code> to see how long it takes for the sequential version to execute:</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>nvc<span class=w> </span>-I<span class=w> </span>src/include<span class=w> </span>src/matrix.c<span class=w> </span>src/clock.c<span class=w> </span>src/main.c<span class=w> </span>-o<span class=w> </span>matmul <span class=gp>$ </span>srun<span class=w> </span>-n<span class=w> </span><span class=m>1</span><span class=w> </span>./matmul<span class=w> </span><span class=m>1500</span> <span class=go>- Input parameters</span> <span class=go>n = 1500</span> <span class=go>- Executing test...</span> <span class=go>time (s)= 12.826260</span> <span class=go>size = 1500</span> <span class=go>chksum = 68432918175</span> </code></pre></div> <p>Now copy the command suggested by <code>pwreport</code> using OpenACC directives (note that using <code>--in-place</code> will modify the file, you can use <code>-o main_acc.c</code> instead to create a new file):</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>pwdirectives<span class=w> </span>--acc<span class=w> </span>src/main.c:matmul:15:5<span class=w> </span>-o<span class=w> </span>src/main_acc.c<span class=w> </span>--<span class=w> </span>-I<span class=w> </span>src/include <span class=go>Compiler flags: -I src/include</span> <span class=go>Results for file &#39;src/main.c&#39;:</span> <span class=go> Successfully parallelized loop at &#39;src/main.c:matmul:15:5&#39; [using offloading without teams]:</span> <span class=go> [INFO] src/main.c:15:5 Parallel forall: variable &#39;C&#39;</span> <span class=go> [INFO] src/main.c:15:5 Parallel region defined by OpenACC directive &#39;parallel&#39;</span> <span class=go> [INFO] src/main.c:15:5 Loop parallelized with OpenACC directive &#39;loop&#39;</span> <span class=go> [INFO] src/main.c:15:5 Data region for host-device data transfers defined by OpenACC directive &#39;data&#39;</span> <span class=go>Successfully created src/main_acc.c</span> <span class=go>Minimum software stack requirements: OpenACC version 2.0 with offloading capabilities</span> </code></pre></div> <p>The modified code is as follows:</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>cat<span class=w> </span>src/main_acc.c <span class=go>[snip]</span> <span class=gp> #</span>pragma<span class=w> </span>acc<span class=w> </span>data<span class=w> </span>copyin<span class=o>(</span>A<span class=o>[</span><span class=m>0</span>:m<span class=o>][</span><span class=m>0</span>:p<span class=o>]</span>,<span class=w> </span>B<span class=o>[</span><span class=m>0</span>:p<span class=o>][</span><span class=m>0</span>:n<span class=o>]</span>,<span class=w> </span>m,<span class=w> </span>n,<span class=w> </span>p<span class=o>)</span><span class=w> </span>copy<span class=o>(</span>C<span class=o>[</span><span class=m>0</span>:m<span class=o>][</span><span class=m>0</span>:n<span class=o>])</span> <span class=go> {</span> <span class=gp> #</span>pragma<span class=w> </span>acc<span class=w> </span>parallel <span class=go> {</span> <span class=gp> #</span>pragma<span class=w> </span>acc<span class=w> </span>loop <span class=go> for (size_t i = 0; i &lt; m; i++) {</span> <span class=go> for (size_t j = 0; j &lt; n; j++) {</span> <span class=go> for (size_t k = 0; k &lt; p; k++) {</span> <span class=go> C[i][j] += A[i][k] * B[k][j];</span> <span class=go> }</span> <span class=go> }</span> <span class=go> }</span> <span class=go> } // end parallel</span> <span class=go> } // end data</span> <span class=go>[snip]</span> </code></pre></div> <p>Build and run again to compare the performance, using the default CUDA thread block configuration handed by the system for this particular problem (128 CUDA threads per thread block, and 12 thread blocks):</p> <div class=highlight><pre><span></span><code><span class=gp>$ </span>nvc<span class=w> </span>-acc<span class=w> </span>-fast<span class=w> </span>-gpu<span class=o>=</span>cc80<span class=w> </span>-I<span class=w> </span>src/include<span class=w> </span>src/matrix.c<span class=w> </span>src/clock.c<span class=w> </span>src/main_acc.c<span class=w> </span>-o<span class=w> </span>matmulAcc <span class=gp>$ </span>srun<span class=w> </span>-n<span class=w> </span><span class=m>1</span><span class=w> </span>-G<span class=w> </span><span class=m>1</span><span class=w> </span>./matmulAcc<span class=w> </span><span class=m>1500</span> <span class=go>- Input parameters</span> <span class=go>n = 1500</span> <span class=go>- Executing test...</span> <span class=go>time (s)= 1.277405</span> <span class=go>size = 1500</span> <span class=go>chksum = 68432918175</span> </code></pre></div> <p>On a Perlmutter node with 1 GPU, the execution went from 12.8 seconds to less than 1.3 second.</p> <h3 id=other-analyses>Other analyses<a class=headerlink href=#other-analyses title="Permanent link">&para;</a></h3> <p>Each tool composing Codee has many different sub-analyses available. Use <code>--help</code> to get a listing of them along with other options available.</p> <p>In general, you should pay attention to the suggestions in the more detailed level of <code>pwreport</code> on what is available for each actionable insight.</p> <h3 id=integration-with-build-tools>Integration with build tools<a class=headerlink href=#integration-with-build-tools title="Permanent link">&para;</a></h3> <p>Supplying the required compiler flags for Codee to analyze your source code successfully can be a hassle (e.g., flag <code>-I</code> to include header files, flag <code>-D</code> to define compilation symbols). Codee supports several mechanisms for the user to provide compilation flags, the recommended option being the usage of a JSON Compilation Database. This can be generated using CMake or with tools such as bear that intercept compilation commands from different build systems.</p> <p>If you build the example using CMake with <code>-DCMAKE_EXPORT_COMPILE_COMMANDS=ON</code>, you will find a <code>compile_commands.json</code> file in the build directory. You can use the configuration file to instruct Codee to use it or, if you don't need any other settings, pass it to <code>--config</code>:</p> <div class=highlight><pre><span></span><code><span class=go>mkdir build</span> <span class=go>cd build</span> <span class=go>cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON</span> <span class=go>pwreport --config compile_commands.json ../src/main.c:matmul</span> </code></pre></div> <p>For more details, take a look at <code>docs/ConfigurationFile.md</code> and <code>examples/config</code> in the root folder of your Codee installation.</p> <h2 id=use-profiling-tools>Use Profiling Tools<a class=headerlink href=#use-profiling-tools title="Permanent link">&para;</a></h2> <p>Since the tool relies on a static code pattern analysis in making OpenMP/OpenACC parallelization suggestions, it does not know how much actual performance improvement will be achieved with adoption of suggested parallelization changes. To assess the resulting performance, you will need to profile code performance using <a href=../ >profiling tools</a> before and after the changes. If the suggested parallelization was not a performance hotspot, one is expected to only observe minor performance gains. Users are expected to work further on optimizing their code (cache use optimizations, chunk scheduling, loop collapsing, etc.) with help of a profiling tool.</p> </article> </div> </div> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div> <a href=https://www.lbl.gov/ title=LBL target=_blank> <img alt="LBL Home" src=/assets/images/lbl_logo.png height=70 width=90 style="padding: 10px; height: 70px; width: 90px "> </a> <a href=https://science.energy.gov title="DOE Office of Science" target=_blank> <img alt="DOE Office of Science Home" src=/assets/images/doe_logo.png height=70 width=71 style="padding: 10px; height: 70px; width: 71px "> </a> </div> <div class=md-footer-copyright> <a href=../../../accounts/policy/#acknowledge-use-of-nersc-resources title="Acknowledge NERSC">Acknowledge NERSC</a><br> <a href=https://www.lbl.gov/disclaimers/ target=_blank title="Privacy and Security Notice">Privacy and Security Notice</a><br> <a href=https://www.nersc.gov/about/contact-us/ target=_blank title="Contact Us">Contact Us</a><br> </div> <div class=md-social> <a href=https://www.nersc.gov target=_blank rel=noopener title=www.nersc.gov class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19.07 4.93C17.22 3 14.66 1.96 12 2c-2.66-.04-5.21 1-7.06 2.93C3 6.78 1.96 9.34 2 12c-.04 2.66 1 5.21 2.93 7.06C6.78 21 9.34 22.04 12 22c2.66.04 5.21-1 7.06-2.93C21 17.22 22.04 14.66 22 12c.04-2.66-1-5.22-2.93-7.07M17 12v6h-3.5v-5h-3v5H7v-6H5l7-7 7.5 7H17Z"/></svg> </a> <a href=https://help.nersc.gov target=_blank rel=noopener title=help.nersc.gov class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10Z"/></svg> </a> <a href=https://www.nersc.gov/live-status/motd/ target=_blank rel=noopener title=www.nersc.gov class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.5 4A5.5 5.5 0 0 0 2 9.5c0 .5.09 1 .22 1.5H6.3l1.27-3.37c.3-.8 1.48-.88 1.86 0L11.5 13l.59-1.42c.13-.33.48-.58.91-.58h8.78c.13-.5.22-1 .22-1.5A5.5 5.5 0 0 0 16.5 4c-1.86 0-3.5.93-4.5 2.34C11 4.93 9.36 4 7.5 4M3 12.5a1 1 0 0 0-1 1 1 1 0 0 0 1 1h2.44L11 20c1 .9 1 .9 2 0l5.56-5.5H21a1 1 0 0 0 1-1 1 1 0 0 0-1-1h-7.6l-.93 2.3c-.4 1.01-1.55.87-1.92.03L8.5 9.5l-.96 2.33c-.15.38-.49.67-.94.67H3Z"/></svg> </a> <a href=https://github.com/NERSC target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> </a> <a href=https://gitlab.com/NERSC target=_blank rel=noopener title=gitlab.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81-2.9-.295-5.7.083-8.4 1.11-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.09 18.09 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3 4.7 0 9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82z"/></svg> </a> <a href=https://www.nersc.gov/users/NUG/nersc-users-slack/ target=_blank rel=noopener title=www.nersc.gov class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg> </a> </div> </div> </div> <footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "../../..", "features": ["content.action.edit"], "search": "../../../assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script> var __search = { transform: function(query) { return query } } </script> <script src=../../../assets/javascripts/bundle.dff1b7c8.min.js></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script> </body> </html>

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