X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=WCudaMSE%2FBilatTools_Cuda_smart_switch%2Fsrc%2Fcore%2Fswitch%2Freadme.txt;fp=WCudaMSE%2FBilatTools_Cuda_smart_switch%2Fsrc%2Fcore%2Fswitch%2Freadme.txt;h=1990f5d5008909d0eb7561a94980a072b1b9db7b;hb=8d08c12b29c2a14684f35c023ee39e694bb80d25;hp=0000000000000000000000000000000000000000;hpb=226de81f7e1f1fbf4ac79d0d089e8a05ec7159a0;p=GPU.git diff --git a/WCudaMSE/BilatTools_Cuda_smart_switch/src/core/switch/readme.txt b/WCudaMSE/BilatTools_Cuda_smart_switch/src/core/switch/readme.txt new file mode 100755 index 0000000..1990f5d --- /dev/null +++ b/WCudaMSE/BilatTools_Cuda_smart_switch/src/core/switch/readme.txt @@ -0,0 +1,60 @@ +// Objectif: +// +// Faciliter la vie de l'utilisateur! +// +// Probleme: +// +// Exemple (api image) +// +// Methodologie 1 (utilisation namespace explicite) +// +// Compilation gcc = > cpu::Image #include "Image_CPU.h" +// Compilation nvcc => gpu::Image #include "Image_GPU.h" +// +// Avantage : On peut utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image +// Inconvenient : syntaxe lourde +// +// Methodologie 2 (utilisation de smart switch a priorite cuda) +// +// Code (sans namespace) +// +// Image #include "Image.h" +// +// Compilation gcc = > utilise automatiquemnt namespace cpu +// => et donc indirectememt cpu::Image #include "Image_CPU.h" +// +// Compilation nvcc = > utilise automatiquemnt namespace gpu +// => et donc indirectememt gpu::Image #include "Image_GPU.h" +// +// +// Avantage : syntaxe ligth,portage de code facile entre version cpu et gpu, c'est le compilateur qui oriente +// Inconvenient : On peut pas utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image +// +// Contrainte : +// Injecter la variable +// +// -D__CBI_CUDA__ +// +// ou mieux injecter la variable pour les projets non cuda +// +// -DCBI_NO_CUDA +// Note +// L'utilisation de la variable +// +// __CUDACC__ +// +// ne marche pas, elle est vrai que pour les portions de codes compiliés par nvcc, et false lorsque nvcc demande à gcc de compiler + +/*----------------------------------------------------------------------*\ + |* Pre-defined Compiler Macros *| + \*---------------------------------------------------------------------*/ + +// http://sourceforge.net/p/predef/wiki/Compilers/ + +// http://msdn.microsoft.com/en-us/library/b0084kay.aspx +// https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html +// http://sourceforge.net/p/predef/wiki/Home/ + +// #ifdef __GNUC__ +// #if defined(_MSC_VER) +// #ifdef __CBI_CUDA__