我有一個從單個CPU線程調用時可以正常工作的cuda內核。但是,當從多個CPU線程(〜100)調用相同的內核時,大多數內核似乎根本不會被執行,因爲結果全部爲零。請某人請指導我如何解決此問題?如何從多個CPU線程管理相同的CUDA內核調用?
在當前版本的內核中,我在內核調用結束時使用了cudadevicesynchronize()。在這種情況下,在cudaMalloc()和內核調用之前是否會添加一個同步命令?
還有一件事需要澄清。即,如果兩個CPU線程執行相同的cudaMalloc()命令,後者是否會在GPU內存中覆蓋前者或者是否會創建自己的內存?
在此先感謝您的幫助
相同的內核 - >相同的數組--->可能相同的元素--->未定義的行爲。嘗試使用不同名稱和不同緩衝區的相同內核。 –
你是否建議爲每個線程創建不同名稱的內核拷貝? – Genutek
如果您可以從最初的.cu文件編程創建一個新的.cu文件,那麼您應該嘗試。編譯時間可以增加。我曾經爲我的raytracer遞歸函數(假遞歸) –