2013-04-23 159 views
0

我想在CUDA中使用存在函數,但它包含許多類和其他函數。 在每個函數變得微不足道之前添加__host__ __device__。那麼,有沒有一種自動方法可以做到這一點?或者如何讓nvcc編譯所有函數爲__device__ __host__將所有CUDA函數更改爲__host__ __device__

+1

總之,沒有沒有一種自動的方式來做到這一點。但正如你自己指出的那樣,用\ _ \ _ device \ _ \ _來裝飾你需要的功能是微不足道的,那麼問題是什麼? – talonmies 2013-04-23 06:07:36

+0

好吧......我想我可能會寫一個這樣做...... – GuoHaotian 2013-04-23 06:10:51

+3

如果有很多現有的類和函數,最好修改它們並創建一個GPU特定的解決方案,而不是將所有內容都設置爲__device__。 – hthms 2013-04-23 07:49:24

回答

1

基本上,GPU編程都是關於大規模並行性。這是一個完全不同於普通單線程編程的範例。 除非您只是想將這些函數同時應用於大型數組的各個元素,否則將其編碼到GPU中沒有任何好處。實際上,GPU核心時鐘比你的處理器慢得多。 如果您將編譯的功能主要針對單線程風格的CPU寫入GPU,您將獲得潛在的性能損失。 您需要將您的問題重新考慮到GPU範例中。

+0

你可能會正確的。但實際上它關於機器學習,我使用min-max-modular來並行化數據,所以它可以在不改變algorthim的情況下並行訓練,並且我有一種方法來整合結果。它應該在multiCPU而不是GPU中運行。但由於某種原因,我別無選擇。 – GuoHaotian 2013-04-24 05:27:32

相關問題