Kann die GPU den Hauptcomputer-RAM (als Erweiterung) verwenden?

Ich habe einen laptop mit einer dedizierten GPU Nvidia Quadro P3200. Es hat 6 GB RAM.

Der laptop hat auch 32 GB "normal" (CPU?) ARBEITSSPEICHER.

Ich plane, die GPU für paralleles Rechnen zu verwenden und Physiksimulationen auszuführen. Einige davon beinhalten ziemlich große Arrays.

Ich frage mich nur, ob ich irgendwie den CPU-Speicher verwenden kann, wenn der Gesamtspeicher (alle Variablen und alle Arrays) in meinem Kernel 6 GB GPU-RAM erreicht.

Ich würde nicht die laptop für alles andere während der Berechnung, so dass der Haupt-RAM sollte nicht besetzt sein.

PS Ich verwende einen Dell Precision 7530, Windows 10.

 26
gpu
Author: SuperCiocia, 2020-04-26

5 answers

Kurze Antwort: Nein, das kannst du nicht.

Antwort Mehr: Die Bandbreite und vor allem die Latenz zwischen GPU und RAM über den PCIe-Bus ist um eine Größenordnung schlechter als zwischen GPU und VRAM, also wenn Sie das tun, könnten Sie genauso gut auf der CPU knirschen.

CPU kann einen Teil von VRAM (Teil in die PCI-Karte abgebildet, in der Regel 256 MB) direkt als RAM verwenden, aber es wird langsamer als regulärer RAM sein, weil PCIe ein Engpass ist. Verwenden Sie es für so etwas wie Swap könnte machbar sein.

Früher war es möglich, die Speicherblendengröße durch Ändern der Speicherbits im GPU-BIOS zu erhöhen, aber ich habe dies seit Nvidia Fermi (GeForce 4xx) - GPUs nicht mehr versucht. Wenn es immer noch funktioniert, ist es auch erforderlich, dass Ihr BIOS die Aufgabe hat, Öffnungen größer als Standard zuzuordnen (es ist sehr unwahrscheinlich, dass sie jemals auf einem Laptop getestet wurden).

Zum Beispiel muss eine Xeon Phi Compute Card ihren gesamten Arbeitsspeicher der PCI zuordnen aperture benötigt also ein 64-Bit-fähiges BIOS auf dem Host, das weiß, wie Blenden über der herkömmlichen 4GB-Grenze (32-Bit) abgebildet werden.

 42
Author: Gordan Bobic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-26 23:55:13

{[0],} ja. Dies ist der "gemeinsame" Speicher zwischen der CPU und der GPU, und es wird immer eine kleine Menge als Puffer benötigt, um Daten zu übertragenauf der GPU kann es aber auch als langsameres "Sichern" auf der Grafikkarte verwendet werden, ähnlich wie ein Pagefile ein langsamerer Backing-Speicher für Ihren Hauptspeicher ist.

Sie können den gemeinsam genutzten Speicher im integrierten Windows-Task-Manager finden, indem Sie auf die Registerkarte Leistung gehen und auf Ihre GPU klicken.

geben Sie hier die Bildbeschreibung ein

Shared der Speicher ist zwar langsamer als Ihr GPU-Speicher, aber wahrscheinlich schneller als Ihre Festplatte. Shared Memory wird Ihr CPU-Speicher sein, der auf einem einigermaßen neuen Computer bis zu 30 GB/s arbeiten kann, aber Ihr GPU-Speicher ist wahrscheinlich in der Lage 256 GB/s oder mehr zu tun. Sie werden auch durch die Verbindung zwischen GPU und CPU, der PCIe-Brücke, eingeschränkt. Das kann Ihr limitierender Faktor sein und Sie müssen wissen, ob Sie einen Gen3 - oder Gen4-PCIe haben und wie viele Lanes (normalerweise "x16") er verwendet, um herauszufinden, insgesamt. die Bandbreite zwischen CPU-und GPU-Speicher.

 10
Author: Mokubai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-26 09:04:24

Soweit ich weiß, können Sie den Arbeitsspeicher des Hosts freigeben, solange er page-locked (pinned) memory. In diesem Fall ist die Datenübertragung viel schneller, da Sie keine Daten explizit übertragen müssen, sondern nur sicherstellen müssen, dass Sie Ihre Arbeit synchronisieren (z. B. mit cudaDeviceSynchronize, wenn Sie CUDA verwenden).

