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

一般に、コードが両方に共通であり、両方ifからelse移動できる場合。

于 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 に答える