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