Ich schreibe eine MEX-Funktion mit CUDA-Code und in der Host-Funktion muss ich alle Array A
Werte auf float 0.0
setzen. Dies scheint durch die Zerstörung und neu zu erstellen, um das Array zu arbeiten:Array-Werte in einer mex cuda-Funktion auf Null setzen
mxGPUDestroyGPUArray(A);
A = mxGPUCreateGPUArray(1, &dims, mxSINGLE_CLASS, mxREAL, MX_GPU_INITIALIZE_VALUES);
Gibt es eine natürliche/elegante Art und Weise das gleiche Ergebnis zu erzielen?
Wenn Sie es ** in einer mex CUDA-Funktion tun wollen ** sollten Sie in der Lage sein zu verwenden [ 'cudaMemset'] (http: //docs.nvidia. com/cuda/cuda-Laufzeit-api/Gruppe__CUDART__MEMORY.html # group__CUDART__MEMORY_1gf7338650f7683c51ee26aadc6973c63a). –
Ich habe vergessen zu erwähnen, dass mein Array A ein 3D-Array der Größe [K, K, K] ist. Ich habe versucht, cudaMemset (A, 0.0, (K * K * K) * sizeof (float)); aber das bringt eine Reihe von Fehlern bei der Ausführung zurück –
Ich bin ziemlich überzeugt, dass 'cudaMemset' verwendet werden könnte. Eine ausführlichere Beschreibung würde wahrscheinlich benötigt, um zu erklären, warum es in Ihrem Fall nicht funktioniert. –