18 #ifndef __cudaInlineFunctions_h 19 #define __cudaInlineFunctions_h 21 #include <cuda_runtime.h> 30 #define cudaCheckMsg( msg ) __cudaCheckMsg( msg, __FILE__, __LINE__ ) 32 inline void __cudaCheckMsg(
const char *msg,
const char *file,
const int line )
34 cudaError_t err = ::cudaGetLastError();
35 if ( err != cudaSuccess )
37 const char* errcmsg = ::cudaGetErrorString( err );
38 fprintf( stderr,
"CUDA error: %s in file <%s>, line %i : %s.\n",
39 msg, file, line, errcmsg );
42 std::string errmsg = std::string( msg ) +
":: " + std::string( errcmsg );
47 err = ::cudaThreadSynchronize();
48 if ( err != cudaSuccess )
50 const char* errcmsg = ::cudaGetErrorString( err );
51 fprintf( stderr,
"cudaThreadSynchronize error: %s in file <%s>, line %i : %s.\n",
52 msg, file, line, errcmsg );
55 std::string errmsg = std::string( msg ) +
":: " + std::string( errcmsg );
66 size_t size = nof_elems *
sizeof( T );
75 inline T*
cudaHostAlloc(
size_t nof_elems,
unsigned int flags = cudaHostAllocDefault )
78 size_t size = nof_elems *
sizeof( T );
86 inline cudaError_t
cudaMemcpy(
void* dst,
const void* src,
87 size_t nof_elems,
size_t sizeof_elem, cudaMemcpyKind direction )
89 cudaError err =
::cudaMemcpy( dst, src, nof_elems * sizeof_elem, direction );
97 size_t nof_elems, cudaMemcpyKind direction )
99 size_t size = nof_elems *
sizeof( T );
106 inline void cudaMemset( T* dst,
int value,
size_t nof_elems )
108 size_t size = nof_elems *
sizeof( T );
114 template <
typename T,
typename Q>
116 cudaMemcpyKind direction )
124 template <
typename T>
126 const cudaChannelFormatDesc desc )
134 template <
typename T>
147 DBG_FUNC( cudaFreeArray, (
struct cudaArray *array), (array) );
148 DBG_FUNC( cudaFree, (
void *devPtr), (devPtr) );
149 DBG_FUNC( cudaMalloc3DArray, (
struct cudaArray** arrayPtr,
150 const struct cudaChannelFormatDesc* desc,
struct cudaExtent extent),
151 (arrayPtr, desc, extent) );
152 DBG_FUNC( cudaMemcpy3D, (
const struct cudaMemcpy3DParms *p), (p) );
153 DBG_FUNC( cudaSetDevice, (
int device), (device) );
154 DBG_FUNC( cudaGetDeviceProperties, (
struct cudaDeviceProp *prop,
int device),
159 #endif // end #ifndef __cudaInlineFunctions_h cudaError_t cudaMemcpyToSymbol(const T &dst, const Q &src, cudaMemcpyKind direction)
T * cudaHostAlloc(vcl_size_t nof_elems, unsigned int flags=cudaHostAllocDefault)
DBG_FUNC(cudaFreeArray,(struct cudaArray *array),(array))
T * cudaMalloc(vcl_size_t nof_elems)
cudaError_t cudaUnbindTexture(const T &tex)
cudaError_t cudaMemcpy(void *dst, const void *src, vcl_size_t nof_elems, vcl_size_t sizeof_elem, cudaMemcpyKind direction)
cudaError_t cudaBindTextureToArray(const T &tex, cudaArray *array, const cudaChannelFormatDesc desc)
void cudaMemset(T *dst, int value, vcl_size_t nof_elems)
#define cudaCheckMsg(msg)
void __cudaCheckMsg(const char *msg, const char *file, const int line)