GPU-Computeserver rosenblatt
Der GPU Computeserver rosenblatt steht seit Februar 2022 für Berechnungen, die von Grafikkarten profitieren, zur Verfügung.Er wurde gemeinsam von den Professuren Stochastik, Harmonische Analysis, Numerische Mathematik und Wissenschaftliches Rechnen (je eine GPU) sowie aus Fakultätsmitteln (Basismaschine) finanziert.
Zum Namen rosenblatt
Frank Rosenblatt war ein Pionier der neuronalen Netze:- https://news.cornell.edu/stories/2019/09/professors-perceptron-paved-way-ai-60-years-too-soon
- https://de.wikipedia.org/wiki/Frank_Rosenblatt
Hardware
- CPU: 2 Stück AMD EPYC 7313 16-Core Processor
- 256 GB RAM
- 250 GB SSD System- und Swap-Partition
- 3,5 TB SSD Datenpartition
- 4 Stück GPU NVIDIA A40 Ampere-Architektur CUDA® Recheneinheiten
- Ubuntu 22.04
CUDA-Installation und Verwendung
Unter/usr/local/cuda-12.2
befindet sich eine Installation der CUDA-Umgebung. Um diese zu nutzen, müssen
ein paar Umgebungsvariablen gesetzt werden. Dies geht am einfachsten mit dem vorbereiteten Script durch Aufruf von:
source /usr/local/cuda-12.2/cudaenv.sh
Anschließend erhält man bei der Abfrage der Version des nvcc-Compilers die korrekte Ausgabe als 12.2:
rosenblatt:~$ source /usr/local/cuda-12.2/cudaenv.sh
rosenblatt:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:16:58_PDT_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0
und kann mit dem Compilieren der eigenen Programme beginnen.
Zum Monitoring der Auslastung der GPUs gibt es das Tool nvidia-smi
. Ein simpler Aufruf liefert zum Beispiel:
rosenblatt:~$ nvidia-smi
Fri Jul 7 10:12:51 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA A40 On | 00000000:01:00.0 Off | 0 |
| 0% 34C P0 80W / 300W | 274MiB / 46068MiB | 100% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 1 NVIDIA A40 On | 00000000:61:00.0 Off | 0 |
| 0% 23C P8 12W / 300W | 7MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 2 NVIDIA A40 On | 00000000:A1:00.0 Off | 0 |
| 0% 23C P8 12W / 300W | 7MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 3 NVIDIA A40 On | 00000000:C1:00.0 Off | 0 |
| 0% 23C P8 12W / 300W | 7MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 146064 C ./a.out 262MiB |
+---------------------------------------------------------------------------------------+
Zum dauernden Überwachen besser geeignet ist eine sich wiederholende Ausgabe. Dies kann mittels
nvidia-smi -i 0 -lms 300 --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu,memory.used
erreicht werden. Dabei bedeuten die Parameter
- -i 0 ... zeige mir GPU0 an, die anderen 3 GPUs analog mit -i 1, -i 2, -i 3
- -lms 300 ... Ausgabe aller 300 Millisekunden
rosenblatt:~$ nvidia-smi -i 0 -lms 300 --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu,memory.used
power.draw [W], utilization.gpu [%], fan.speed [%], temperature.gpu, memory.used [MiB]
74.75 W, 0 %, 0 %, 36, 0 MiB
74.69 W, 0 %, 0 %, 36, 0 MiB
74.72 W, 0 %, 0 %, 36, 0 MiB
74.78 W, 0 %, 0 %, 36, 0 MiB
74.71 W, 0 %, 0 %, 36, 0 MiB
74.71 W, 0 %, 0 %, 36, 0 MiB
74.76 W, 0 %, 0 %, 36, 0 MiB
74.73 W, 0 %, 0 %, 36, 0 MiB
74.73 W, 0 %, 0 %, 36, 0 MiB
74.78 W, 0 %, 0 %, 36, 0 MiB
74.78 W, 0 %, 0 %, 36, 0 MiB
74.77 W, 0 %, 0 %, 36, 2 MiB
90.46 W, 5 %, 0 %, 40, 455 MiB
137.43 W, 100 %, 0 %, 43, 455 MiB
184.72 W, 100 %, 0 %, 44, 455 MiB
232.18 W, 100 %, 0 %, 45, 455 MiB
249.01 W, 100 %, 0 %, 46, 455 MiB
250.37 W, 100 %, 0 %, 46, 455 MiB
251.33 W, 100 %, 0 %, 47, 455 MiB
252.26 W, 100 %, 0 %, 47, 455 MiB
252.45 W, 100 %, 0 %, 47, 455 MiB
...
und sieht sehr schön, wie beim Programmstart Leistungsaufnahme, GPU, Temperatur und RAM nach oben gehen.