13#include <cuda_runtime.h>
25#define MAXTHREADS 1024
28#define MAXBLOCKS 65535
29#define MAXBLOCKS2 65535
31#define MAXBLOCKS 4294967295
32#define MAXBLOCKS2 65535
35#define IDX2R(i,j,NJ) (((i)*(NJ))+(j))
36#define IDX2C(i,j,NI) (((j)*(NI))+(i))
38#define IDIVUP(i,j) ((i+j-1)/j)
40#define IMUL(a, b) __mul24(a, b)
43#define MAX(a,b) (a > b ? a : b)
47#define MIN(a,b) (a > b ? b: a)
51inline int ftoi(
float value)
53 return (value >= 0 ? (
int)(value + 0.5) : (
int)(value - 0.5));
57inline int nextpower2(
int value)
60 while (r<value) r<<=1;
66inline int gpuDeviceInit(
int devID)
69 checkCudaErrors(cudaGetDeviceCount(&device_count));
71 if (device_count == 0)
73 fprintf(stderr,
"gpuDeviceInit() CUDA error: no devices supporting CUDA.\n");
77 if (devID < 0 || devID > device_count-1)
79 fprintf(stderr,
"gpuDeviceInit() Device %d is not a valid GPU device. \n", devID);
83 checkCudaErrors(cudaSetDevice(devID));
84 printf(
"Using CUDA Device %d ...\n", devID);
90inline void gpuDeviceList()
93 int current_device = 0;
94 cudaDeviceProp deviceProp;
95 checkCudaErrors(cudaGetDeviceCount(&device_count));
97 fprintf(stderr,
"Detecting all CUDA devices ...\n");
98 if (device_count == 0)
100 fprintf(stderr,
"CUDA error: no devices supporting CUDA.\n");
104 while (current_device < device_count)
106 checkCudaErrors(cudaGetDeviceProperties(&deviceProp, current_device));
107 if (deviceProp.computeMode == cudaComputeModeProhibited)
109 fprintf(stderr,
"CUDA Device [%d]: \"%s\" is not available: device is running in <Compute Mode Prohibited> \n", current_device, deviceProp.name);
111 else if (deviceProp.major < 1)
113 fprintf(stderr,
"CUDA Device [%d]: \"%s\" is not available: device does not support CUDA \n", current_device, deviceProp.name);
116 fprintf(stderr,
"CUDA Device [%d]: \"%s\" is available.\n", current_device, deviceProp.name);
Define error checking in cuda calls.