/* Implementation function. */ int cuewInit(void) { /* Library paths. */ #ifdef _WIN32 /* Expected in c:/windows/system or similar, no path needed. */ const char *path = "nvcuda.dll"; #elif defined(__APPLE__) /* Default installation path. */ const char *path = "/usr/local/cuda/lib/libcuda.dylib"; #else const char *path = "libcuda.so"; #endif static int initialized = 0; static int result = 0; int error, driver_version; if (initialized) { return result; } initialized = 1; error = atexit(cuewExit); if (error) { result = CUEW_ERROR_ATEXIT_FAILED; return result; } /* Load library. */ lib = dynamic_library_open(path); if (lib == NULL) { result = CUEW_ERROR_OPEN_FAILED; return result; } /* Detect driver version. */ driver_version = 1000; CUDA_LIBRARY_FIND_CHECKED(cuDriverGetVersion); if (cuDriverGetVersion) { cuDriverGetVersion(&driver_version); } /* We require version 4.0. */ if (driver_version < 4000) { result = CUEW_ERROR_OPEN_FAILED; return result; } /* Fetch all function pointers. */ CUDA_LIBRARY_FIND(cuGetErrorString); CUDA_LIBRARY_FIND(cuGetErrorName); CUDA_LIBRARY_FIND(cuInit); CUDA_LIBRARY_FIND(cuDriverGetVersion); CUDA_LIBRARY_FIND(cuDeviceGet); CUDA_LIBRARY_FIND(cuDeviceGetCount); CUDA_LIBRARY_FIND(cuDeviceGetName); CUDA_LIBRARY_FIND(cuDeviceTotalMem_v2); CUDA_LIBRARY_FIND(cuDeviceGetAttribute); CUDA_LIBRARY_FIND(cuDeviceGetProperties); CUDA_LIBRARY_FIND(cuDeviceComputeCapability); CUDA_LIBRARY_FIND(cuDevicePrimaryCtxRetain); CUDA_LIBRARY_FIND(cuDevicePrimaryCtxRelease); CUDA_LIBRARY_FIND(cuDevicePrimaryCtxSetFlags); CUDA_LIBRARY_FIND(cuDevicePrimaryCtxGetState); CUDA_LIBRARY_FIND(cuDevicePrimaryCtxReset); CUDA_LIBRARY_FIND(cuCtxCreate_v2); CUDA_LIBRARY_FIND(cuCtxDestroy_v2); CUDA_LIBRARY_FIND(cuCtxPushCurrent_v2); CUDA_LIBRARY_FIND(cuCtxPopCurrent_v2); CUDA_LIBRARY_FIND(cuCtxSetCurrent); CUDA_LIBRARY_FIND(cuCtxGetCurrent); CUDA_LIBRARY_FIND(cuCtxGetDevice); CUDA_LIBRARY_FIND(cuCtxGetFlags); CUDA_LIBRARY_FIND(cuCtxSynchronize); CUDA_LIBRARY_FIND(cuCtxSetLimit); CUDA_LIBRARY_FIND(cuCtxGetLimit); CUDA_LIBRARY_FIND(cuCtxGetCacheConfig); CUDA_LIBRARY_FIND(cuCtxSetCacheConfig); CUDA_LIBRARY_FIND(cuCtxGetSharedMemConfig); CUDA_LIBRARY_FIND(cuCtxSetSharedMemConfig); CUDA_LIBRARY_FIND(cuCtxGetApiVersion); CUDA_LIBRARY_FIND(cuCtxGetStreamPriorityRange); CUDA_LIBRARY_FIND(cuCtxAttach); CUDA_LIBRARY_FIND(cuCtxDetach); CUDA_LIBRARY_FIND(cuModuleLoad); CUDA_LIBRARY_FIND(cuModuleLoadData); CUDA_LIBRARY_FIND(cuModuleLoadDataEx); CUDA_LIBRARY_FIND(cuModuleLoadFatBinary); CUDA_LIBRARY_FIND(cuModuleUnload); CUDA_LIBRARY_FIND(cuModuleGetFunction); CUDA_LIBRARY_FIND(cuModuleGetGlobal_v2); CUDA_LIBRARY_FIND(cuModuleGetTexRef); CUDA_LIBRARY_FIND(cuModuleGetSurfRef); CUDA_LIBRARY_FIND(cuLinkCreate_v2); CUDA_LIBRARY_FIND(cuLinkAddData_v2); CUDA_LIBRARY_FIND(cuLinkAddFile_v2); CUDA_LIBRARY_FIND(cuLinkComplete); CUDA_LIBRARY_FIND(cuLinkDestroy); CUDA_LIBRARY_FIND(cuMemGetInfo_v2); CUDA_LIBRARY_FIND(cuMemAlloc_v2); CUDA_LIBRARY_FIND(cuMemAllocPitch_v2); CUDA_LIBRARY_FIND(cuMemFree_v2); CUDA_LIBRARY_FIND(cuMemGetAddressRange_v2); CUDA_LIBRARY_FIND(cuMemAllocHost_v2); CUDA_LIBRARY_FIND(cuMemFreeHost); CUDA_LIBRARY_FIND(cuMemHostAlloc); CUDA_LIBRARY_FIND(cuMemHostGetDevicePointer_v2); CUDA_LIBRARY_FIND(cuMemHostGetFlags); CUDA_LIBRARY_FIND(cuMemAllocManaged); CUDA_LIBRARY_FIND(cuDeviceGetByPCIBusId); CUDA_LIBRARY_FIND(cuDeviceGetPCIBusId); CUDA_LIBRARY_FIND(cuIpcGetEventHandle); CUDA_LIBRARY_FIND(cuIpcOpenEventHandle); CUDA_LIBRARY_FIND(cuIpcGetMemHandle); CUDA_LIBRARY_FIND(cuIpcOpenMemHandle); CUDA_LIBRARY_FIND(cuIpcCloseMemHandle); CUDA_LIBRARY_FIND(cuMemHostRegister_v2); CUDA_LIBRARY_FIND(cuMemHostUnregister); CUDA_LIBRARY_FIND(cuMemcpy); CUDA_LIBRARY_FIND(cuMemcpyPeer); CUDA_LIBRARY_FIND(cuMemcpyHtoD_v2); CUDA_LIBRARY_FIND(cuMemcpyDtoH_v2); CUDA_LIBRARY_FIND(cuMemcpyDtoD_v2); CUDA_LIBRARY_FIND(cuMemcpyDtoA_v2); CUDA_LIBRARY_FIND(cuMemcpyAtoD_v2); CUDA_LIBRARY_FIND(cuMemcpyHtoA_v2); CUDA_LIBRARY_FIND(cuMemcpyAtoH_v2); CUDA_LIBRARY_FIND(cuMemcpyAtoA_v2); CUDA_LIBRARY_FIND(cuMemcpy2D_v2); CUDA_LIBRARY_FIND(cuMemcpy2DUnaligned_v2); CUDA_LIBRARY_FIND(cuMemcpy3D_v2); CUDA_LIBRARY_FIND(cuMemcpy3DPeer); CUDA_LIBRARY_FIND(cuMemcpyAsync); CUDA_LIBRARY_FIND(cuMemcpyPeerAsync); CUDA_LIBRARY_FIND(cuMemcpyHtoDAsync_v2); CUDA_LIBRARY_FIND(cuMemcpyDtoHAsync_v2); CUDA_LIBRARY_FIND(cuMemcpyDtoDAsync_v2); CUDA_LIBRARY_FIND(cuMemcpyHtoAAsync_v2); CUDA_LIBRARY_FIND(cuMemcpyAtoHAsync_v2); CUDA_LIBRARY_FIND(cuMemcpy2DAsync_v2); CUDA_LIBRARY_FIND(cuMemcpy3DAsync_v2); CUDA_LIBRARY_FIND(cuMemcpy3DPeerAsync); CUDA_LIBRARY_FIND(cuMemsetD8_v2); CUDA_LIBRARY_FIND(cuMemsetD16_v2); CUDA_LIBRARY_FIND(cuMemsetD32_v2); CUDA_LIBRARY_FIND(cuMemsetD2D8_v2); CUDA_LIBRARY_FIND(cuMemsetD2D16_v2); CUDA_LIBRARY_FIND(cuMemsetD2D32_v2); CUDA_LIBRARY_FIND(cuMemsetD8Async); CUDA_LIBRARY_FIND(cuMemsetD16Async); CUDA_LIBRARY_FIND(cuMemsetD32Async); CUDA_LIBRARY_FIND(cuMemsetD2D8Async); CUDA_LIBRARY_FIND(cuMemsetD2D16Async); CUDA_LIBRARY_FIND(cuMemsetD2D32Async); CUDA_LIBRARY_FIND(cuArrayCreate_v2); CUDA_LIBRARY_FIND(cuArrayGetDescriptor_v2); CUDA_LIBRARY_FIND(cuArrayDestroy); CUDA_LIBRARY_FIND(cuArray3DCreate_v2); CUDA_LIBRARY_FIND(cuArray3DGetDescriptor_v2); CUDA_LIBRARY_FIND(cuMipmappedArrayCreate); CUDA_LIBRARY_FIND(cuMipmappedArrayGetLevel); CUDA_LIBRARY_FIND(cuMipmappedArrayDestroy); CUDA_LIBRARY_FIND(cuPointerGetAttribute); CUDA_LIBRARY_FIND(cuPointerSetAttribute); CUDA_LIBRARY_FIND(cuPointerGetAttributes); CUDA_LIBRARY_FIND(cuStreamCreate); CUDA_LIBRARY_FIND(cuStreamCreateWithPriority); CUDA_LIBRARY_FIND(cuStreamGetPriority); CUDA_LIBRARY_FIND(cuStreamGetFlags); CUDA_LIBRARY_FIND(cuStreamWaitEvent); CUDA_LIBRARY_FIND(cuStreamAddCallback); CUDA_LIBRARY_FIND(cuStreamAttachMemAsync); CUDA_LIBRARY_FIND(cuStreamQuery); CUDA_LIBRARY_FIND(cuStreamSynchronize); CUDA_LIBRARY_FIND(cuStreamDestroy_v2); CUDA_LIBRARY_FIND(cuEventCreate); CUDA_LIBRARY_FIND(cuEventRecord); CUDA_LIBRARY_FIND(cuEventQuery); CUDA_LIBRARY_FIND(cuEventSynchronize); CUDA_LIBRARY_FIND(cuEventDestroy_v2); CUDA_LIBRARY_FIND(cuEventElapsedTime); CUDA_LIBRARY_FIND(cuFuncGetAttribute); CUDA_LIBRARY_FIND(cuFuncSetCacheConfig); CUDA_LIBRARY_FIND(cuFuncSetSharedMemConfig); CUDA_LIBRARY_FIND(cuLaunchKernel); CUDA_LIBRARY_FIND(cuFuncSetBlockShape); CUDA_LIBRARY_FIND(cuFuncSetSharedSize); CUDA_LIBRARY_FIND(cuParamSetSize); CUDA_LIBRARY_FIND(cuParamSeti); CUDA_LIBRARY_FIND(cuParamSetf); CUDA_LIBRARY_FIND(cuParamSetv); CUDA_LIBRARY_FIND(cuLaunch); CUDA_LIBRARY_FIND(cuLaunchGrid); CUDA_LIBRARY_FIND(cuLaunchGridAsync); CUDA_LIBRARY_FIND(cuParamSetTexRef); CUDA_LIBRARY_FIND(cuOccupancyMaxActiveBlocksPerMultiprocessor); CUDA_LIBRARY_FIND(cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags); CUDA_LIBRARY_FIND(cuOccupancyMaxPotentialBlockSize); CUDA_LIBRARY_FIND(cuOccupancyMaxPotentialBlockSizeWithFlags); CUDA_LIBRARY_FIND(cuTexRefSetArray); CUDA_LIBRARY_FIND(cuTexRefSetMipmappedArray); CUDA_LIBRARY_FIND(cuTexRefSetAddress_v2); CUDA_LIBRARY_FIND(cuTexRefSetAddress2D_v3); CUDA_LIBRARY_FIND(cuTexRefSetFormat); CUDA_LIBRARY_FIND(cuTexRefSetAddressMode); CUDA_LIBRARY_FIND(cuTexRefSetFilterMode); CUDA_LIBRARY_FIND(cuTexRefSetMipmapFilterMode); CUDA_LIBRARY_FIND(cuTexRefSetMipmapLevelBias); CUDA_LIBRARY_FIND(cuTexRefSetMipmapLevelClamp); CUDA_LIBRARY_FIND(cuTexRefSetMaxAnisotropy); CUDA_LIBRARY_FIND(cuTexRefSetFlags); CUDA_LIBRARY_FIND(cuTexRefGetAddress_v2); CUDA_LIBRARY_FIND(cuTexRefGetArray); CUDA_LIBRARY_FIND(cuTexRefGetMipmappedArray); CUDA_LIBRARY_FIND(cuTexRefGetAddressMode); CUDA_LIBRARY_FIND(cuTexRefGetFilterMode); CUDA_LIBRARY_FIND(cuTexRefGetFormat); CUDA_LIBRARY_FIND(cuTexRefGetMipmapFilterMode); CUDA_LIBRARY_FIND(cuTexRefGetMipmapLevelBias); CUDA_LIBRARY_FIND(cuTexRefGetMipmapLevelClamp); CUDA_LIBRARY_FIND(cuTexRefGetMaxAnisotropy); CUDA_LIBRARY_FIND(cuTexRefGetFlags); CUDA_LIBRARY_FIND(cuTexRefCreate); CUDA_LIBRARY_FIND(cuTexRefDestroy); CUDA_LIBRARY_FIND(cuSurfRefSetArray); CUDA_LIBRARY_FIND(cuSurfRefGetArray); CUDA_LIBRARY_FIND(cuTexObjectCreate); CUDA_LIBRARY_FIND(cuTexObjectDestroy); CUDA_LIBRARY_FIND(cuTexObjectGetResourceDesc); CUDA_LIBRARY_FIND(cuTexObjectGetTextureDesc); CUDA_LIBRARY_FIND(cuTexObjectGetResourceViewDesc); CUDA_LIBRARY_FIND(cuSurfObjectCreate); CUDA_LIBRARY_FIND(cuSurfObjectDestroy); CUDA_LIBRARY_FIND(cuSurfObjectGetResourceDesc); CUDA_LIBRARY_FIND(cuDeviceCanAccessPeer); CUDA_LIBRARY_FIND(cuCtxEnablePeerAccess); CUDA_LIBRARY_FIND(cuCtxDisablePeerAccess); CUDA_LIBRARY_FIND(cuGraphicsUnregisterResource); CUDA_LIBRARY_FIND(cuGraphicsSubResourceGetMappedArray); CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedMipmappedArray); CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedPointer_v2); CUDA_LIBRARY_FIND(cuGraphicsResourceSetMapFlags_v2); CUDA_LIBRARY_FIND(cuGraphicsMapResources); CUDA_LIBRARY_FIND(cuGraphicsUnmapResources); CUDA_LIBRARY_FIND(cuGetExportTable); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage); CUDA_LIBRARY_FIND(cuGLGetDevices_v2); CUDA_LIBRARY_FIND(cuGLCtxCreate_v2); CUDA_LIBRARY_FIND(cuGLInit); CUDA_LIBRARY_FIND(cuGLRegisterBufferObject); CUDA_LIBRARY_FIND(cuGLMapBufferObject_v2); CUDA_LIBRARY_FIND(cuGLUnmapBufferObject); CUDA_LIBRARY_FIND(cuGLUnregisterBufferObject); CUDA_LIBRARY_FIND(cuGLSetBufferObjectMapFlags); CUDA_LIBRARY_FIND(cuGLMapBufferObjectAsync_v2); CUDA_LIBRARY_FIND(cuGLUnmapBufferObjectAsync); result = CUEW_SUCCESS; return result; }
CCL_NAMESPACE_BEGIN /* utility macros */ #define CUDA_LIBRARY_FIND_CHECKED(name) \ name = (t##name*)dynamic_library_find(lib, #name); #define CUDA_LIBRARY_FIND(name) \ name = (t##name*)dynamic_library_find(lib, #name); \ assert(name); #define CUDA_LIBRARY_FIND_V2(name) \ name = (t##name*)dynamic_library_find(lib, #name "_v2"); \ assert(name); /* initialization function */ bool cuLibraryInit() { static bool initialized = false; static bool result = false; if(initialized) return result; initialized = true; /* library paths */ #ifdef _WIN32 /* expected in c:/windows/system or similar, no path needed */ const char *path = "nvcuda.dll"; #elif defined(__APPLE__) /* default installation path */ const char *path = "/usr/local/cuda/lib/libcuda.dylib"; #else const char *path = "libcuda.so"; #endif /* load library */ DynamicLibrary *lib = dynamic_library_open(path); if(lib == NULL) return false; /* detect driver version */ int driver_version = 1000; CUDA_LIBRARY_FIND_CHECKED(cuDriverGetVersion); if(cuDriverGetVersion) cuDriverGetVersion(&driver_version); /* we require version 4.0 */ if(driver_version < 4000) return false; /* fetch all function pointers */ CUDA_LIBRARY_FIND(cuInit); CUDA_LIBRARY_FIND(cuDeviceGet); CUDA_LIBRARY_FIND(cuDeviceGetCount); CUDA_LIBRARY_FIND(cuDeviceGetName); CUDA_LIBRARY_FIND(cuDeviceComputeCapability); CUDA_LIBRARY_FIND(cuDeviceTotalMem); CUDA_LIBRARY_FIND(cuDeviceGetProperties); CUDA_LIBRARY_FIND(cuDeviceGetAttribute); CUDA_LIBRARY_FIND(cuCtxCreate); CUDA_LIBRARY_FIND(cuCtxDestroy); CUDA_LIBRARY_FIND(cuCtxAttach); CUDA_LIBRARY_FIND(cuCtxDetach); CUDA_LIBRARY_FIND(cuCtxPushCurrent); CUDA_LIBRARY_FIND(cuCtxPopCurrent); CUDA_LIBRARY_FIND(cuCtxGetDevice); CUDA_LIBRARY_FIND(cuCtxSynchronize); CUDA_LIBRARY_FIND(cuModuleLoad); CUDA_LIBRARY_FIND(cuModuleLoadData); CUDA_LIBRARY_FIND(cuModuleUnload); CUDA_LIBRARY_FIND(cuModuleGetFunction); CUDA_LIBRARY_FIND(cuModuleGetGlobal); CUDA_LIBRARY_FIND(cuModuleGetTexRef); CUDA_LIBRARY_FIND(cuMemGetInfo); CUDA_LIBRARY_FIND(cuMemAlloc); CUDA_LIBRARY_FIND(cuMemAllocPitch); CUDA_LIBRARY_FIND(cuMemFree); CUDA_LIBRARY_FIND(cuMemGetAddressRange); CUDA_LIBRARY_FIND(cuMemAllocHost); CUDA_LIBRARY_FIND(cuMemFreeHost); CUDA_LIBRARY_FIND(cuMemHostAlloc); CUDA_LIBRARY_FIND(cuMemHostGetDevicePointer); CUDA_LIBRARY_FIND(cuMemcpyHtoD); CUDA_LIBRARY_FIND(cuMemcpyDtoH); CUDA_LIBRARY_FIND(cuMemcpyDtoD); CUDA_LIBRARY_FIND(cuMemcpyDtoA); CUDA_LIBRARY_FIND(cuMemcpyAtoD); CUDA_LIBRARY_FIND(cuMemcpyHtoA); CUDA_LIBRARY_FIND(cuMemcpyAtoH); CUDA_LIBRARY_FIND(cuMemcpyAtoA); CUDA_LIBRARY_FIND(cuMemcpy2D); CUDA_LIBRARY_FIND(cuMemcpy2DUnaligned); CUDA_LIBRARY_FIND(cuMemcpy3D); CUDA_LIBRARY_FIND(cuMemcpyHtoDAsync); CUDA_LIBRARY_FIND(cuMemcpyDtoHAsync); CUDA_LIBRARY_FIND(cuMemcpyHtoAAsync); CUDA_LIBRARY_FIND(cuMemcpyAtoHAsync); CUDA_LIBRARY_FIND(cuMemcpy2DAsync); CUDA_LIBRARY_FIND(cuMemcpy3DAsync); CUDA_LIBRARY_FIND(cuMemsetD8); CUDA_LIBRARY_FIND(cuMemsetD16); CUDA_LIBRARY_FIND(cuMemsetD32); CUDA_LIBRARY_FIND(cuMemsetD2D8); CUDA_LIBRARY_FIND(cuMemsetD2D16); CUDA_LIBRARY_FIND(cuMemsetD2D32); CUDA_LIBRARY_FIND(cuFuncSetBlockShape); CUDA_LIBRARY_FIND(cuFuncSetSharedSize); CUDA_LIBRARY_FIND(cuFuncGetAttribute); CUDA_LIBRARY_FIND(cuArrayCreate); CUDA_LIBRARY_FIND(cuArrayGetDescriptor); CUDA_LIBRARY_FIND(cuArrayDestroy); CUDA_LIBRARY_FIND(cuArray3DCreate); CUDA_LIBRARY_FIND(cuArray3DGetDescriptor); CUDA_LIBRARY_FIND(cuTexRefCreate); CUDA_LIBRARY_FIND(cuTexRefDestroy); CUDA_LIBRARY_FIND(cuTexRefSetArray); CUDA_LIBRARY_FIND(cuTexRefSetAddress); CUDA_LIBRARY_FIND(cuTexRefSetAddress2D); CUDA_LIBRARY_FIND(cuTexRefSetFormat); CUDA_LIBRARY_FIND(cuTexRefSetAddressMode); CUDA_LIBRARY_FIND(cuTexRefSetFilterMode); CUDA_LIBRARY_FIND(cuTexRefSetFlags); CUDA_LIBRARY_FIND(cuTexRefGetAddress); CUDA_LIBRARY_FIND(cuTexRefGetArray); CUDA_LIBRARY_FIND(cuTexRefGetAddressMode); CUDA_LIBRARY_FIND(cuTexRefGetFilterMode); CUDA_LIBRARY_FIND(cuTexRefGetFormat); CUDA_LIBRARY_FIND(cuTexRefGetFlags); CUDA_LIBRARY_FIND(cuParamSetSize); CUDA_LIBRARY_FIND(cuParamSeti); CUDA_LIBRARY_FIND(cuParamSetf); CUDA_LIBRARY_FIND(cuParamSetv); CUDA_LIBRARY_FIND(cuParamSetTexRef); CUDA_LIBRARY_FIND(cuLaunch); CUDA_LIBRARY_FIND(cuLaunchGrid); CUDA_LIBRARY_FIND(cuLaunchGridAsync); CUDA_LIBRARY_FIND(cuEventCreate); CUDA_LIBRARY_FIND(cuEventRecord); CUDA_LIBRARY_FIND(cuEventQuery); CUDA_LIBRARY_FIND(cuEventSynchronize); CUDA_LIBRARY_FIND(cuEventDestroy); CUDA_LIBRARY_FIND(cuEventElapsedTime); CUDA_LIBRARY_FIND(cuStreamCreate); CUDA_LIBRARY_FIND(cuStreamQuery); CUDA_LIBRARY_FIND(cuStreamSynchronize); CUDA_LIBRARY_FIND(cuStreamDestroy); /* cuda 2.1 */ CUDA_LIBRARY_FIND(cuModuleLoadDataEx); CUDA_LIBRARY_FIND(cuModuleLoadFatBinary); CUDA_LIBRARY_FIND(cuGLCtxCreate); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage); /* cuda 2.3 */ CUDA_LIBRARY_FIND(cuMemHostGetFlags); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer); CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage); /* cuda 3.0 */ CUDA_LIBRARY_FIND(cuMemcpyDtoDAsync); CUDA_LIBRARY_FIND(cuFuncSetCacheConfig); CUDA_LIBRARY_FIND(cuGraphicsUnregisterResource); CUDA_LIBRARY_FIND(cuGraphicsSubResourceGetMappedArray); CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedPointer); CUDA_LIBRARY_FIND(cuGraphicsResourceSetMapFlags); CUDA_LIBRARY_FIND(cuGraphicsMapResources); CUDA_LIBRARY_FIND(cuGraphicsUnmapResources); CUDA_LIBRARY_FIND(cuGetExportTable); /* cuda 3.1 */ CUDA_LIBRARY_FIND(cuModuleGetSurfRef); CUDA_LIBRARY_FIND(cuSurfRefSetArray); CUDA_LIBRARY_FIND(cuSurfRefGetArray); CUDA_LIBRARY_FIND(cuCtxSetLimit); CUDA_LIBRARY_FIND(cuCtxGetLimit); /* functions which changed 3.1 -> 3.2 for 64 bit stuff, the cuda library * has both the old ones for compatibility and new ones with _v2 postfix, * we load the _v2 ones here. */ CUDA_LIBRARY_FIND_V2(cuDeviceTotalMem); CUDA_LIBRARY_FIND_V2(cuCtxCreate); CUDA_LIBRARY_FIND_V2(cuModuleGetGlobal); CUDA_LIBRARY_FIND_V2(cuMemGetInfo); CUDA_LIBRARY_FIND_V2(cuMemAlloc); CUDA_LIBRARY_FIND_V2(cuMemAllocPitch); CUDA_LIBRARY_FIND_V2(cuMemFree); CUDA_LIBRARY_FIND_V2(cuMemGetAddressRange); CUDA_LIBRARY_FIND_V2(cuMemAllocHost); CUDA_LIBRARY_FIND_V2(cuMemHostGetDevicePointer); CUDA_LIBRARY_FIND_V2(cuMemcpyHtoD); CUDA_LIBRARY_FIND_V2(cuMemcpyDtoH); CUDA_LIBRARY_FIND_V2(cuMemcpyDtoD); CUDA_LIBRARY_FIND_V2(cuMemcpyDtoA); CUDA_LIBRARY_FIND_V2(cuMemcpyAtoD); CUDA_LIBRARY_FIND_V2(cuMemcpyHtoA); CUDA_LIBRARY_FIND_V2(cuMemcpyAtoH); CUDA_LIBRARY_FIND_V2(cuMemcpyAtoA); CUDA_LIBRARY_FIND_V2(cuMemcpyHtoAAsync); CUDA_LIBRARY_FIND_V2(cuMemcpyAtoHAsync); CUDA_LIBRARY_FIND_V2(cuMemcpy2D); CUDA_LIBRARY_FIND_V2(cuMemcpy2DUnaligned); CUDA_LIBRARY_FIND_V2(cuMemcpy3D); CUDA_LIBRARY_FIND_V2(cuMemcpyHtoDAsync); CUDA_LIBRARY_FIND_V2(cuMemcpyDtoHAsync); CUDA_LIBRARY_FIND_V2(cuMemcpyDtoDAsync); CUDA_LIBRARY_FIND_V2(cuMemcpy2DAsync); CUDA_LIBRARY_FIND_V2(cuMemcpy3DAsync); CUDA_LIBRARY_FIND_V2(cuMemsetD8); CUDA_LIBRARY_FIND_V2(cuMemsetD16); CUDA_LIBRARY_FIND_V2(cuMemsetD32); CUDA_LIBRARY_FIND_V2(cuMemsetD2D8); CUDA_LIBRARY_FIND_V2(cuMemsetD2D16); CUDA_LIBRARY_FIND_V2(cuMemsetD2D32); CUDA_LIBRARY_FIND_V2(cuArrayCreate); CUDA_LIBRARY_FIND_V2(cuArrayGetDescriptor); CUDA_LIBRARY_FIND_V2(cuArray3DCreate); CUDA_LIBRARY_FIND_V2(cuArray3DGetDescriptor); CUDA_LIBRARY_FIND_V2(cuTexRefSetAddress); CUDA_LIBRARY_FIND_V2(cuTexRefSetAddress2D); CUDA_LIBRARY_FIND_V2(cuTexRefGetAddress); CUDA_LIBRARY_FIND_V2(cuGraphicsResourceGetMappedPointer); CUDA_LIBRARY_FIND_V2(cuGLCtxCreate); /* cuda 4.0 */ CUDA_LIBRARY_FIND(cuCtxSetCurrent); if(cuHavePrecompiledKernels()) result = true; #ifndef _WIN32 else if(cuCompilerPath() != "") result = true; #endif return result; }