#include #include #include #ifndef PACKED_DEFINE #error "PACKED_DEFINE 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; }