Ich habe eine Anwendung, die ein System von Gleichungen in CUDA löst, weiß ich sicher, dass jeder Thread bis zu 4 Lösungen finden kann, aber wie kann ich dann zurück zum Host kopieren?Wie effizient Daten von Threads in CUDA sammeln?
Ich übergebe ein riesiges Array mit genug Platz, um alle Threads speichern 4 Lösungen (4 Doppel für jede Lösung), und ein anderes mit der Anzahl der Lösungen pro Thread, aber das ist eine naive Lösung und ist der aktuelle Flaschenhals meines Kernels.
Ich mag es wirklich, dies zu optimieren. Das Hauptproblem besteht darin, eine variable Anzahl von Lösungen pro Thread in einem einzelnen Array zu verketten.
Es wäre viel einfacher zu helfen, wenn ich etwas mehr über Ihr Programm wüsste. meines Wissens (Es ist etwa ein Jahr her, dass ich mich mit Cuda anlege, damit ich mich irre), Memcopies sind die einzige Möglichkeit, Informationen zu erhalten, und sie sind langsam. Und welche Version von Cuda auf welcher Karte? – 8bitwide
Ich habe eine CUDA 4.0 und 4.2. – RSFalcon7
Der Code ist zu groß, um es hier zu setzen. Ich stimme zu, dass cudaMemCpy die einzige Möglichkeit ist, die Ergebnisse zu erhalten, aber ich könnte Müllkopien vermeiden. – RSFalcon7