From 5dbbabc74b665bbda2076242eedccddc1e468c7a Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 22:53:40 +0800
Subject: [PATCH 01/12] SOF-7534: qe gpu tutorial
---
lang/en/docs/tutorials/jobs-cli/qe-gpu.md | 72 +++++++++++++++++++++++
1 file changed, 72 insertions(+)
create mode 100644 lang/en/docs/tutorials/jobs-cli/qe-gpu.md
diff --git a/lang/en/docs/tutorials/jobs-cli/qe-gpu.md b/lang/en/docs/tutorials/jobs-cli/qe-gpu.md
new file mode 100644
index 000000000..4290afc6e
--- /dev/null
+++ b/lang/en/docs/tutorials/jobs-cli/qe-gpu.md
@@ -0,0 +1,72 @@
+# Accelerate Quantum ESPRESSO simulation with GPUs
+
+We will walk through a step-by-step example of running a Quantum ESPRESSO job on
+GPUs. As of the time of writing, the GPU (CUDA) build of Quantum ESPRESSO is
+only available via the Command Line Interface (CLI). We will see that we can
+dramatically speedup our Quantum ESPRESSO simulation by using GPUs.
+
+1. First connect to login node via [SSH client](../../remote-connection/ssh.md),
+or [web terminal](../../remote-connection/web-terminal.md).
+
+2. Example job that we are going to run is available in git repository
+[exabyte-io/cli-job-examples](https://github.com/exabyte-io/cli-job-examples).
+You may clone the repository to your working directory:
+
+```bash
+git clone https://github.com/exabyte-io/cli-job-examples
+cd espresso/gpu
+```
+
+3. You will find all required input files and job script under `espresso/gpu`.
+Please review the input files and PBS job script, update the project name, and
+other parameters as necessary.
+
+4. We will use [GOF](../../infrastructure/clusters/aws.md#hardware-specifications)
+queue, which comprises 8 CPUs and 1 NVIDIA V100 GPU per node.
+
+5. Since our compute node contains 8 CPUs with 1 GPU, we will run 1 MPI process
+with 8 OpenMP threads.
+
+```bash
+module load espresso/7.4-cuda-12.4-cc-70
+export OMP_NUM_THREADS=8
+mpirun -np 1 pw.x -npool 1 -ndiag 1 -in pw.cuo.scf.in > pw.cuo.gpu.scf.out
+```
+
+6. Finally, we can submit our job using:
+
+```bash
+qsub job.gpu.pbs
+```
+
+Once, the job is completed, we can inspect the output file `pw.cuo.gpu.scf.out`.
+We will see that GPU was used, and the job took about 1 minute wall time.
+
+```
+Parallel version (MPI & OpenMP), running on 8 processor cores
+Number of MPI processes: 1
+Threads/MPI process: 8
+...
+
+GPU acceleration is ACTIVE. 1 visible GPUs per MPI rank
+GPU-aware MPI enabled
+...
+
+Parallel routines
+
+PWSCF : 37.94s CPU 50.77s WALL
+```
+
+7. For comparison, we ran the same calculation using only CPUs, and it took
+about 20 times longer.
+
+```
+Parallel version (MPI), running on 8 processors
+
+MPI processes distributed on 1 nodes
+...
+
+Parallel routines
+
+PWSCF : 18m 0.56s CPU 18m25.33s WALL
+```
From 9686bfe9563c2126da449dc6edc72341138a1c94 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 22:54:09 +0800
Subject: [PATCH 02/12] SOF-7534: chore ==> bump minor deps
---
requirements.txt | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/requirements.txt b/requirements.txt
index c985e9284..7c62cff13 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,7 +4,7 @@ cachetools==5.5.0
certifi==2024.8.30
chardet==4.0.0
charset-normalizer==3.4.0
-click==8.1.7
+click==8.1.8
colorama==0.4.6
enum34==1.1.10
exabyte-json-include==2020.10.19
@@ -22,24 +22,24 @@ grpcio-status==1.66.2
httplib2==0.22.0
idna==3.10
importlib_metadata==8.5.0
-Jinja2==3.1.4
+Jinja2==3.1.5
livereload==2.6.3
-mkdocs-macros-plugin==1.2.0
Markdown==3.7
MarkupSafe==2.1.5
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-get-deps==0.2.0
mkdocs-git-revision-date-localized-plugin==1.2.9
-mkdocs-material==9.5.40
+mkdocs-macros-plugin==1.2.0
+mkdocs-material==9.5.49
mkdocs-material-extensions==1.3.1
oauth2client==4.1.3
-packaging==24.1
+packaging==24.2
paginate==0.5.7
pathspec==0.12.1
platformdirs==4.3.6
proto-plus==1.24.0
-protobuf==5.28.2
+protobuf==5.28.3
pyasn1==0.6.1
pyasn1_modules==0.4.1
Pygments==2.18.0
@@ -52,10 +52,11 @@ pyyaml_env_tag==0.1
regex==2024.9.11
requests==2.32.3
rsa==4.9
-singledispatch==3.4.0.3
+singledispatch==3.4.0.4
six==1.16.0
smmap==5.0.1
-tornado==6.4.1
+termcolor==2.5.0
+tornado==6.4.2
uritemplate==4.1.1
urllib3==2.2.3
watchdog==4.0.2
From 7ea8a2cbdb799ab35b0d37520226407026772562 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 23:29:10 +0800
Subject: [PATCH 03/12] SOF-7534: use python 3.10 for netlify preview and
production builds
---
.github/workflows/build-tests.yml | 34 +++++++++++++++----------------
.github/workflows/s3-deploy.yml | 6 +++---
netlify.toml | 2 +-
3 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/.github/workflows/build-tests.yml b/.github/workflows/build-tests.yml
index 60a2bf330..958ada5ce 100644
--- a/.github/workflows/build-tests.yml
+++ b/.github/workflows/build-tests.yml
@@ -45,22 +45,22 @@ jobs:
if: (github.repository != 'Exabyte-io/template-definitions-js-py') && (github.ref_name == 'master')
steps:
- - name: Checkout this repository
- uses: actions/checkout@v4
- with:
- lfs: true
+ - name: Checkout this repository
+ uses: actions/checkout@v4
+ with:
+ lfs: true
- - name: Checkout actions repository
- uses: actions/checkout@v4
- with:
- repository: Exabyte-io/actions
- token: ${{ secrets.BOT_GITHUB_TOKEN }}
- path: actions
+ - name: Checkout actions repository
+ uses: actions/checkout@v4
+ with:
+ repository: Exabyte-io/actions
+ token: ${{ secrets.BOT_GITHUB_TOKEN }}
+ path: actions
- - name: Publish python release
- uses: ./actions/py/publish
- with:
- python-version: 3.9.x
- github-token: ${{ secrets.BOT_GITHUB_TOKEN }}
- publish-tag: 'true'
- publish-to-pypi: 'false'
+ - name: Publish python release
+ uses: ./actions/py/publish
+ with:
+ python-version: "3.10"
+ github-token: ${{ secrets.BOT_GITHUB_TOKEN }}
+ publish-tag: "true"
+ publish-to-pypi: "false"
diff --git a/.github/workflows/s3-deploy.yml b/.github/workflows/s3-deploy.yml
index 4d82cc3ca..632fa4f67 100644
--- a/.github/workflows/s3-deploy.yml
+++ b/.github/workflows/s3-deploy.yml
@@ -3,9 +3,9 @@ name: Update S3 deploy
on:
push:
branches:
- - 'master'
+ - "master"
schedule:
- - cron: '0 0 1 1 *'
+ - cron: "0 0 1 1 *"
workflow_dispatch:
jobs:
@@ -26,7 +26,7 @@ jobs:
- name: Set python 3 version
uses: actions/setup-python@v5
with:
- python-version: "3.8"
+ python-version: "3.10"
- name: Build pages
uses: Exabyte-io/action-mkdocs-build@main
diff --git a/netlify.toml b/netlify.toml
index fc76f711d..b74e2fd9c 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -3,5 +3,5 @@
publish = "site/"
[build.environment]
- PYTHON_VERSION = "3.8"
+ PYTHON_VERSION = "3.10"
NODE_VERSION = "20"
From f483267c413a95b2481820dec5d6f79a55ade44e Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 23:33:02 +0800
Subject: [PATCH 04/12] SOF-7534: chore ==> update platform version
---
mkdocs.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mkdocs.yml b/mkdocs.yml
index 5c894a617..9055638f2 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -30,7 +30,7 @@ extra_javascript:
copyright: Exabyte Inc. All rights reserved. | Back to platform
extra:
- version: "2024.10.17"
+ version: "2024.12.19"
preload_javascript:
- /extra/js/preload_hotjar.js
- /extra/js/preload.js
From 2b2519dfbccc41d6042d75c05fad265692813550 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 23:35:44 +0800
Subject: [PATCH 05/12] SOF-7534: add voiceover text
---
lang/en/docs/tutorials/jobs-cli/qe-gpu.json | 44 +++++++++++++++++++++
mkdocs.yml | 1 +
2 files changed, 45 insertions(+)
create mode 100644 lang/en/docs/tutorials/jobs-cli/qe-gpu.json
diff --git a/lang/en/docs/tutorials/jobs-cli/qe-gpu.json b/lang/en/docs/tutorials/jobs-cli/qe-gpu.json
new file mode 100644
index 000000000..bbb3ed85b
--- /dev/null
+++ b/lang/en/docs/tutorials/jobs-cli/qe-gpu.json
@@ -0,0 +1,44 @@
+{
+ "descriptionLinks": [
+ "Accelerate Quantum ESPRESSO simulation with GPUs: https://docs.mat3ra.com/tutorials/jobs-cli/qe-gpu/"
+ ],
+ "description": "We walk through a step-by-step example of running a Quantum ESPRESSO job on a GPU enabled node. We see significant performance improvement by using CUDA/GPU-enabled version of Quantum ESPRESSO.",
+ "tags": [
+ {
+ "...": "../../metadata/general.json#/tags"
+ },
+ {
+ "...": "../../models-directory/dft.json#/tags"
+ },
+ {
+ "...": "../../software-directory/modeling/quantum-espresso.json#/tags"
+ },
+ "CUDA",
+ "GPU",
+ "NVIDIA"
+ ],
+ "title": "Mat3ra Tutorial: Accelerate Quantum ESPRESSO simulation with GPUs",
+ "youTubeCaptions": [
+ {
+ "text": "Hello, and welcome to the matera tutorial series.",
+ "startTime": "00:00:00.000",
+ "endTime": "00:00:03.000"
+ },
+ {
+ "text": "In today's tutorial, we will go through a step-by-step example of running a Quantum ESPRESSO simulation on one of our GPU enabled compute nodes.",
+ "startTime": "00:00:04.000",
+ "endTime": "00:00:14.000"
+ },
+ {
+ "text": "At the moment, GPU build of Quantum ESPRESSO is only available via our command line interface, and soon it will be available in the web interface.",
+ "startTime": "00:00:15.000",
+ "endTime": "00:00:24.000"
+ },
+ {
+ "text": "Let's connect to the login node using SSH.",
+ "startTime": "00:00:25.000",
+ "endTime": "00:00:14.000"
+ }
+ ],
+ "youTubeId": ""
+}
diff --git a/mkdocs.yml b/mkdocs.yml
index 9055638f2..6fc93376b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -149,6 +149,7 @@ nav:
- Overview: tutorials/jobs-cli/overview.md
- Create + run a CLI Job: tutorials/jobs-cli/job-cli-example.md
- Import a CLI Job to Web Interface: tutorials/jobs-cli/cli-job-import.md
+ - QE GPU Job: tutorials/jobs-cli/qe-gpu.md
- Templating:
- Overview: tutorials/templating/overview.md
- Flags by Elemental Composition: tutorials/templating/set-flag-by-composition.md
From 2dc85b4e95cd2281c511653a8a451516a3d371a1 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 23:49:29 +0800
Subject: [PATCH 06/12] SOF-7534: downgrade termcolor to support python 3.8
---
requirements.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/requirements.txt b/requirements.txt
index 7c62cff13..14aa8c728 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -55,7 +55,7 @@ rsa==4.9
singledispatch==3.4.0.4
six==1.16.0
smmap==5.0.1
-termcolor==2.5.0
+termcolor==2.4.0
tornado==6.4.2
uritemplate==4.1.1
urllib3==2.2.3
From 9a84bbb57087f80ea4c927e2612710e3486f32a7 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Mon, 23 Dec 2024 23:56:24 +0800
Subject: [PATCH 07/12] SOF-7534: fix order list
---
lang/en/docs/tutorials/jobs-cli/qe-gpu.md | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/lang/en/docs/tutorials/jobs-cli/qe-gpu.md b/lang/en/docs/tutorials/jobs-cli/qe-gpu.md
index 4290afc6e..300031b0f 100644
--- a/lang/en/docs/tutorials/jobs-cli/qe-gpu.md
+++ b/lang/en/docs/tutorials/jobs-cli/qe-gpu.md
@@ -11,7 +11,6 @@ or [web terminal](../../remote-connection/web-terminal.md).
2. Example job that we are going to run is available in git repository
[exabyte-io/cli-job-examples](https://github.com/exabyte-io/cli-job-examples).
You may clone the repository to your working directory:
-
```bash
git clone https://github.com/exabyte-io/cli-job-examples
cd espresso/gpu
@@ -26,7 +25,6 @@ queue, which comprises 8 CPUs and 1 NVIDIA V100 GPU per node.
5. Since our compute node contains 8 CPUs with 1 GPU, we will run 1 MPI process
with 8 OpenMP threads.
-
```bash
module load espresso/7.4-cuda-12.4-cc-70
export OMP_NUM_THREADS=8
@@ -34,14 +32,12 @@ mpirun -np 1 pw.x -npool 1 -ndiag 1 -in pw.cuo.scf.in > pw.cuo.gpu.scf.out
```
6. Finally, we can submit our job using:
-
```bash
qsub job.gpu.pbs
```
-Once, the job is completed, we can inspect the output file `pw.cuo.gpu.scf.out`.
+7. Once, the job is completed, we can inspect the output file `pw.cuo.gpu.scf.out`.
We will see that GPU was used, and the job took about 1 minute wall time.
-
```
Parallel version (MPI & OpenMP), running on 8 processor cores
Number of MPI processes: 1
@@ -57,9 +53,8 @@ Parallel routines
PWSCF : 37.94s CPU 50.77s WALL
```
-7. For comparison, we ran the same calculation using only CPUs, and it took
+8. For comparison, we ran the same calculation using only CPUs, and it took
about 20 times longer.
-
```
Parallel version (MPI), running on 8 processors
From a5dec5ab2e6de917bc9e6d6f411c16c3b284fe97 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Tue, 24 Dec 2024 00:28:35 +0800
Subject: [PATCH 08/12] SOF-7534: drop support for python 3.8
---
.github/workflows/build-tests.yml | 1 -
README.md | 2 +-
requirements.txt | 2 +-
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/build-tests.yml b/.github/workflows/build-tests.yml
index 958ada5ce..017cef81f 100644
--- a/.github/workflows/build-tests.yml
+++ b/.github/workflows/build-tests.yml
@@ -15,7 +15,6 @@ jobs:
matrix:
os: ["ubuntu-24.04"]
python-version:
- - "3.8"
- "3.9"
- "3.10"
- "3.11"
diff --git a/README.md b/README.md
index 4ee5a245f..e72f0658e 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
For a quick installation:
-1. Install dependencies: python 3 (tested on Python `3.8`-`3.13`), `pip`, `curl`, [`virtualenv`](https://virtualenv.pypa.io/en/latest/installation/), git, [git-lfs](https://git-lfs.github.com/).
+1. Install dependencies: python 3 (tested on Python `3.9`-`3.13`), `pip`, `curl`, [`virtualenv`](https://virtualenv.pypa.io/en/latest/installation/), git, [git-lfs](https://git-lfs.github.com/).
2. Clone this repository:
diff --git a/requirements.txt b/requirements.txt
index 14aa8c728..7c62cff13 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -55,7 +55,7 @@ rsa==4.9
singledispatch==3.4.0.4
six==1.16.0
smmap==5.0.1
-termcolor==2.4.0
+termcolor==2.5.0
tornado==6.4.2
uritemplate==4.1.1
urllib3==2.2.3
From 9002628e205967b7138993749295ef08109cd397 Mon Sep 17 00:00:00 2001
From: Pranab Das <31024886+pranabdas@users.noreply.github.com>
Date: Sat, 28 Dec 2024 11:07:16 +0800
Subject: [PATCH 09/12] SOF-7534: complete the voiceover texts and add video
---
lang/en/docs/tutorials/jobs-cli/qe-gpu.json | 140 +++++++++++++++++++-
lang/en/docs/tutorials/jobs-cli/qe-gpu.md | 6 +
2 files changed, 141 insertions(+), 5 deletions(-)
diff --git a/lang/en/docs/tutorials/jobs-cli/qe-gpu.json b/lang/en/docs/tutorials/jobs-cli/qe-gpu.json
index bbb3ed85b..3b621cf20 100644
--- a/lang/en/docs/tutorials/jobs-cli/qe-gpu.json
+++ b/lang/en/docs/tutorials/jobs-cli/qe-gpu.json
@@ -30,15 +30,145 @@
"endTime": "00:00:14.000"
},
{
- "text": "At the moment, GPU build of Quantum ESPRESSO is only available via our command line interface, and soon it will be available in the web interface.",
+ "text": "We will see how we can dramatically improve the performance of our simulation using GPUs.",
"startTime": "00:00:15.000",
- "endTime": "00:00:24.000"
+ "endTime": "00:00:20.000"
+ },
+ {
+ "text": "At the moment, GPU build of Quantum ESPRESSO is only available via our command line interface, and soon it will be made available in the web interface.",
+ "startTime": "00:00:21.000",
+ "endTime": "00:00:30.000"
},
{
"text": "Let's connect to the login node using SSH.",
- "startTime": "00:00:25.000",
- "endTime": "00:00:14.000"
+ "startTime": "00:00:31.000",
+ "endTime": "00:00:34.000"
+ },
+ {
+ "text": "You can use your terminal application and type S S H, your username at login dot matera dot com and press enter.",
+ "startTime": "00:00:35.000",
+ "endTime": "00:00:41.000"
+ },
+ {
+ "text": "If you need help on how to set up S S H, please visit our documentation site at docs dot matera dot com, and search S S H.",
+ "startTime": "00:00:42.000",
+ "endTime": "00:00:51.000"
+ },
+ {
+ "text": "Here you will find step by step guide to setup S S H key for seamless authentication.",
+ "startTime": "00:00:52.000",
+ "endTime": "00:00:57.000"
+ },
+ {
+ "text": "Note that it is also possible to connect to the login node from our web platform using the web terminal.",
+ "startTime": "00:00:58.000",
+ "endTime": "00:01:04.000"
+ },
+ {
+ "text": "Besides,