diff --git a/.vscode/markdown.code-snippets b/.vscode/markdown.code-snippets
index 14b553288..80819f683 100644
--- a/.vscode/markdown.code-snippets
+++ b/.vscode/markdown.code-snippets
@@ -21,6 +21,15 @@
],
"description": "Disables warning Markdown Lint MD046 for the selected block."
},
+ "Disable Markdown Lint MD045 for a DrawIO Diagram": {
+ "prefix": "md045 disable",
+ "body": [
+ "",
+ "$TM_SELECTED_TEXT",
+ ""
+ ],
+ "description": "Disables warning Markdown Lint MD045 for the selected DrawIO Diagram."
+ },
"Stub Page": {
"prefix": "stub",
"body": [
diff --git a/build_env.yml b/build_env.yml
index 94eaac5de..e34177d1d 100644
--- a/build_env.yml
+++ b/build_env.yml
@@ -31,6 +31,7 @@ dependencies:
- conda-forge::yaml=0.2.5
- conda-forge::yamllint=1.37.1
- pip:
+ - mkdocs-drawio==1.11.2
- mkdocs-gen-files==0.5.0
- mkdocs-glightbox==0.3.7
- mkdocs-git-revision-date-localized-plugin==1.2.6
diff --git a/docs/cheaha/software/res/parallelism_gromacs_cpu.csv b/docs/cheaha/software/res/parallelism_gromacs_cpu.csv
new file mode 100644
index 000000000..22ebe9f62
--- /dev/null
+++ b/docs/cheaha/software/res/parallelism_gromacs_cpu.csv
@@ -0,0 +1,8 @@
+"tmpi","omp","Execution Time","Speedup"
+"1","1","5372.63","1"
+"1","24","349.95","15.35"
+"2","12","401.09","13.39"
+"4","6","370.49","14.50"
+"6","4","354.50","15.16"
+"12","2","346.44","15.51"
+"24","1","323.80","16.59"
diff --git a/docs/cheaha/software/res/parallelism_gromacs_gpu.csv b/docs/cheaha/software/res/parallelism_gromacs_gpu.csv
new file mode 100644
index 000000000..5b0b7c8a2
--- /dev/null
+++ b/docs/cheaha/software/res/parallelism_gromacs_gpu.csv
@@ -0,0 +1,5 @@
+"GPU","tmpi","omp","Execution Time","Speedup","Partition"
+"1","1","1","230.62","23.30","amperenodes"
+"2","1","1","230.30","23.33","amperenodes"
+"1","1","1","337.53","15.92","pascalnodes"
+"2","1","1","346.84","15.49","pascalnodes"
diff --git a/docs/cheaha/software/res/parallelism_gromacs_gpu_hybrid.csv b/docs/cheaha/software/res/parallelism_gromacs_gpu_hybrid.csv
new file mode 100644
index 000000000..e95ea1667
--- /dev/null
+++ b/docs/cheaha/software/res/parallelism_gromacs_gpu_hybrid.csv
@@ -0,0 +1,9 @@
+"GPU","tmpi","omp","Execution Time","Speedup","Partition"
+"1","1","2","144.95","37.07","amperenodes"
+"1","1","4","92.87","57.85","amperenodes"
+"2","2","2","270.63","19.85","amperenodes"
+"2","2","4","167.00","32.17","amperenodes"
+"1","1","2","222.63","24.13","pascalnodes"
+"1","1","4","176.62","30.42","pascalnodes"
+"2","2","2","416.54","12.90","pascalnodes"
+"2","2","4","261.52","20.54","pascalnodes"
diff --git a/docs/cheaha/tutorial/images/parallelism_parallel_execution.drawio b/docs/cheaha/tutorial/images/parallelism_parallel_execution.drawio
new file mode 100644
index 000000000..33c80e848
--- /dev/null
+++ b/docs/cheaha/tutorial/images/parallelism_parallel_execution.drawio
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/cheaha/tutorial/images/parallelism_serial_execution.drawio b/docs/cheaha/tutorial/images/parallelism_serial_execution.drawio
new file mode 100644
index 000000000..54f8127a5
--- /dev/null
+++ b/docs/cheaha/tutorial/images/parallelism_serial_execution.drawio
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/cheaha/tutorial/index.md b/docs/cheaha/tutorial/index.md
index 131d63aab..15da47045 100644
--- a/docs/cheaha/tutorial/index.md
+++ b/docs/cheaha/tutorial/index.md
@@ -7,3 +7,10 @@ Have you encountered problems while using Anaconda on Cheaha? We have provided t
Below is a list of Tutorials we currently have Using Anaconda on Cheaha;
1. Using PyTorch and TensorFlow with Anaconda on Cheaha, click [here.](../tutorial/pytorch_tensorflow.md)
+
+## Getting Started With Parallelism on Cheaha
+
+The tutorial covers usage of the following parallelization-based software installed in Cheaha. To use parllelization based software on Cheaha, [click here](./parallelism.md).
+
+1. [Gromacs](https://www.gromacs.org/): Used for High-performance molecular dynamics and analysis.
+1. [Quantum Expresso](https://www.quantum-espresso.org/): Used for electronic-structure calculations and materials modeling.
diff --git a/docs/cheaha/tutorial/parallelism.md b/docs/cheaha/tutorial/parallelism.md
new file mode 100644
index 000000000..4e7ef153e
--- /dev/null
+++ b/docs/cheaha/tutorial/parallelism.md
@@ -0,0 +1,197 @@
+# Tutorial on Usage of Parallelization-Based Software in Cheaha
+
+## Sequential Execution
+
+Breaking a bigger problem into set of tasks, and executing these tasks one by one on a single CPU.
+
+
+
+
+
+## Parallel Execution
+
+Divide a larger problem into a series of smaller tasks and execute these tasks using multiple CPUs. The application should leverage parallelization technology to utilize multicore processors, multiple nodes, multiple GPUs, or a hybrid approach (such as combining CPUs and GPUs).
+
+
+
+
+
+## Types of Parallelization
+
+### Shared Memory Parallelization
+
+In this method, your job executes independent tasks on separate cores within the same compute node. These tasks share the node's resources and communicate by reading from and writing to shared memory.
+
+For instance, OpenMP is a parallel directive that supports shared memory parallelization.
+
+### Distributed Memory Parallelization
+
+Tasks can be distributed on different compute nodes and executed. The tasks communicate each other using message passing. A widely used standard to achieve this kind of parallelism is Message Passing Interface (MPI).
+
+### GPU Parallelization
+
+It divides large computational tasks into smaller subtasks that can be executed concurrently on different GPU cores. This results in significant acceleration compared to traditional CPU-based computations. CUDA (Compute Unified Device Architecture) is a widely used parallel computing platform and programming model developed by NVIDIA, enabling users to utlize the power of GPUs effectively.
+
+### Hybrid Parallelization
+
+It is a computing approach that integrates various parallelization techniques or models to effectively utilize a heterogeneous environment, such as diverse components like CPUs and GPUs. For instance, it combines shared-memory (openMP) and distributed-memory parallelization (MPI) to optimize application execution.
+
+## A Sampling of Parallel Software
+
+### Gromacs
+
+Gromacs is specifically meant for high-performance molecular dynamics and analysis.
+
+```bash
+srun --nodes=1 --ntasks-per-node=24 --mem=120GB --time=10:00:00 --partition=intel-dcb --pty /bin/bash
+```
+
+Recent Gromacs version available in Cheaha can be loaded as,
+
+```bash
+$module load GROMACS/2019-fosscuda-2018b
+```
+
+#### Study of Water System - An Example
+
+Some of the simulation examples are covered in the [Gromacs Tutorial Page](http://www.mdtutorials.com/gmx/).We will take the example of water system as a case study. Let us consider the [Gromacs Molecular Example](http://ftp.gromacs.org/pub/benchmarks/water_GMX50_bare.tar.gz). The simulation is meant for study of water system, for instance understanding water properties, molecular dynamics, etc.
+
+Download and extract the example `pdb` dataset using the following commands,
+
+```bash
+$DATA_SET=water_GMX50_bare
+$wget -c https://ftp.gromacs.org/pub/benchmarks/${DATA_SET}.tar.gz
+$tar xf ${DATA_SET}.tar.gz
+```
+
+##### Input Parameters
+
+Let us consider the subset of data `1536` from the repo, `water-cut1.0_GMX50_bare`.
+
+```bash
+$cd water-cut1.0_GMX50_bare/1536
+$ls
+conf.gro pme.mdp rf.mdp topol.top
+```
+
+- The `.mdp` file is a molecular dynamics parameter (MDP) input file.
+- The `.gro` is a coordinate file that contains spatial coordinates of atoms in a system for visualization and structure analysis. It includes box dimensions and number of atoms.
+- The `.top` is a topology file that contains the molecular system's structure, including the types of atoms, bonds, angles, force field parameters, etc.
+
+
+!!! note
+ The `rf.mdp` input file is excluded, as only the PME method is focused for this case study.
+
+
+##### Preprocessing
+
+The initial step is to preprocess the input file, `pme.mdp` using the below command,
+
+```bash
+gmx grompp -f pme.mdp
+```
+
+The above command prepare the input file for the simulation, it reads parameters and combines them into a single output file named `topol.tpr`.
+
+- gmx: gromacs execuable
+- grompp: This stands for "GROMACS PreProcessor." It combines the simulation parameters specified in the .mdp file with other input files (like the topology file and the coordinate file) to generate a binary input file (.tpr) that will be used for the actual simulation.
+- .tpr - Portable binary run input file.
+
+The ouptut file `topol.tpr` rcontains the settings and parameters for the simulation, such as time step (nsteps), number of atoms (natoms), temperature (ref), and coulombtype, and this example adopts Particle-Mesh Ewald (PME) coulombtype. As this file is in binary format it cannot be read with a normal editor. You can read a portable binary run input file using the below command.
+
+```bash
+gmx dump -s topol.tpr > topol.out
+```
+
+##### Execution and Scalability
+
+This simulation execution gives detailed information about the settings of the molecular dynamics simulation for a water model,
+
+##### Water System Inputs
+
+- Total Atoms (natoms): 1,536,000
+- Number of Steps: 5,000
+- Distribution: Domain Decomposition
+- MPI Ranks: 6
+- Average Atoms per Domain: 256,000
+- Domain Decomposition Grid: 6 x 1 x 1
+
+```bash
+$export OMP_NUM_THREADS=6
+$gmx mdrun -ntmpi 6 -nsteps 5000 -ntomp 4 -s topol.tpr -deffnm md_output.log
+```
+
+In the above run command,
+
+- `gmx` is the executable to run the pipeline.
+- `-ntmpi 4` Number of MPI processes.
+- `-nsteps 5000` Number of steps to run the simulation.
+- `-ntomp 6` Number of cores, which will be 10*4 MPI processes i.e, 40 cores
+- `-s topol.tpr` is the input parameter.
+
+##### Performance Analysis
+
+{{ read_csv('../software/res/parallelism_gromacs_cpu.csv', keep_default_na=False) }}
+
+The majority of the computational time and resources were spent on force calculations and PME mesh operations, indicating these are the most computationally intensive tasks in this simulation. The system achieved good load balancing, reflected in the distribution of tasks across the available ranks and threads.
+
+{{ read_csv('../software/res/parallelism_gromacs_gpu.csv', keep_default_na=False) }}
+
+{{ read_csv('../software/res/parallelism_gromacs_gpu_hybrid.csv', keep_default_na=False) }}
+
+### Quantum Espresso
+
+Quantum Espresso (QE) is an open-source suite of codes for electronic-structure calculations and materials modeling based on density functional theory (DFT), plane waves, and pseudopotentials. It is used to study the properties of materials at the atomic scale.
+
+Quantum Expresso is available as a module in Cheaha and can be loaded as,
+
+```bash
+$module load QuantumESPRESSO/6.3-foss-2018b
+```
+
diff --git a/docs/javascripts/drawio-reload.js b/docs/javascripts/drawio-reload.js
new file mode 100644
index 000000000..7b2e7314b
--- /dev/null
+++ b/docs/javascripts/drawio-reload.js
@@ -0,0 +1,3 @@
+document$.subscribe(({ body }) => {
+ GraphViewer.processElements()
+})
diff --git a/mkdocs.yml b/mkdocs.yml
index 45bf54a54..4a018f53d 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -22,6 +22,8 @@ extra_javascript:
- javascripts/mathjax.js
- https://polyfill.io/v3/polyfill.min.js?features=es6
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
+ - https://viewer.diagrams.net/js/viewer-static.min.js
+ - javascripts/drawio-reload.js
copyright: Copyright © 2021-2024 The University of Alabama at Birmingham.
Still stuck after reading? Email us at support@listserv.uab.edu
@@ -41,6 +43,7 @@ markdown_extensions:
permalink: true
plugins:
+ - drawio
- search
- title-casing
- table-reader:
@@ -148,6 +151,7 @@ nav:
- Tutorials:
- cheaha/tutorial/index.md
- Anaconda Environment Tutorial: cheaha/tutorial/pytorch_tensorflow.md
+ - Parallelism Tutorial: cheaha/tutorial/parallelism.md
- Cheaha Web Portal:
- cheaha/open_ondemand/index.md
- Using the Web Portal: cheaha/open_ondemand/ood_layout.md