{"id":27918791,"url":"https://github.com/juliaparallel/julia-hpc-tutorial-siam-cse25","last_synced_at":"2026-05-14T20:06:35.366Z","repository":{"id":256122797,"uuid":"854378899","full_name":"JuliaParallel/julia-hpc-tutorial-siam-cse25","owner":"JuliaParallel","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-06T20:19:35.000Z","size":35038,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-10-14T21:04:26.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuliaParallel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-09T04:12:42.000Z","updated_at":"2025-03-13T15:44:34.000Z","dependencies_parsed_at":"2025-05-06T18:49:37.284Z","dependency_job_id":null,"html_url":"https://github.com/JuliaParallel/julia-hpc-tutorial-siam-cse25","commit_stats":null,"previous_names":["juliaparallel/julia-hpc-tutorial-siam-cse25"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JuliaParallel/julia-hpc-tutorial-siam-cse25","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaParallel%2Fjulia-hpc-tutorial-siam-cse25","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaParallel%2Fjulia-hpc-tutorial-siam-cse25/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaParallel%2Fjulia-hpc-tutorial-siam-cse25/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaParallel%2Fjulia-hpc-tutorial-siam-cse25/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaParallel","download_url":"https://codeload.github.com/JuliaParallel/julia-hpc-tutorial-siam-cse25/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaParallel%2Fjulia-hpc-tutorial-siam-cse25/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33041258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-06T18:25:36.130Z","updated_at":"2026-05-14T20:06:35.342Z","avatar_url":"https://github.com/JuliaParallel.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"![plot](./assets/banner.png)\n\n\n# The Julia Language for Productive High-Performance Computing Tutorial @ SIAM CSE24\n\nThis repository contains the material used for the [Accessible High-Performance Computing Using the Julia Language](https://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=82536) tutoral.\n\n## Apply for your Training at a DOE Supercomputer Now!\n\n1. Go to: https://iris.nersc.gov/train\n\n2. Enter the Training Code: `bY70` along with your details Note: if you have\n   previously registered an account using a different code please recreate it.\n\n3. You will see a screen like this:\n\u003cimg src=\"https://github.com/user-attachments/assets/40556925-1c3e-4aee-9b1f-cee721f5c1a9\" width=\"480\"\u003e\n\n**Important:** make a copy of your login and password you won’t be able to\nchange these, nor recover them later!!!\n\n## Getting Started at NERSC\n\nThe [Cheat Sheet](./Cheat%20Sheet.pdf) outlines the steps you need to get started at NERSC.  \n\n### Special Considerations for Running on NERSC\n\nNERSC has about 11000 users, therefore the system-wide configurations are\npretty bare-bones. On single-user systems (like your local workstation, laptop,\nor even the cloud), we've fallen into the habbit of making the system-wide\nconfigurations our own. Sadly we can't do that on a shared system like NERSC's\nPerlmutter supercomputer -- just imagine the pandemonium for thousands of users\ncustomizing YOUR shell.\n\nThe solution presented here is to install all necessary Julia packages using\nthe `install.sh` script. This script also generates `activate.sh` which\nactivates any customizations to the user shell environment.\n\n## Running Notebooks with JupyterLab\n\n\u003cdetails\u003e\n\u003csummary\u003e\n    Running the notebooks on Perlmutter\n\u003c/summary\u003e\n\n### On NERSC\n\nJupyter on HPC is a little different from running it locally or in the cloud.\nThese instructiosn are based on NERSC's \n[official documentation for Jupyter](https://docs.nersc.gov/services/jupyter/) \nThe key difference is that you need to use the `install.sh` script to put the\nJupyer kernel specs in the location that JupyterHub expects\n(`~/.local/share/jupyter/kernels`). The `install.sh` script does the following:\n\n1. Installing a single-threaded and a multi-threaded kernel (the multi-threaded\n   kernel is different form the single-threaded case because sets the\n   `JULIA_NUM_THREADS` environment variable) into the user environment (where\n   Jupyter Hub expects to find kernels).\n\n2. Intializes the user's Julia environment and makes sure IJulia is installed.\n\nThese steps basically make use of the existing Julia infrastructure at NERSC to\nstreamline the steps detailed in \"Running Locally\" below.\n\n### Step-By-Step Guide for setting up Juputer Kernels at NERSC:\n\n\n1. Go to https://jupyter.nersc.gov and log in with your credentials -- you should see soemthing like this:\n\u003cimg width=\"825\" alt=\"image\" src=\"https://github.com/user-attachments/assets/7abc3be2-1ad2-43f4-b2d1-fe6e7b5e8e5a\"\u003e\nYou might not see the bright red “stop” button, and probably fewer rows/columns – that’s OK. Select “Server” in the “Login Node” column and “Perlmutter” row (red box)\n\n2. After a short while, you should see a blue button (with a “+” sign) in the top left hand corner. Push it, and then select “Terminal” (you might need to scroll)\n\u003cimg width=\"818\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c642bfec-d525-4d87-a53b-16625e16ed81\"\u003e\n\n3. If you did everything correctly, you should see a terminal window in the left-hand tab:\n\u003cimg width=\"793\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a7d0a60f-e20c-465d-89c8-433fb146b5d7\"\u003e\n\n4. Clone the tutorial repository:\n```sh\ngit clone https://github.com/JuliaParallel/julia-hpc-tutorial-siam-cse25.git\n```\n\n5. Enter the tutorial folder:\n```sh\ngit clone https://github.com/JuliaParallel/julia-hpc-tutorial-siam-cse25.git\ncd julia-hpc-tutorial-siam-cse25\n```\n\n6. Run the install script:\n```sh\n./install.sh\n```\n(this might take some time – that’s OK)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n    Running the notebooks locally if you don't have access to Perlmutter\n\u003c/summary\u003e\n\n### Locally\n\nClone this repository (make sure to [install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)) and then enter inside the new directory by running the following commands in a terminal (we recommend using [PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.4) if on Windows):\n\n```sh\ngit clone https://github.com/JuliaParallel/julia-hpc-tutorial-sc24\ncd julia-hpc-tutorial-sc24\n```\n\nAfter [installing Julia](https://julialang.org/downloads/), start it with\n```sh\njulia --project=.\n```\n\nand then inside the Julia [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) you can run [JupyterLab](https://jupyterlab.readthedocs.io/en/latest/) with\n\n```julia\n# Necessary only the first time, to instantiate the environment\nusing Pkg\nPkg.instantiate()\n\n# Set the number of threads used by julia inside  Jupyter\nENV[\"JULIA_NUM_THREADS\"] = \"auto\"\n\n# Run JupyterLab\nimport IJulia\nIJulia.jupyterlab()\n```\n\nThis should open a tab in your default browser showing the JupyterLab interface.\n\n### Using a Docker container\n\nWe also provide a [Docker image](https://github.com/JuliaParallel/julia-hpc-tutorial-sc24/pkgs/container/julia-hpc-tutorial-sc24) (built for `linux/amd64` and `linux/arm64`) for running the notebook, which you can pull with\n\n```sh\ndocker pull ghcr.io/juliaparallel/julia-hpc-tutorial-sc24:main\n```\n\n[JupyterLab](https://jupyterlab.readthedocs.io/en/latest/) can then be run on MacOS or Linux with\n\n```sh\ndocker run -p 8888:8888 ghcr.io/juliaparallel/julia-hpc-tutorial-sc24:main julia -e 'import Conda; run(`$(joinpath(Conda.SCRIPTDIR, \"jupyter\")) lab --allow-root --ip 0.0.0.0 --port 8888`)'\n```\n\nor if using PowerShell on Windows with\n\n```PowerShell\ndocker run -p 8888:8888 ghcr.io/juliaparallel/julia-hpc-tutorial-sc24:main julia -e 'import Conda; run(`$(joinpath(Conda.SCRIPTDIR, \"\"\"\"\"jupyter\"\"\"\"\")) lab --allow-root --ip 0.0.0.0 --port 8888`)'\n```\n\nThis will launch JupyterLabl within the container, and if successful you should see a message similar to\n\n```\n    To access the server, open this file in a browser:\n        file:///root/.local/share/jupyter/runtime/jpserver-13-open.html\n    Or copy and paste one of these URLs:\n        http://7a88b848fcf0:8888/lab?token=4775e74fd85e95632e1cfeb32753eb3d009ca0fb76fca3b0\n        http://127.0.0.1:8888/lab?token=4775e74fd85e95632e1cfeb32753eb3d009ca0fb76fca3b0\n```\n\nwhere `4775e74fd85e95632e1cfeb32753eb3d009ca0fb76fca3b0` in the URL will be replaced with another random alphanumeric string.\nThe JupyterLab environment is accessed as a web app, so you should open a browser window and navigate to the `http://127.0.0.1:8888/lab?token=....` URL indicated in the message to open the JupyterLab interface.\nIf you get `Unable to connect` message or similar when trying to open the URL, you may need to replace the `0.0.0.0` component with `localhost`, so for the example above you would navigate to `http://localhost:8888/lab?token=4775e74fd85e95632e1cfeb32753eb3d009ca0fb76fca3b0`.\n\n### GitHub Codespaces\n\n\u003e [!NOTE]\n\u003e GitHub Codespaces is a convenient environment for running notebooks on the web for free, but the resources on the free plan are limited, and parallel scaling efficiency may be be poor in some cases.\n\nYou can also take advantage of the ability of [GitHub Codespaces](https://github.com/features/codespaces) to run custom web apps.\nGo go the [Codespaces page of this repository](https://github.com/JuliaParallel/julia-hpc-tutorial-sc24/codespaces), click on the green button on the top right \"Create codespace on main\" and wait a few seconds for the codespace to start.\nIn the bottom panel, go to the \"Terminal\" tab (other tabs should be \"Problems\", \"Output\", \"Debug console\", \"Ports\") and when you see the message (this can take a few seconds to appear after the codespace started, hold on)\n\n```\n    To access the server, open this file in a browser:\n        file:///root/.local/share/jupyter/runtime/jpserver-13-open.html\n    Or copy and paste one of these URLs:\n        http://7a88b848fcf0:8888/lab\n        http://127.0.0.1:8888/lab\n```\n\ngo to the \"Ports\" tab, right click on the port 8888 and click on \"Open in browser\" (alternatively, click on the globe-shaped button under the \"Forwarded Addresses\" column).\nThis will open the JupyterLab landing page in a new tab in your browser.\n\nIf you want to make your app accessible to others (please remember to make sure there's no sensitive or private data in it!), navigate to the \"Ports\" tab, right click on the port 8888 and then \"Port visibility\" -\u003e \"Public\".\n\nThe `.devcontainer` used here has been adapted from the [Julia workshop for the UCL Festival of Digital Research \u0026 Scholarship 2024](https://github.com/UCL-ARC/julia-workshop), in turn based on the [Zero-setup R workshops with GitHub Codespaces](https://github.com/revodavid/devcontainers-rstudio) repository presented at [rstudio::conf 2022](https://rstudioconf2022.sched.com/event/11iag/zero-setup-r-workshops-with-github-codespaces).\n\n\u003c/details\u003e\n\n## Further resources\n\nIf you have further questions about the use of Julia, especially in HPC setting, check out\n\n* the [Julia Discourse web forum](https://discourse.julialang.org/) for asking questions\n* the [Julia on HPC clusters notes](https://juliahpc.github.io/)\n\nEveryone is also welcome to join the fortnightly [Julia HPC community calls](https://julialang.org/community/#events), the 2nd Thursday and the 4th Tuesday of the month.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaparallel%2Fjulia-hpc-tutorial-siam-cse25","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliaparallel%2Fjulia-hpc-tutorial-siam-cse25","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaparallel%2Fjulia-hpc-tutorial-siam-cse25/lists"}