3 // Faciliter la vie de l'utilisateur!
\r
7 // Exemple (api image)
\r
9 // Methodologie 1 (utilisation namespace explicite)
\r
11 // Compilation gcc = > cpu::Image #include "Image_CPU.h"
\r
12 // Compilation nvcc => gpu::Image #include "Image_GPU.h"
\r
14 // Avantage : On peut utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image
\r
15 // Inconvenient : syntaxe lourde
\r
17 // Methodologie 2 (utilisation de smart switch a priorite cuda)
\r
19 // Code (sans namespace)
\r
21 // Image #include "Image.h"
\r
23 // Compilation gcc = > utilise automatiquemnt namespace cpu
\r
24 // => et donc indirectememt cpu::Image #include "Image_CPU.h"
\r
26 // Compilation nvcc = > utilise automatiquemnt namespace gpu
\r
27 // => et donc indirectememt gpu::Image #include "Image_GPU.h"
\r
30 // Avantage : syntaxe ligth,portage de code facile entre version cpu et gpu, c'est le compilateur qui oriente
\r
31 // Inconvenient : On peut pas utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image
\r
34 // Injecter la variable
\r
38 // ou mieux injecter la variable pour les projets non cuda
\r
42 // L'utilisation de la variable
\r
46 // ne marche pas, elle est vrai que pour les portions de codes compiliés par nvcc, et false lorsque nvcc demande à gcc de compiler
\r
48 /*----------------------------------------------------------------------*\
\r
49 |* Pre-defined Compiler Macros *|
\r
50 \*---------------------------------------------------------------------*/
\r
52 // http://sourceforge.net/p/predef/wiki/Compilers/
\r
54 // http://msdn.microsoft.com/en-us/library/b0084kay.aspx
\r
55 // https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
\r
56 // http://sourceforge.net/p/predef/wiki/Home/
\r
59 // #if defined(_MSC_VER)
\r
60 // #ifdef __CBI_CUDA__
\r