Nun, für diese Frage:

Ich frage mich nur, ob der Gesamtspeicher (alle Variablen und alle Arrays) in meinem Kernel 6 GB GPU-RAM erreichen kann verwenden Sie die CPU ein?

Ich weiß nicht, ob es eine Möglichkeit gibt, den GPU-Speicher zu "erweitern". Ich glaube nicht, dass die GPU einen angehefteten Speicher verwenden kann, der größer als der eigene ist, aber ich bin mir nicht sicher. Ich denke, Sie könnten in diesem Fall chargenweise arbeiten. Kann Ihre Arbeit so verteilt werden, dass Sie jeweils nur mit 6 GB arbeiten, das Ergebnis speichern und mit weiteren 6 GB arbeiten? In diesem Fall könnte das Arbeiten in Chargen eine Lösung sein.

Zum Beispiel könnten Sie ein einfaches Stapelschema implementieren wie dieser:

int main() {

    float *hst_ptr = nullptr;
    float *dev_ptr = nullptr;
    size_t ns = 128;  // 128 elements in this example
    size_t data_size = ns * sizeof(*hst_ptr);

    cudaHostAlloc((void**)&hst_ptr, data_size, cudaHostAllocMapped);
    cudaHostGetDevicePointer(&dev_ptr, hst_ptr, 0);

    // say that we want to work on 4 batches of 128 elements
    for (size_t cnt = 0; cnt < 4; ++cnt) {
        populate_data(hst_ptr);  // read from another array in ram
        kernel<<<1, ns>>>(dev_ptr);
        cudaDeviceSynchronize();
        save_data(hst_ptr);  // write to another array in ram
    }

    cudaFreeHost(hst_ptr);

}
 10
Author: Armando Herrera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-26 18:07:34

Jede GPU kann System-RAM verwenden, wenn ihr eigenes VRAM ausgeht.

In ähnlicher Weise wie bei RAM auf einem System und beim Auslagern aller überschüssigen Daten in Speichereinheiten (SSD/HDD) können und werden moderne GPUs Texturen oder andere Daten aus dem System-RAM ziehen. Texturdaten können vom System-RAM über den PCIe-Bus verwendet werden, um das Fehlen des schnelleren VRAM auszugleichen.

Da der System-RAM einige Male langsamer als VRAM ist und eine viel höhere Latenz aufweist, würde das VRAM ausgehen in einen Leistungsverlust und die Leistung wird auch durch die PCIe-Bandbreite begrenzt.

Es ist also keine Frage, ob es möglich ist oder nicht, es ist eine Frage der Leistung, wenn man es tut.

Beachten Sie auch, dass viele integrierte GPUs System-RAM verwenden, nicht einmal ihre eigenen haben.

Bei GPUs ist der Hauptfaktor für deren Leistung die Software. Eine gut gestaltete Software verwendet die GPU in der Nähe ihrer Ausgabegrenzwerte, während eine schlecht gestaltete nicht. In der Regel werden die computing und hashing-software kommt in der 1. Kategorie. Gleiches gilt für die Zuweisung von VRAM.

 3
Author: Overmind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-28 12:02:56

Diese Frage ist derzeit ein Top - Suchergebnis bei der Verwendung von Schlüsselwörtern wie: Können Spiele RAM anstelle von VRAM verwenden?

Ich dachte, es lohnt sich hinzuzufügen, dass sich viele Probleme im Zusammenhang mit der Verwendung von Game RAM vs. VRAM mit der Smart Access Memory-Technologie geändert haben, die derzeit von AMD Zen 3-CPUs (wie Ryzen 5 5600X und Ryzen 7 5800X) und AMD 6000-GPUs (wie der AMD Radeon RX 6800) unterstützt wird und in den nächsten Wochen von den GPUs der Nvidia RTX 3000-Serie unterstützt wird, gen Intel-CPUs, aber Intels Version der Technologie, und der Name, der sogar auf einigen AMD-Motherboards verwendet wird, ist skalierbare LEISTE.

Die Technologie bietet im Wesentlichen mehr VRAM-Zugriff auf die CPU, aber es bleibt abzuwarten, ob die Dinge schließlich auch umgekehrt funktionieren, wo die GPU auf mehr RAM zugreifen kann.

 0
Author: Rok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-18 14:08:32