2012-11-10 95 views
0

我的CUDA內核看起來像這樣。我們應該將宏放在CUDA外部還是放在__global__函數內部?

#define MY_AWESOME_MACRO(foo, bar) (foo * bar * 123 + 456) 
__global__ void my_CUDA_kernel(int* cool, float* beans) { 
    // Some computation. 
} 

我應該把我的宏放在函數內部還是外部?我搜索了一下,有一些做了。這樣或那樣做有害嗎?

+0

無論哪種方式都可以工作,只要宏在被代碼引用或擴展之前被定義。預處理器處理宏,因此當宏被定義和擴展時,還沒有完成任何代碼處理(無論是通過nvcc還是通過使用任何c編譯器)。 –

+0

在源文件頂部或頭文件中定義宏更方便。使代碼更具可讀性。 – sgarizvi

回答

2

概念上,沒有區別。您可以在文件的任何位置定義宏。

當我使用Compute Visual Profiler時,外部定義的宏代碼運行速度比其他代碼快。我建議你爲他們兩個使用分析器,並檢查哪些符合你的要求。

相關問題