| #include <cuda.h> |
| #include <cuda_runtime.h> |
| #include <iostream> |
| |
| #include <inc_cuda.h> |
| #ifndef INC_CUDA |
| # error "INC_CUDA not defined!" |
| #endif |
| |
| #ifndef HOST_DEFINE |
| # error "HOST_DEFINE not defined!" |
| #endif |
| |
| #ifndef PACKED_DEFINE |
| # error "PACKED_DEFINE not defined!" |
| #endif |
| |
| #ifndef FLAG_COMPILE_LANG_CUDA |
| # error "FLAG_COMPILE_LANG_CUDA not defined!" |
| #endif |
| |
| #ifndef FLAG_LANG_IS_CUDA |
| # error "FLAG_LANG_IS_CUDA not defined!" |
| #endif |
| |
| #if !FLAG_LANG_IS_CUDA |
| # error "Expected FLAG_LANG_IS_CUDA" |
| #endif |
| |
| #ifndef DEF_COMPILE_LANG_CUDA |
| # error "DEF_COMPILE_LANG_CUDA not defined!" |
| #endif |
| |
| #ifndef DEF_LANG_IS_CUDA |
| # error "DEF_LANG_IS_CUDA not defined!" |
| #endif |
| |
| #if !DEF_LANG_IS_CUDA |
| # error "Expected DEF_LANG_IS_CUDA" |
| #endif |
| |
| #ifndef DEF_CUDA_COMPILER |
| # error "DEF_CUDA_COMPILER not defined!" |
| #endif |
| |
| #ifndef DEF_CUDA_COMPILER_VERSION |
| # error "DEF_CUDA_COMPILER_VERSION not defined!" |
| #endif |
| |
| static __global__ void DetermineIfValidCudaDevice() |
| { |
| } |
| |
| #ifdef _MSC_VER |
| # pragma pack(push, 1) |
| # undef PACKED_DEFINE |
| # define PACKED_DEFINE |
| #endif |
| struct PACKED_DEFINE result_type |
| { |
| bool valid; |
| int value; |
| #if defined(NDEBUG) && !defined(DEFREL) |
| # error missing DEFREL flag |
| #endif |
| }; |
| #ifdef _MSC_VER |
| # pragma pack(pop) |
| #endif |
| |
| result_type can_launch_kernel() |
| { |
| result_type r; |
| DetermineIfValidCudaDevice<<<1, 1>>>(); |
| r.valid = (cudaSuccess == cudaGetLastError()); |
| if (r.valid) { |
| r.value = 1; |
| } else { |
| r.value = -1; |
| } |
| return r; |
| } |
| |
| int main(int argc, char** argv) |
| { |
| cudaError_t err; |
| int nDevices = 0; |
| err = cudaGetDeviceCount(&nDevices); |
| if (err != cudaSuccess) { |
| std::cerr << cudaGetErrorString(err) << std::endl; |
| return 1; |
| } |
| return 0; |
| } |