2012-11-10 40 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时,外部定义的宏代码运行速度比其他代码快。我建议你为他们两个使用分析器,并检查哪些符合你的要求。

相关问题