0

我有一段代码必须在 CPU 和 CUDA-GPU 上运行,而另一段代码单独在 CPU 上运行。 #define ENABLE_CUDA是我“打开”以在整个应用程序中启用 CUDA 代码。这是我的代码的样子......

# define ENABEL_CUDA is the preprocessor directive to turn ON/OFF CUDA code.

CPU and GPU code --This piece of code has to be executed irrespective of whether CUDA is ON / OFF.

standalone CPU code alone -- This piece of code has to be executed only if CUDA is OFF.

我的解决方案是:

#ifdef ENABLE_CUDA

  CPU AND GPU code
# else
  CPU AND GPU code
  standalone CPU code 
# endif

但这涉及 ifdef 和 else 块中的代码重复(CPU 和 GPU 代码),我想避免它。

我怎样才能实现它?为了避免代码重复,必须做什么?对此表示赞赏的任何指针...

4

3 回答 3

5
#ifdef ENABLE_CUDA

  CPU AND GPU code
# else
  CPU AND GPU code
  standalone CPU code 
# endif

相当于:

  CPU AND GPU code
# ifndef ENABLE_CUDA
  standalone CPU code 
# endif

一般来说,如果代码对两者都是通用的,那么ifelse可以将其移出两者。

于 2013-03-28T16:29:24.703 回答
1

为什么不简单地使用:

CPU AND GPU code

#ifndef ENABLE_CUDA
  standalone CPU code 
# endif
于 2013-03-28T16:29:03.387 回答
1

除了其他人已经说过的话,

#ifndef ENABLE_CUDA
# define __device__
#endif

如果存在 CUDA,将带您编写在设备上运行的函数,如果不存在,则在主机上运行,​​而无需重复代码。

于 2013-03-28T22:14:43.620 回答