我想在CUDA中使用存在函數,但它包含許多類和其他函數。 在每個函數變得微不足道之前添加__host__ __device__
。那麼,有沒有一種自動方法可以做到這一點?或者如何讓nvcc編譯所有函數爲__device__ __host__
?將所有CUDA函數更改爲__host__ __device__
0
A
回答
1
基本上,GPU編程都是關於大規模並行性。這是一個完全不同於普通單線程編程的範例。 除非您只是想將這些函數同時應用於大型數組的各個元素,否則將其編碼到GPU中沒有任何好處。實際上,GPU核心時鐘比你的處理器慢得多。 如果您將編譯的功能主要針對單線程風格的CPU寫入GPU,您將獲得潛在的性能損失。 您需要將您的問題重新考慮到GPU範例中。
+0
你可能會正確的。但實際上它關於機器學習,我使用min-max-modular來並行化數據,所以它可以在不改變algorthim的情況下並行訓練,並且我有一種方法來整合結果。它應該在multiCPU而不是GPU中運行。但由於某種原因,我別無選擇。 – GuoHaotian 2013-04-24 05:27:32
相關問題
- 1. CUDA __host__ __device__變量
- 2. CUDA中有__host__和__device__的縮寫嗎?
- 3. 模板__host__ __device__調用主機定義的函數
- 4. CUDA:從內核調用__device__函數
- 5. 我可以從CUDA內核函數調用__device__函數嗎?
- 6. cuda - nvcc如何編譯__host__代碼?
- 7. 如何在線程數較少的CUDA中調用__device__函數
- 8. 在PyCUDA中調用__host__函數
- 9. __CUDA_ARCH__和內核調用在__host__ __device__功能
- 10. 訪問CUDA庫函數內的__device__函數模板專門實例
- 11. 將函數更改爲dependencyproperty
- 12. CUDA:Nsight VS2010 profile __device__函數
- 13. 源文件上的CUDA - __device__方法
- 14. 如何釋放__device__內存在CUDA
- 15. 調用__device__函數是否會影響CUDA中使用的寄存器數量?
- 16. 將所有xml實體更改爲html
- 17. 將主機內存複製到cuda __device__變量
- 18. 將迭代函數更改爲迭代
- 19. 將javascript函數更改爲jquery
- 20. 如何將其更改爲函數?
- 21. 將JS函數更改爲jQuery
- 22. MySQL PHP更改表,將所有MEDIUMINT更改爲INT
- 23. cudaMemcpyFromSymbol在__device__變量
- 24. Cuda/Thrust:remove_if不會更改device_vector.size()?
- 25. 更改所有者爲ReentrantLock
- 26. 函數成員作爲CUDA內核的參數
- 27. 將所有函數轉換爲類
- 28. 錯誤:不允許從__global__函數調用__host__函數
- 29. CUDA:__device__和__global__錯誤:預期的構造函數,析構函數或在「unsigned」/「void」之前的類型轉換「
- 30. 將陣列中的所有正數值更改爲1(Python)
總之,沒有沒有一種自動的方式來做到這一點。但正如你自己指出的那樣,用\ _ \ _ device \ _ \ _來裝飾你需要的功能是微不足道的,那麼問題是什麼? – talonmies 2013-04-23 06:07:36
好吧......我想我可能會寫一個這樣做...... – GuoHaotian 2013-04-23 06:10:51
如果有很多現有的類和函數,最好修改它們並創建一個GPU特定的解決方案,而不是將所有內容都設置爲__device__。 – hthms 2013-04-23 07:49:24