36 #pragma warning(disable : 4996) // disable deprecated warning
49 #define DLL_MAPPING __declspec(dllexport)
51 #define DLL_MAPPING __declspec(dllimport)
58 #define CUTIL_API __stdcall
97 unsigned int bdimx,
unsigned int bdimy,
98 unsigned int bdimz,
const char *file,
const int line,
99 const char *aname,
const int index);
218 const float epsilon,
bool verbose =
false);
232 const double epsilon,
bool verbose =
false);
296 unsigned int *
w,
unsigned int *
h);
309 unsigned int *
w,
unsigned int *
h);
323 unsigned int *
w,
unsigned int *
h);
339 unsigned int *
w,
unsigned int *
h);
355 unsigned int *
w,
unsigned int *
h);
370 unsigned int *
w,
unsigned int *
h);
382 unsigned int w,
unsigned int h);
394 unsigned int w,
unsigned int h);
407 unsigned int w,
unsigned int h);
419 unsigned int w,
unsigned int h);
431 unsigned int w,
unsigned int h);
443 unsigned int w,
unsigned int h);
464 const char *flag_name);
478 const char *arg_name,
int *
val);
492 const char *arg_name,
float *
val);
506 const char *arg_name,
char **
val);
521 const char *arg_name,
char **
val,
547 const unsigned int len);
560 const unsigned int len);
574 const unsigned int len,
const float epsilon,
const float threshold);
587 const unsigned int len);
602 const unsigned int len,
const float epsilon,
const float threshold);
616 const unsigned int len,
const float epsilon);
630 const unsigned int len,
const float epsilon);
645 const unsigned int len,
const float epsilon,
const float threshold);
660 const unsigned int len,
const float epsilon);
674 cutComparePPM(
const char *src_file,
const char *ref_file,
const float epsilon,
const float threshold,
bool verboseErrors =
false);
744 #if CUDART_VERSION >= 4000
745 #define CUT_DEVICE_SYNCHRONIZE() cudaDeviceSynchronize();
747 #define CUT_DEVICE_SYNCHRONIZE() cudaThreadSynchronize();
750 #if CUDART_VERSION >= 4000
751 #define CUT_DEVICE_RESET() cudaDeviceReset();
753 #define CUT_DEVICE_RESET() cudaThreadExit();
758 #if __DEVICE_EMULATION__
760 #define CUT_BANK_CHECKER(array, index) \
761 (cutCheckBankAccess(threadIdx.x, threadIdx.y, threadIdx.z, blockDim.x, \
762 blockDim.y, blockDim.z, \
763 __FILE__, __LINE__, #array, index), \
766 #define CUT_BANK_CHECKER(array, index) array[index]
769 #define CUT_BANK_CHECKER(array, index) array[index]
772 #define CU_SAFE_CALL_NO_SYNC(call) \
774 CUresult err = call; \
775 if (CUDA_SUCCESS != err) \
777 fprintf(stderr, "Cuda driver error %x in file '%s' in line %i.\n", err, __FILE__, __LINE__); \
778 //never ever exit exit(EXIT_FAILURE); \
781 #define CU_SAFE_CALL(call) CU_SAFE_CALL_NO_SYNC(call);
783 #define CU_SAFE_CTX_SYNC() \
785 CUresult err = cuCtxSynchronize(); \
786 if (CUDA_SUCCESS != err) \
788 fprintf(stderr, "Cuda driver error %x in file '%s' in line %i.\n", err, __FILE__, __LINE__); \
789 //never ever exitexit(EXIT_FAILURE); \
792 #define CUDA_SAFE_CALL_NO_SYNC(call) \
794 cudaError err = call; \
795 if (cudaSuccess != err) \
797 fprintf(stderr, "Cuda error in file '%s' in line %i : %s.\n", __FILE__, __LINE__, cudaGetErrorString(err)); \
798 exit(EXIT_FAILURE); \
802 #define CUDA_SAFE_CALL(call) CUDA_SAFE_CALL_NO_SYNC(call);
804 #define CUDA_SAFE_THREAD_SYNC() \
806 cudaError err = CUT_DEVICE_SYNCHRONIZE(); \
807 if (cudaSuccess != err) \
809 fprintf(stderr, "Cuda error in file '%s' in line %i : %s.\n", __FILE__, __LINE__, cudaGetErrorString(err)); \
813 #define CUFFT_SAFE_CALL(call) \
815 cufftResult err = call; \
816 if (CUFFT_SUCCESS != err) \
818 fprintf(stderr, "CUFFT error in file '%s' in line %i.\n", __FILE__, __LINE__); \
819 exit(EXIT_FAILURE); \
823 #define CUT_SAFE_CALL(call) \
824 if (CUTTrue != call) \
826 fprintf(stderr, "Cut error in file '%s' in line %i.\n", __FILE__, __LINE__); \
827 exit(EXIT_FAILURE); \
832 #define CUT_CHECK_ERROR(errorMessage) \
834 cudaError_t err = cudaGetLastError(); \
835 if (cudaSuccess != err) \
837 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
838 exit(EXIT_FAILURE); \
840 err = CUT_DEVICE_SYNCHRONIZE(); \
841 if (cudaSuccess != err) \
843 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
844 exit(EXIT_FAILURE); \
848 #define CUT_CHECK_ERROR(errorMessage) \
850 cudaError_t err = cudaGetLastError(); \
851 if (cudaSuccess != err) \
853 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
854 exit(EXIT_FAILURE); \
860 #define CUT_SAFE_MALLOC(mallocCall) \
864 fprintf(stderr, "Host malloc failure in file '%s' in line %i\n", __FILE__, __LINE__); \
865 exit(EXIT_FAILURE); \
872 #define CUT_CONDITION(val) \
873 if (CUTFalse == cutCheckCondition(val, __FILE__, __LINE__)) \
875 exit(EXIT_FAILURE); \
878 #if __DEVICE_EMULATION__
880 #define CUT_DEVICE_INIT(ARGC, ARGV)
884 #define CUT_DEVICE_INIT(ARGC, ARGV) \
887 CUDA_SAFE_CALL_NO_SYNC(cudaGetDeviceCount(&deviceCount)); \
888 if (deviceCount == 0) \
890 fprintf(stderr, "cutil error: no devices supporting CUDA.\n"); \
891 exit(EXIT_FAILURE); \
894 cutGetCmdLineArgumenti(ARGC, (const char **)ARGV, "device", &dev); \
897 if (dev > deviceCount - 1) \
898 dev = deviceCount - 1; \
899 cudaDeviceProp deviceProp; \
900 CUDA_SAFE_CALL_NO_SYNC(cudaGetDeviceProperties(&deviceProp, dev)); \
901 if (deviceProp.major < 1) \
903 fprintf(stderr, "cutil error: device does not support CUDA.\n"); \
904 exit(EXIT_FAILURE); \
906 if (cutCheckCmdLineFlag(ARGC, (const char **)ARGV, "quiet") == CUTFalse) \
907 fprintf(stderr, "Using device %d: %s\n", dev, deviceProp.name); \
908 CUDA_SAFE_CALL(cudaSetDevice(dev)); \
912 #define CUDA_CHECK_CTX_LOST(errorMessage) \
914 cudaError_t err = cudaGetLastError(); \
915 if (cudaSuccess != err) \
917 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
918 exit(EXIT_FAILURE); \
920 err = CUT_DEVICE_SYNCHRONIZE(); \
921 if (cudaSuccess != err) \
923 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
924 exit(EXIT_FAILURE); \
929 #define CU_CHECK_CTX_LOST(errorMessage) \
931 cudaError_t err = cudaGetLastError(); \
932 if (CUDA_ERROR_INVALID_CONTEXT != err) \
934 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
935 exit(EXIT_FAILURE); \
937 err = CUT_DEVICE_SYNCHRONIZE(); \
938 if (cudaSuccess != err) \
940 fprintf(stderr, "Cuda error: %s in file '%s' in line %i : %s.\n", errorMessage, __FILE__, __LINE__, cudaGetErrorString(err)); \
941 exit(EXIT_FAILURE); \
947 #define CUT_DEVICE_INIT_DRV(cuDevice, ARGC, ARGV) \
950 int deviceCount = 0; \
951 CUresult err = cuInit(0); \
952 if (CUDA_SUCCESS == err) \
953 CU_SAFE_CALL_NO_SYNC(cuDeviceGetCount(&deviceCount)); \
954 if (deviceCount == 0) \
956 fprintf(stderr, "cutil error: no devices supporting CUDA\n"); \
957 exit(EXIT_FAILURE); \
960 cutGetCmdLineArgumenti(ARGC, (const char **)ARGV, "device", &dev); \
963 if (dev > deviceCount - 1) \
964 dev = deviceCount - 1; \
965 CU_SAFE_CALL_NO_SYNC(cuDeviceGet(&cuDevice, dev)); \
967 cuDeviceGetName(name, 100, cuDevice); \
968 if (cutCheckCmdLineFlag(ARGC, (const char **)ARGV, "quiet") == CUTFalse) \
969 fprintf(stderr, "Using device %d: %s\n", dev, name); \
972 #define CUT_EXIT(argc, argv) \
973 if (!cutCheckCmdLineFlag(argc, (const char **)argv, "noprompt")) \
975 printf("\nPress ENTER to exit...\n"); \
984 #endif // #ifdef _DEBUG (else branch)
986 #endif // #ifndef _CUTIL_H_
DLL_MAPPING CUTBoolean CUTIL_API cutCompareube(const unsigned char *reference, const unsigned char *data, const unsigned int len, const float epsilon)
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFileui(const char *filename, const unsigned int *data, unsigned int len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutComparefe(const float *reference, const float *data, const unsigned int len, const float epsilon)
GLubyte GLubyte GLubyte GLubyte w
Definition: khronos-glext.h:6793
GLint reference
Definition: khronos-glext.h:12998
DLL_MAPPING CUTBoolean CUTIL_API cutComparePPM(const char *src_file, const char *ref_file, const float epsilon, const float threshold, bool verboseErrors=false)
DLL_MAPPING CUTBoolean CUTIL_API cutComparei(const int *reference, const int *data, const unsigned int len)
DLL_MAPPING CUTBoolean CUTIL_API cutGetCmdLineArgumentf(const int argc, const char **argv, const char *arg_name, float *val)
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: khronos-glext.h:6354
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFilef(const char *filename, const float *data, unsigned int len, const float epsilon, bool verbose=false)
#define CUTIL_API
Definition: cutil.h:60
DLL_MAPPING CUTBoolean CUTIL_API cutCheckCondition(int val, const char *file, const int line)
DLL_MAPPING CUTBoolean CUTIL_API cutSavePGMs(const char *file, unsigned short *data, unsigned int w, unsigned int h)
GLuint index
Definition: khronos-glext.h:6722
DLL_MAPPING CUTBoolean CUTIL_API cutGetCmdLineArgumentstr(const int argc, const char **argv, const char *arg_name, char **val)
DLL_MAPPING CUTBoolean CUTIL_API cutCreateTimer(unsigned int *name)
Timer functionality.
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPGMs(const char *file, unsigned short **data, unsigned int *w, unsigned int *h)
GLfloat GLfloat GLfloat GLfloat h
Definition: khronos-glext.h:8441
DLL_MAPPING CUTBoolean CUTIL_API cutReadFileb(const char *filename, char **data, unsigned int *len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutStopTimer(const unsigned int name)
DLL_MAPPING CUTBoolean CUTIL_API cutReadFiled(const char *filename, double **data, unsigned int *len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutSavePGMub(const char *file, unsigned char *data, unsigned int w, unsigned int h)
int verbose
Definition: coSimClient.c:191
GLuint const GLchar * name
Definition: khronos-glext.h:6722
DLL_MAPPING CUTBoolean CUTIL_API cutSavePPM4ub(const char *file, unsigned char *data, unsigned int w, unsigned int h)
DLL_MAPPING CUTBoolean CUTIL_API cutReadFileui(const char *filename, unsigned int **data, unsigned int *len, bool verbose=false)
DLL_MAPPING char *CUTIL_API cutFindFilePath(const char *filename, const char *executablePath)
DLL_MAPPING void CUTIL_API cutCheckBankAccess(unsigned int tidx, unsigned int tidy, unsigned int tidz, unsigned int bdimx, unsigned int bdimy, unsigned int bdimz, const char *file, const int line, const char *aname, const int index)
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFiled(const char *filename, const float *data, unsigned int len, const double epsilon, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutCompareL2fe(const float *reference, const float *data, const unsigned int len, const float epsilon)
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFileub(const char *filename, const unsigned char *data, unsigned int len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutStartTimer(const unsigned int name)
CUTBoolean
CUT bool type.
Definition: cutil.h:66
DLL_MAPPING CUTBoolean CUTIL_API cutComparefet(const float *reference, const float *data, const unsigned int len, const float epsilon, const float threshold)
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFileb(const char *filename, const char *data, unsigned int len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutGetCmdLineArgumenti(const int argc, const char **argv, const char *arg_name, int *val)
DLL_MAPPING CUTBoolean CUTIL_API cutWriteFilei(const char *filename, const int *data, unsigned int len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutReadFileub(const char *filename, unsigned char **data, unsigned int *len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutReadFilef(const char *filename, float **data, unsigned int *len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutSavePGMi(const char *file, unsigned int *data, unsigned int w, unsigned int h)
DLL_MAPPING void CUTIL_API cutFree(void *ptr)
DLL_MAPPING CUTBoolean CUTIL_API cutGetCmdLineArgumentListstr(const int argc, const char **argv, const char *arg_name, char **val, unsigned int *len)
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPGMub(const char *file, unsigned char **data, unsigned int *w, unsigned int *h)
GLuint GLfloat * val
Definition: khronos-glext.h:7898
DLL_MAPPING CUTBoolean CUTIL_API cutComparef(const float *reference, const float *data, const unsigned int len)
DLL_MAPPING CUTBoolean CUTIL_API cutDeleteTimer(unsigned int name)
DLL_MAPPING CUTBoolean CUTIL_API cutReadFilei(const char *filename, int **data, unsigned int *len, bool verbose=false)
DLL_MAPPING CUTBoolean CUTIL_API cutCompareuit(const unsigned int *reference, const unsigned int *data, const unsigned int len, const float epsilon, const float threshold)
DLL_MAPPING CUTBoolean CUTIL_API cutCompareub(const unsigned char *reference, const unsigned char *data, const unsigned int len)
DLL_MAPPING CUTBoolean CUTIL_API cutSavePPMub(const char *file, unsigned char *data, unsigned int w, unsigned int h)
#define DLL_MAPPING
Definition: cutil.h:54
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPPM4ub(const char *file, unsigned char **data, unsigned int *w, unsigned int *h)
GLenum GLsizei len
Definition: khronos-glext.h:7440
DLL_MAPPING CUTBoolean CUTIL_API cutCompareubt(const unsigned char *reference, const unsigned char *data, const unsigned int len, const float epsilon, const float threshold)
DLL_MAPPING CUTBoolean CUTIL_API cutSavePGMf(const char *file, float *data, unsigned int w, unsigned int h)
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPPMub(const char *file, unsigned char **data, unsigned int *w, unsigned int *h)
DLL_MAPPING float CUTIL_API cutGetTimerValue(const unsigned int name)
DLL_MAPPING CUTBoolean CUTIL_API cutCheckCmdLineFlag(const int argc, const char **argv, const char *flag_name)
DLL_MAPPING CUTBoolean CUTIL_API cutResetTimer(const unsigned int name)
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPGMi(const char *file, unsigned int **data, unsigned int *w, unsigned int *h)
DLL_MAPPING CUTBoolean CUTIL_API cutLoadPGMf(const char *file, float **data, unsigned int *w, unsigned int *h)
DLL_MAPPING float CUTIL_API cutGetAverageTimerValue(const unsigned int name)