/ / Kann ich von einem Host aus auf den globalen Speicher des Geräts zugreifen? - cuda

Kann ich über einen Host auf den globalen Speicher des Geräts zugreifen? - Cuda

Das CUDA C-Programmierhandbuch gibt dies beim Berechnen anBei einer Kapazität von mehr als 2,0 teilen sich Host und Gerät den Speicherplatz auf einem 64-Bit-Linux. Ich habe ein Stück globalen Speicher über die Standardlaufzeit-API "cudaMalloc" zugewiesen, aber der Host scheint nicht direkt darauf zuzugreifen. Sollte ich etwas Besonderes tun, um es für den Gastgeber zugänglich zu machen?

Antworten:

2 für die Antwort № 1

Gerätespeicher statisch oder dynamisch belegtist vom Host aus nicht direkt zugänglich (z. B. durch Dereferenzieren eines Zeigers). Es ist notwendig, über einen Aufruf der cuda-Laufzeit-API wie cudaMemset oder cudaMemcpy darauf zuzugreifen. Die Tatsache, dass sie denselben Adressraum (UVA) verwenden, bedeutet nicht, dass sie auf dieselbe Weise aufgerufen werden können. Es bedeutet einfach, dass ich, wenn ich einen Gerätezeiger habe, der an einem bestimmten Ort wie 0x00F0000 im logischen Adressraum zugewiesen wurde, keinen Hostzeiger am selben Ort finden würde. Daher wird bei geeigneter Aufbewahrung Ich kann den numerischen Wert des Zeigers überprüfen und sofort feststellen, ob es sich um einen Host- oder Gerätezeiger handelt.

In dem Programmieranleitung, Es sagt aus:

Daher verwaltet ein Programm die globalen,Konstante und Texturspeicherbereiche, die für Kernel durch Aufrufe der CUDA-Laufzeit sichtbar sind (beschrieben in Programmierschnittstelle). Dies umfasst die Zuweisung und Freigabe von Gerätespeichern sowie die Datenübertragung zwischen Host- und Gerätespeicher.