Verfolgung des Speicherverbrauchs#
Bei der Einrichtung komplexer Workflows kann es sinnvoll sein, einen Blick auf den Speicherverbrauch zu werfen. In interaktiven Umgebungen kann der Benutzer den Windows Task-Manager verwenden, um zu sehen, wie stark der GPU-Speicher ausgelastet ist. Das könnte für Skripte umständlich sein. Bei Verwendung einer Nvidia-GPU kann folgendes Verfahren zur Fehlersuche beim Speicherverbrauch des Workflows verwendet werden.
import numpy as np
import pyclesperanto_prototype as cle
cle.select_device("RTX")
<NVIDIA GeForce RTX 3050 Ti Laptop GPU on Platform: NVIDIA CUDA (1 refs)>
Zur Überwachung des Speicherverbrauchs kann man nvidia-smi verwenden, ein Kommandozeilenwerkzeug, das ausgeben kann, wie viel Speicher derzeit in einer bestimmten GPU von einer beliebigen Anwendung blockiert wird:
!nvidia-smi --query-gpu=memory.used --format=csv
memory.used [MiB]
178 MiB
Wenn wir dann eine Operation auf der GPU ausführen und den Speicherverbrauch erneut überprüfen, sollten wir einen Anstieg sehen.
image = np.random.random((1024, 1024, 100))
blurred = cle.gaussian_blur(image)
!nvidia-smi --query-gpu=memory.used --format=csv
memory.used [MiB]
580 MiB
Der Befehl del
ermöglicht es, Speicher freizugeben. Hinweis: Der Speicher hinter der Variable wird möglicherweise nicht sofort freigegeben, abhängig davon, wie beschäftigt das System im Moment ist.
del blurred
!nvidia-smi --query-gpu=memory.used --format=csv
memory.used [MiB]
180 MiB