Mehr VRAM bei NVIDIA-GPUs (Workstation/Server) nutzbar machen

Ich habe nun seit einiger Zeit eine Nvidia Tesla P4. Diese hat 8 GB VRAM.

Mir war schon mehrfach aufgefallen, dass ich nur ca 7,5 GB davon nutzen konnte, habe das ganze aber einfach auf die üblichen Umrechnungsfaktoren geschoben.

Gestern habe ich dann einmal genauer hingesehen.

ECC bei GPUs

Nicht nur für den normalen Systemspeicher, sondern auch bei GPUs gibt es ECC (Fehlererkennung und -korrektur für Speicher). Das ist bei den Teslas standardmäßig aktiv, da diese Karten ja für professionelle Nutzung gedacht sind. Dadurch wird allerdings ein Teil des GPU-Speichers für die dafür notwendigen Informationen reserviert, auch die GPU-Leistung sinkt dadurch minimal (das Internet redet von grob 10 %, getestet habe ich es selbst nicht).

Das ist für maximale Verfügbarkeit und Verhinderung von Fehlern natürlich sinnvoll, für Zuhause und generell unkritische Anwendungen aber nicht notwendig.

ECC deaktivieren

Nach Installation des Treibers steht das Tool nvidia-smi für Monitoring und Konfiguration der GPU zur Verfügung. Darüber lässt sich auch ECC konfigurieren.

Status auslesen:

nvidia-smi -q

1
2
3
4
5
6
7
8
9
Attached GPUs                                          : 1
GPU 00000000:01:00.0
    Product Name                                       : Tesla P4
    Product Brand                                      : Tesla
    Product Architecture                               : Pascal
[...]
    ECC Mode
        Current                                        : Enabled
        Pending                                        : Enabled

Der ECC-Modus lässt sich nun einfach mittels nvidia-smi --ecc-config=0 deaktivieren.

Nach einem Reboot waren bei mir damit statt vorher 7680 MiB die vollen 8192 MiB verfügbar. Das ist kein riesiger Unterschied, aber reduziert bei größeren Modellen den Anteil, der auf der CPU laufen muss.