|
| 1 | +{ |
| 2 | + "descriptionLinks": [ |
| 3 | + "Accelerate Quantum ESPRESSO simulation with GPUs: https://docs.mat3ra.com/tutorials/jobs-cli/qe-gpu/" |
| 4 | + ], |
| 5 | + "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.", |
| 6 | + "tags": [ |
| 7 | + { |
| 8 | + "...": "../../metadata/general.json#/tags" |
| 9 | + }, |
| 10 | + { |
| 11 | + "...": "../../models-directory/dft.json#/tags" |
| 12 | + }, |
| 13 | + { |
| 14 | + "...": "../../software-directory/modeling/quantum-espresso.json#/tags" |
| 15 | + }, |
| 16 | + "CUDA", |
| 17 | + "GPU", |
| 18 | + "NVIDIA" |
| 19 | + ], |
| 20 | + "title": "Mat3ra Tutorial: Accelerate Quantum ESPRESSO simulation with GPUs", |
| 21 | + "youTubeCaptions": [ |
| 22 | + { |
| 23 | + "text": "Hello, and welcome to the matera tutorial series.", |
| 24 | + "startTime": "00:00:00.000", |
| 25 | + "endTime": "00:00:03.000" |
| 26 | + }, |
| 27 | + { |
| 28 | + "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.", |
| 29 | + "startTime": "00:00:04.000", |
| 30 | + "endTime": "00:00:14.000" |
| 31 | + }, |
| 32 | + { |
| 33 | + "text": "We will see how we can dramatically improve the performance of our simulation using GPUs.", |
| 34 | + "startTime": "00:00:15.000", |
| 35 | + "endTime": "00:00:20.000" |
| 36 | + }, |
| 37 | + { |
| 38 | + "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.", |
| 39 | + "startTime": "00:00:21.000", |
| 40 | + "endTime": "00:00:30.000" |
| 41 | + }, |
| 42 | + { |
| 43 | + "text": "Let's connect to the login node using SSH.", |
| 44 | + "startTime": "00:00:31.000", |
| 45 | + "endTime": "00:00:34.000" |
| 46 | + }, |
| 47 | + { |
| 48 | + "text": "You can use your terminal application and type S S H, your username at login dot matera dot com and press enter.", |
| 49 | + "startTime": "00:00:35.000", |
| 50 | + "endTime": "00:00:41.000" |
| 51 | + }, |
| 52 | + { |
| 53 | + "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.", |
| 54 | + "startTime": "00:00:42.000", |
| 55 | + "endTime": "00:00:51.000" |
| 56 | + }, |
| 57 | + { |
| 58 | + "text": "Here you will find step by step guide to setup S S H key for seamless authentication.", |
| 59 | + "startTime": "00:00:52.000", |
| 60 | + "endTime": "00:00:57.000" |
| 61 | + }, |
| 62 | + { |
| 63 | + "text": "Note that it is also possible to connect to the login node from our web platform using the web terminal.", |
| 64 | + "startTime": "00:00:58.000", |
| 65 | + "endTime": "00:01:04.000" |
| 66 | + }, |
| 67 | + { |
| 68 | + "text": "Besides, <break time='0.5'/> it is also possible to run a command line job via bash workflow in our web platform.", |
| 69 | + "startTime": "00:01:05.000", |
| 70 | + "endTime": "00:01:12.000" |
| 71 | + }, |
| 72 | + { |
| 73 | + "text": "Create a new workflow. Select shell script as application.", |
| 74 | + "startTime": "00:01:13.000", |
| 75 | + "endTime": "00:01:16.000" |
| 76 | + }, |
| 77 | + { |
| 78 | + "text": "Add an execution unit and write your job script.", |
| 79 | + "startTime": "00:01:17.000", |
| 80 | + "endTime": "00:01:20.000" |
| 81 | + }, |
| 82 | + { |
| 83 | + "text": "For now, let's focus on the command line part.", |
| 84 | + "startTime": "00:01:22.000", |
| 85 | + "endTime": "00:01:24.000" |
| 86 | + }, |
| 87 | + { |
| 88 | + "text": "The example calculation we are going to demonstrate is available in our github repository C L I job examples.", |
| 89 | + "startTime": "00:01:25.000", |
| 90 | + "endTime": "00:01:33.000" |
| 91 | + }, |
| 92 | + { |
| 93 | + "text": "Please browse under espresso, then gpu, where you will find required input and reference output files.", |
| 94 | + "startTime": "00:01:34.000", |
| 95 | + "endTime": "00:01:39.000" |
| 96 | + }, |
| 97 | + { |
| 98 | + "text": "Once connected to the login node, let's navigate to your working directory, and clone our example repository.", |
| 99 | + "startTime": "00:01:40.000", |
| 100 | + "endTime": "00:01:47.000" |
| 101 | + }, |
| 102 | + { |
| 103 | + "text": "After cloning the repository, we also need to sync the L F S objects with git L F S pull.", |
| 104 | + "startTime": "00:01:50.000", |
| 105 | + "endTime": "00:01:56.000" |
| 106 | + }, |
| 107 | + { |
| 108 | + "text": "Let's navigate to our GPU example.", |
| 109 | + "startTime": "00:01:57.000", |
| 110 | + "endTime": "00:02:00.000" |
| 111 | + }, |
| 112 | + { |
| 113 | + "text": "Let's examine the P B S job script.", |
| 114 | + "startTime": "00:02:03.000", |
| 115 | + "endTime": "00:02:05.000" |
| 116 | + }, |
| 117 | + { |
| 118 | + "text": "We will run our job in GPU enabled G O F queue, we will request one node which has eight CPUs.", |
| 119 | + "startTime": "00:02:07.000", |
| 120 | + "endTime": "00:02:13.000" |
| 121 | + }, |
| 122 | + { |
| 123 | + "text": "To run quantum espresso jobs in GPUs, we need to load the CUDA build of quantum espresso.", |
| 124 | + "startTime": "00:02:14.000", |
| 125 | + "endTime": "00:02:19.000" |
| 126 | + }, |
| 127 | + { |
| 128 | + "text": "We set eight open M P threads and 1 M P I per GPU.", |
| 129 | + "startTime": "00:02:20.000", |
| 130 | + "endTime": "00:02:24.000" |
| 131 | + }, |
| 132 | + { |
| 133 | + "text": "We can also set parallelization options for k point and matrix diagonalization.", |
| 134 | + "startTime": "00:02:25.000", |
| 135 | + "endTime": "00:02:30.000" |
| 136 | + }, |
| 137 | + { |
| 138 | + "text": "Finally, we can submit our job with Q sub command. We can find the status of job with Q stat.", |
| 139 | + "startTime": "00:02:31.000", |
| 140 | + "endTime": "00:02:37.000" |
| 141 | + }, |
| 142 | + { |
| 143 | + "text": "Once the job is completed, we can examine the output file.", |
| 144 | + "startTime": "00:02:38.000", |
| 145 | + "endTime": "00:02:41.000" |
| 146 | + }, |
| 147 | + { |
| 148 | + "text": "We will see that the GPU acceleration was enabled for the calculation.", |
| 149 | + "startTime": "00:02:44.000", |
| 150 | + "endTime": "00:02:49.000" |
| 151 | + }, |
| 152 | + { |
| 153 | + "text": "If we scroll to the bottom of the file, we will see the total time taken by the program. The wall time for this job was slightly less than a minute.", |
| 154 | + "startTime": "00:02:50.000", |
| 155 | + "endTime": "00:02:58.000" |
| 156 | + }, |
| 157 | + { |
| 158 | + "text": "For comparison, we ran the same job using eight CPUs but without GPU acceleration, <break time='0.5'/> it took about 20 times longer.", |
| 159 | + "startTime": "00:03:02.000", |
| 160 | + "endTime": "00:03:10.000" |
| 161 | + }, |
| 162 | + { |
| 163 | + "text": "Now you may test different combination of M P I and open M P threads, different parallelization option, and see what gives you the best performance.", |
| 164 | + "startTime": "00:03:11.000", |
| 165 | + "endTime": "00:03:20.000" |
| 166 | + }, |
| 167 | + { |
| 168 | + "text": "Thank you for watching this tutorial and using our platform.", |
| 169 | + "startTime": "00:03:21.000", |
| 170 | + "endTime": "00:03:24.000" |
| 171 | + } |
| 172 | + ], |
| 173 | + "youTubeId": "trLDEwWc3ho" |
| 174 | +} |
0 commit comments