/ backends / select_backend.cpp
select_backend.cpp
 1  #include "../nn.h"
 2  
 3  // declare and define pointers to functions
 4  void (*COPY_TO_DEVICE)(tensor*) = NULL;
 5  tensor* (*COPY_FROM_DEVICE)(tensor*) = NULL;
 6  
 7  // include this unconditionally, because used by both cuda and cpu
 8  #include "cpu/move_data.cpp"
 9  
10  #include "common/asserts.cpp"
11  
12  #if DEVICE == CPU
13      #include "cpu/kernels.cpp"
14      #include "cpu/kernels_conv.cpp"
15      #define set_backend_device() set_backend_cpu()
16      // todo-low: cleanup
17      // otherwise with CPU backend, linker error because tensor.free_tensor uses that fn name;
18      // actual function definition
19      void checkCudaErrors(cudaError_t err) {};
20  #elif DEVICE == CUDA
21      #include "cuda/move_data.cu"
22      #include "cuda/kernels.cu"
23      #include "cuda/kernels_conv.cu"
24      #include "cuda/kernels_reduce.cu"
25      #define set_backend_device() set_backend_cuda()
26  #endif
27  
28  #include "common/kernels.cpp"