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"