cudaMemset () - setzt es Bytes oder ganze Zahlen?

8

Aus online Dokumentation:

%Vor%

Füllt die ersten Zählbytes des Speicherbereichs, auf den devPtr zeigt, mit dem konstanten Wert byte .

Parameter:         devPtr - Zeiger auf Gerätespeicher         Wert - Wert, der für jedes Byte des angegebenen Speichers festgelegt werden soll         Anzahl - Größe in Bytes , um

festzulegen

Diese Beschreibung scheint nicht korrekt zu sein:

%Vor%

setzt alle 32 ganzen Zahlen auf 0x12, nicht auf 0x12121212. (Int vs Byte)

Die Beschreibung bezieht sich auf das Setzen von Bytes. Count und Value werden in Bytes beschrieben. Die Anzahl der Benachrichtigungen ist vom Typ size_t und der Wert ist vom Typ int. d. Setzen Sie eine Byte-Größe auf einen int-Wert.

cudaMemset () wird in der Prog-Anleitung nicht erwähnt. Ich muss annehmen, dass das Verhalten, das ich sehe, korrekt ist, und die Dokumentation ist schlecht.

Gibt es eine bessere Dokumentationsquelle? (Wo?)
Werden andere Typen unterstützt? Würde float *dJunk; arbeiten? Andere?

    
Doug 14.11.2012, 20:52
quelle

1 Antwort

13

Die Dokumentation ist korrekt und Ihre Interpretation, was cudaMemset macht, ist falsch. Die Funktion setzt wirklich Byte-Werte. In Ihrem Beispiel werden die ersten 32 Bytes auf 0x12 festgelegt, nicht alle 32 ganzen Zahlen auf 0x12 , viz:

%Vor%

erzeugt

%Vor%

ie. alle 128 Bytes werden auf 0 gesetzt, dann werden die ersten 32 Bytes auf 0x12 gesetzt. Genau wie in der Dokumentation beschrieben.

    
talonmies 14.11.2012, 21:43
quelle

Tags und Links