CUresult CUDAAPI cuInit(unsigned int Flags, int cudaVersion, void *pHandleDriver) { CUDADRIVER CudaDrvLib; int driverVer = 1000; CHECKED_CALL(LOAD_LIBRARY(&CudaDrvLib)); if (pHandleDriver != NULL) { memcpy(pHandleDriver, &CudaDrvLib, sizeof(CUDADRIVER)); } // cuInit is required; alias it to _cuInit GET_PROC_EX(cuInit, _cuInit, 1); CHECKED_CALL(_cuInit(Flags)); // available since 2.2. if not present, version 1.0 is assumed GET_PROC_OPTIONAL(cuDriverGetVersion); if (cuDriverGetVersion) { CHECKED_CALL(cuDriverGetVersion(&driverVer)); } // fetch all function pointers GET_PROC(cuDeviceGet); GET_PROC(cuDeviceGetCount); GET_PROC(cuDeviceGetName); GET_PROC(cuDeviceComputeCapability); GET_PROC(cuDeviceGetProperties); GET_PROC(cuDeviceGetAttribute); GET_PROC(cuCtxDestroy); GET_PROC(cuCtxAttach); GET_PROC(cuCtxDetach); GET_PROC(cuCtxPushCurrent); GET_PROC(cuCtxPopCurrent); GET_PROC(cuCtxGetDevice); GET_PROC(cuCtxSynchronize); GET_PROC(cuModuleLoad); GET_PROC(cuModuleLoadData); GET_PROC(cuModuleUnload); GET_PROC(cuModuleGetFunction); GET_PROC(cuModuleGetTexRef); GET_PROC(cuMemFreeHost); GET_PROC(cuMemHostAlloc); GET_PROC(cuFuncSetBlockShape); GET_PROC(cuFuncSetSharedSize); GET_PROC(cuFuncGetAttribute); GET_PROC(cuArrayDestroy); GET_PROC(cuTexRefCreate); GET_PROC(cuTexRefDestroy); GET_PROC(cuTexRefSetArray); GET_PROC(cuTexRefSetFormat); GET_PROC(cuTexRefSetAddressMode); GET_PROC(cuTexRefSetFilterMode); GET_PROC(cuTexRefSetFlags); GET_PROC(cuTexRefGetArray); GET_PROC(cuTexRefGetAddressMode); GET_PROC(cuTexRefGetFilterMode); GET_PROC(cuTexRefGetFormat); GET_PROC(cuTexRefGetFlags); GET_PROC(cuParamSetSize); GET_PROC(cuParamSeti); GET_PROC(cuParamSetf); GET_PROC(cuParamSetv); GET_PROC(cuParamSetTexRef); GET_PROC(cuLaunch); GET_PROC(cuLaunchGrid); GET_PROC(cuLaunchGridAsync); GET_PROC(cuEventCreate); GET_PROC(cuEventRecord); GET_PROC(cuEventQuery); GET_PROC(cuEventSynchronize); GET_PROC(cuEventDestroy); GET_PROC(cuEventElapsedTime); GET_PROC(cuStreamCreate); GET_PROC(cuStreamQuery); GET_PROC(cuStreamSynchronize); GET_PROC(cuStreamDestroy); // These could be _v2 interfaces if (cudaVersion >= 4000) { GET_PROC_V2(cuCtxDestroy); GET_PROC_V2(cuCtxPopCurrent); GET_PROC_V2(cuCtxPushCurrent); GET_PROC_V2(cuStreamDestroy); GET_PROC_V2(cuEventDestroy); } if (cudaVersion >= 3020) { GET_PROC_V2(cuDeviceTotalMem); GET_PROC_V2(cuCtxCreate); GET_PROC_V2(cuModuleGetGlobal); GET_PROC_V2(cuMemGetInfo); GET_PROC_V2(cuMemAlloc); GET_PROC_V2(cuMemAllocPitch); GET_PROC_V2(cuMemFree); GET_PROC_V2(cuMemGetAddressRange); GET_PROC_V2(cuMemAllocHost); GET_PROC_V2(cuMemHostGetDevicePointer); GET_PROC_V2(cuMemcpyHtoD); GET_PROC_V2(cuMemcpyDtoH); GET_PROC_V2(cuMemcpyDtoD); GET_PROC_V2(cuMemcpyDtoA); GET_PROC_V2(cuMemcpyAtoD); GET_PROC_V2(cuMemcpyHtoA); GET_PROC_V2(cuMemcpyAtoH); GET_PROC_V2(cuMemcpyAtoA); GET_PROC_V2(cuMemcpy2D); GET_PROC_V2(cuMemcpy2DUnaligned); GET_PROC_V2(cuMemcpy3D); GET_PROC_V2(cuMemcpyHtoDAsync); GET_PROC_V2(cuMemcpyDtoHAsync); GET_PROC_V2(cuMemcpyHtoAAsync); GET_PROC_V2(cuMemcpyAtoHAsync); GET_PROC_V2(cuMemcpy2DAsync); GET_PROC_V2(cuMemcpy3DAsync); GET_PROC_V2(cuMemsetD8); GET_PROC_V2(cuMemsetD16); GET_PROC_V2(cuMemsetD32); GET_PROC_V2(cuMemsetD2D8); GET_PROC_V2(cuMemsetD2D16); GET_PROC_V2(cuMemsetD2D32); GET_PROC_V2(cuArrayCreate); GET_PROC_V2(cuArrayGetDescriptor); GET_PROC_V2(cuArray3DCreate); GET_PROC_V2(cuArray3DGetDescriptor); GET_PROC_V2(cuTexRefSetAddress); GET_PROC_V2(cuTexRefSetAddress2D); GET_PROC_V2(cuTexRefGetAddress); } else { GET_PROC(cuDeviceTotalMem); GET_PROC(cuCtxCreate); GET_PROC(cuModuleGetGlobal); GET_PROC(cuMemGetInfo); GET_PROC(cuMemAlloc); GET_PROC(cuMemAllocPitch); GET_PROC(cuMemFree); GET_PROC(cuMemGetAddressRange); GET_PROC(cuMemAllocHost); GET_PROC(cuMemHostGetDevicePointer); GET_PROC(cuMemcpyHtoD); GET_PROC(cuMemcpyDtoH); GET_PROC(cuMemcpyDtoD); GET_PROC(cuMemcpyDtoA); GET_PROC(cuMemcpyAtoD); GET_PROC(cuMemcpyHtoA); GET_PROC(cuMemcpyAtoH); GET_PROC(cuMemcpyAtoA); GET_PROC(cuMemcpy2D); GET_PROC(cuMemcpy2DUnaligned); GET_PROC(cuMemcpy3D); GET_PROC(cuMemcpyHtoDAsync); GET_PROC(cuMemcpyDtoHAsync); GET_PROC(cuMemcpyHtoAAsync); GET_PROC(cuMemcpyAtoHAsync); GET_PROC(cuMemcpy2DAsync); GET_PROC(cuMemcpy3DAsync); GET_PROC(cuMemsetD8); GET_PROC(cuMemsetD16); GET_PROC(cuMemsetD32); GET_PROC(cuMemsetD2D8); GET_PROC(cuMemsetD2D16); GET_PROC(cuMemsetD2D32); GET_PROC(cuArrayCreate); GET_PROC(cuArrayGetDescriptor); GET_PROC(cuArray3DCreate); GET_PROC(cuArray3DGetDescriptor); GET_PROC(cuTexRefSetAddress); GET_PROC(cuTexRefSetAddress2D); GET_PROC(cuTexRefGetAddress); } // The following functions are specific to CUDA versions if (driverVer >= 2010) { GET_PROC(cuModuleLoadDataEx); GET_PROC(cuModuleLoadFatBinary); } if (driverVer >= 2030) { GET_PROC(cuMemHostGetFlags); } if (driverVer >= 3000) { GET_PROC(cuMemcpyDtoDAsync); GET_PROC(cuFuncSetCacheConfig); GET_PROC(cuGraphicsUnregisterResource); GET_PROC(cuGraphicsSubResourceGetMappedArray); #if (__CUDA_API_VERSION >= 3020) if (cudaVersion >= 3020) { GET_PROC_V2(cuGraphicsResourceGetMappedPointer); } else { GET_PROC(cuGraphicsResourceGetMappedPointer); } #endif GET_PROC(cuGraphicsResourceSetMapFlags); GET_PROC(cuGraphicsMapResources); GET_PROC(cuGraphicsUnmapResources); GET_PROC(cuGetExportTable); } if (driverVer >= 3010) { GET_PROC(cuModuleGetSurfRef); GET_PROC(cuSurfRefSetArray); GET_PROC(cuSurfRefGetArray); GET_PROC(cuCtxSetLimit); GET_PROC(cuCtxGetLimit); } if (driverVer >= 4000) { GET_PROC(cuCtxSetCurrent); GET_PROC(cuCtxGetCurrent); GET_PROC(cuMemHostRegister); GET_PROC(cuMemHostUnregister); GET_PROC(cuMemcpy); GET_PROC(cuMemcpyPeer); GET_PROC(cuLaunchKernel); } #if INIT_CUDA_GL if (cuInitGL(0, __CUDA_API_VERSION, CudaDrvLib) != CUDA_SUCCESS) return CUDA_ERROR_INVALID_DEVICE; #endif #if INIT_CUDA_D3D9 if (cuInitD3D9(0, __CUDA_API_VERSION, CudaDrvLib) != CUDA_SUCCESS) return CUDA_ERROR_INVALID_DEVICE; #endif #if INIT_CUDA_D3D10 if (cuInitD3D10(0, __CUDA_API_VERSION, CudaDrvLib) != CUDA_SUCCESS) return CUDA_ERROR_INVALID_DEVICE; #endif #if INIT_CUDA_D3D11 if (cuInitD3D11(0, __CUDA_API_VERSION, CudaDrvLib) != CUDA_SUCCESS) return CUDA_ERROR_INVALID_DEVICE; #endif return CUDA_SUCCESS; }
CUresult CUDAAPI cuInit(unsigned int Flags, int cudaVersion) { CUDADRIVER CudaDrvLib; int driverVer = 1000; CHECKED_CALL(LOAD_LIBRARY(&CudaDrvLib)); // cuInit is required; alias it to _cuInit GET_PROC_EX(cuInit, _cuInit, 1); CHECKED_CALL(_cuInit(Flags)); // available since 2.2. if not present, version 1.0 is assumed GET_PROC_OPTIONAL(cuDriverGetVersion); if (cuDriverGetVersion) { CHECKED_CALL(cuDriverGetVersion(&driverVer)); } // fetch all function pointers GET_PROC(cuDeviceGet); GET_PROC(cuDeviceGetCount); GET_PROC(cuDeviceGetName); GET_PROC(cuDeviceComputeCapability); GET_PROC(cuDeviceGetProperties); GET_PROC(cuDeviceGetAttribute); GET_PROC(cuCtxDestroy); GET_PROC(cuCtxAttach); GET_PROC(cuCtxDetach); GET_PROC(cuCtxPushCurrent); GET_PROC(cuCtxPopCurrent); GET_PROC(cuCtxGetDevice); GET_PROC(cuCtxSynchronize); GET_PROC(cuCtxSetLimit); GET_PROC(cuCtxGetCacheConfig); GET_PROC(cuCtxSetCacheConfig); GET_PROC(cuCtxGetApiVersion); GET_PROC(cuModuleLoad); GET_PROC(cuModuleLoadData); GET_PROC(cuModuleUnload); GET_PROC(cuModuleGetFunction); GET_PROC(cuModuleGetTexRef); GET_PROC(cuMemFreeHost); GET_PROC(cuMemHostAlloc); GET_PROC(cuFuncSetBlockShape); GET_PROC(cuFuncSetSharedSize); GET_PROC(cuFuncGetAttribute); GET_PROC(cuArrayDestroy); GET_PROC(cuTexRefCreate); GET_PROC(cuTexRefDestroy); GET_PROC(cuTexRefSetArray); GET_PROC(cuTexRefSetFormat); GET_PROC(cuTexRefSetAddressMode); GET_PROC(cuTexRefSetFilterMode); GET_PROC(cuTexRefSetFlags); GET_PROC(cuTexRefGetArray); GET_PROC(cuTexRefGetAddressMode); GET_PROC(cuTexRefGetFilterMode); GET_PROC(cuTexRefGetFormat); GET_PROC(cuTexRefGetFlags); GET_PROC(cuParamSetSize); GET_PROC(cuParamSeti); GET_PROC(cuParamSetf); GET_PROC(cuParamSetv); GET_PROC(cuParamSetTexRef); GET_PROC(cuLaunch); GET_PROC(cuLaunchGrid); GET_PROC(cuLaunchGridAsync); GET_PROC(cuEventCreate); GET_PROC(cuEventRecord); GET_PROC(cuEventQuery); GET_PROC(cuEventSynchronize); GET_PROC(cuEventDestroy); GET_PROC(cuEventElapsedTime); GET_PROC(cuStreamCreate); GET_PROC(cuStreamWaitEvent); GET_PROC(cuStreamAddCallback); GET_PROC(cuStreamQuery); GET_PROC(cuStreamSynchronize); GET_PROC(cuStreamDestroy); // These are CUDA 5.0 new functions if (driverVer >= 5000) { GET_PROC(cuMipmappedArrayCreate); GET_PROC(cuMipmappedArrayDestroy); GET_PROC(cuMipmappedArrayGetLevel); } // These are CUDA 4.2 new functions if (driverVer >= 4020) { GET_PROC(cuFuncSetSharedMemConfig); GET_PROC(cuCtxGetSharedMemConfig); GET_PROC(cuCtxSetSharedMemConfig); } // These are CUDA 4.1 new functions if (cudaVersion >= 4010 && __CUDA_API_VERSION >= 4010) { GET_PROC(cuDeviceGetByPCIBusId); GET_PROC(cuDeviceGetPCIBusId); GET_PROC(cuIpcGetEventHandle); GET_PROC(cuIpcOpenEventHandle); GET_PROC(cuIpcGetMemHandle); GET_PROC(cuIpcOpenMemHandle); GET_PROC(cuIpcCloseMemHandle); } // These could be _v2 interfaces if (cudaVersion >= 4000 && __CUDA_API_VERSION >= 4000) { GET_PROC_V2(cuCtxDestroy); GET_PROC_V2(cuCtxPopCurrent); GET_PROC_V2(cuCtxPushCurrent); GET_PROC_V2(cuStreamDestroy); GET_PROC_V2(cuEventDestroy); } if (cudaVersion >= 3020 && __CUDA_API_VERSION >= 3020) { GET_PROC_V2(cuDeviceTotalMem); GET_PROC_V2(cuCtxCreate); GET_PROC_V2(cuModuleGetGlobal); GET_PROC_V2(cuMemGetInfo); GET_PROC_V2(cuMemAlloc); GET_PROC_V2(cuMemAllocPitch); GET_PROC_V2(cuMemFree); GET_PROC_V2(cuMemGetAddressRange); GET_PROC_V2(cuMemAllocHost); GET_PROC_V2(cuMemHostGetDevicePointer); GET_PROC_V2(cuMemcpyHtoD); GET_PROC_V2(cuMemcpyDtoH); GET_PROC_V2(cuMemcpyDtoD); GET_PROC_V2(cuMemcpyDtoA); GET_PROC_V2(cuMemcpyAtoD); GET_PROC_V2(cuMemcpyHtoA); GET_PROC_V2(cuMemcpyAtoH); GET_PROC_V2(cuMemcpyAtoA); GET_PROC_V2(cuMemcpy2D); GET_PROC_V2(cuMemcpy2DUnaligned); GET_PROC_V2(cuMemcpy3D); GET_PROC_V2(cuMemcpyHtoDAsync); GET_PROC_V2(cuMemcpyDtoHAsync); GET_PROC_V2(cuMemcpyHtoAAsync); GET_PROC_V2(cuMemcpyAtoHAsync); GET_PROC_V2(cuMemcpy2DAsync); GET_PROC_V2(cuMemcpy3DAsync); GET_PROC_V2(cuMemsetD8); GET_PROC_V2(cuMemsetD16); GET_PROC_V2(cuMemsetD32); GET_PROC_V2(cuMemsetD2D8); GET_PROC_V2(cuMemsetD2D16); GET_PROC_V2(cuMemsetD2D32); GET_PROC_V2(cuArrayCreate); GET_PROC_V2(cuArrayGetDescriptor); GET_PROC_V2(cuArray3DCreate); GET_PROC_V2(cuArray3DGetDescriptor); GET_PROC_V2(cuTexRefSetAddress); GET_PROC_V2(cuTexRefGetAddress); if (cudaVersion >= 4010 && __CUDA_API_VERSION >= 4010) { GET_PROC_V3(cuTexRefSetAddress2D); } else { GET_PROC_V2(cuTexRefSetAddress2D); } } else { // versions earlier than 3020 GET_PROC(cuDeviceTotalMem); GET_PROC(cuCtxCreate); GET_PROC(cuModuleGetGlobal); GET_PROC(cuMemGetInfo); GET_PROC(cuMemAlloc); GET_PROC(cuMemAllocPitch); GET_PROC(cuMemFree); GET_PROC(cuMemGetAddressRange); GET_PROC(cuMemAllocHost); GET_PROC(cuMemHostGetDevicePointer); GET_PROC(cuMemcpyHtoD); GET_PROC(cuMemcpyDtoH); GET_PROC(cuMemcpyDtoD); GET_PROC(cuMemcpyDtoA); GET_PROC(cuMemcpyAtoD); GET_PROC(cuMemcpyHtoA); GET_PROC(cuMemcpyAtoH); GET_PROC(cuMemcpyAtoA); GET_PROC(cuMemcpy2D); GET_PROC(cuMemcpy2DUnaligned); GET_PROC(cuMemcpy3D); GET_PROC(cuMemcpyHtoDAsync); GET_PROC(cuMemcpyDtoHAsync); GET_PROC(cuMemcpyHtoAAsync); GET_PROC(cuMemcpyAtoHAsync); GET_PROC(cuMemcpy2DAsync); GET_PROC(cuMemcpy3DAsync); GET_PROC(cuMemsetD8); GET_PROC(cuMemsetD16); GET_PROC(cuMemsetD32); GET_PROC(cuMemsetD2D8); GET_PROC(cuMemsetD2D16); GET_PROC(cuMemsetD2D32); GET_PROC(cuArrayCreate); GET_PROC(cuArrayGetDescriptor); GET_PROC(cuArray3DCreate); GET_PROC(cuArray3DGetDescriptor); GET_PROC(cuTexRefSetAddress); GET_PROC(cuTexRefSetAddress2D); GET_PROC(cuTexRefGetAddress); } // The following functions are specific to CUDA versions if (driverVer >= 4000) { GET_PROC(cuCtxSetCurrent); GET_PROC(cuCtxGetCurrent); GET_PROC(cuMemHostRegister); GET_PROC(cuMemHostUnregister); GET_PROC(cuMemcpy); GET_PROC(cuMemcpyPeer); GET_PROC(cuLaunchKernel); } if (driverVer >= 3010) { GET_PROC(cuModuleGetSurfRef); GET_PROC(cuSurfRefSetArray); GET_PROC(cuSurfRefGetArray); GET_PROC(cuCtxSetLimit); GET_PROC(cuCtxGetLimit); } if (driverVer >= 3000) { GET_PROC(cuMemcpyDtoDAsync); GET_PROC(cuFuncSetCacheConfig); #ifdef CUDA_INIT_D3D11 GET_PROC(cuD3D11GetDevice); GET_PROC(cuD3D11CtxCreate); GET_PROC(cuGraphicsD3D11RegisterResource); #endif GET_PROC(cuGraphicsUnregisterResource); GET_PROC(cuGraphicsSubResourceGetMappedArray); if (cudaVersion >= 3020 && __CUDA_API_VERSION >= 3020) { GET_PROC_V2(cuGraphicsResourceGetMappedPointer); } else { GET_PROC(cuGraphicsResourceGetMappedPointer); } GET_PROC(cuGraphicsResourceSetMapFlags); GET_PROC(cuGraphicsMapResources); GET_PROC(cuGraphicsUnmapResources); GET_PROC(cuGetExportTable); } if (driverVer >= 2030) { GET_PROC(cuMemHostGetFlags); #ifdef CUDA_INIT_D3D10 GET_PROC(cuD3D10GetDevice); GET_PROC(cuD3D10CtxCreate); GET_PROC(cuGraphicsD3D10RegisterResource); #endif #ifdef CUDA_INIT_OPENGL GET_PROC(cuGraphicsGLRegisterBuffer); GET_PROC(cuGraphicsGLRegisterImage); #endif } if (driverVer >= 2010) { GET_PROC(cuModuleLoadDataEx); GET_PROC(cuModuleLoadFatBinary); #ifdef CUDA_INIT_OPENGL GET_PROC(cuGLCtxCreate); GET_PROC(cuGraphicsGLRegisterBuffer); GET_PROC(cuGraphicsGLRegisterImage); # ifdef WIN32 GET_PROC(cuWGLGetDevice); # endif #endif #ifdef CUDA_INIT_D3D9 GET_PROC(cuD3D9GetDevice); GET_PROC(cuD3D9CtxCreate); GET_PROC(cuGraphicsD3D9RegisterResource); #endif } return CUDA_SUCCESS; }
CUresult CUDAAPI cuInit(unsigned int Flags) { CUDADRIVER CudaDrvLib; CUresult result; int driverVer; CHECKED_CALL(LOAD_LIBRARY(&CudaDrvLib)); //cuInit must be present ever GET_PROC_LONG(cuInit, tcuInit, _cuInit); //available since 2.2 GET_PROC(cuDriverGetVersion); //get driver version CHECKED_CALL(_cuInit(Flags)); CHECKED_CALL(cuDriverGetVersion(&driverVer)); GET_PROC(cuDeviceGet); GET_PROC(cuDeviceGetCount); GET_PROC(cuDeviceGetName); GET_PROC(cuDeviceComputeCapability); GET_PROC(cuDeviceTotalMem); GET_PROC(cuDeviceGetProperties); GET_PROC(cuDeviceGetAttribute); GET_PROC(cuCtxCreate); GET_PROC(cuCtxDestroy); GET_PROC(cuCtxAttach); GET_PROC(cuCtxDetach); GET_PROC(cuCtxPushCurrent); GET_PROC(cuCtxPopCurrent); GET_PROC(cuCtxGetDevice); GET_PROC(cuCtxSynchronize); GET_PROC(cuModuleLoad); GET_PROC(cuModuleLoadData); GET_PROC(cuModuleLoadDataEx); GET_PROC(cuModuleLoadFatBinary); GET_PROC(cuModuleUnload); GET_PROC(cuModuleGetFunction); GET_PROC(cuModuleGetGlobal); GET_PROC(cuModuleGetTexRef); GET_PROC(cuMemGetInfo); GET_PROC(cuMemAlloc); GET_PROC(cuMemAllocPitch); GET_PROC(cuMemFree); GET_PROC(cuMemGetAddressRange); GET_PROC(cuMemAllocHost); GET_PROC(cuMemFreeHost); GET_PROC(cuMemHostAlloc); GET_PROC(cuMemHostGetDevicePointer); GET_PROC(cuMemcpyHtoD); GET_PROC(cuMemcpyDtoH); GET_PROC(cuMemcpyDtoD); GET_PROC(cuMemcpyDtoA); GET_PROC(cuMemcpyAtoD); GET_PROC(cuMemcpyHtoA); GET_PROC(cuMemcpyAtoH); GET_PROC(cuMemcpyAtoA); GET_PROC(cuMemcpy2D); GET_PROC(cuMemcpy2DUnaligned); GET_PROC(cuMemcpy3D); GET_PROC(cuMemcpyHtoDAsync); GET_PROC(cuMemcpyDtoHAsync); GET_PROC(cuMemcpyHtoAAsync); GET_PROC(cuMemcpyAtoHAsync); GET_PROC(cuMemcpy2DAsync); GET_PROC(cuMemcpy3DAsync); GET_PROC(cuMemsetD8); GET_PROC(cuMemsetD16); GET_PROC(cuMemsetD32); GET_PROC(cuMemsetD2D8); GET_PROC(cuMemsetD2D16); GET_PROC(cuMemsetD2D32); GET_PROC(cuFuncSetBlockShape); GET_PROC(cuFuncSetSharedSize); GET_PROC(cuFuncGetAttribute); GET_PROC(cuArrayCreate); GET_PROC(cuArrayGetDescriptor); GET_PROC(cuArrayDestroy); GET_PROC(cuArray3DCreate); GET_PROC(cuArray3DGetDescriptor); GET_PROC(cuTexRefCreate); GET_PROC(cuTexRefDestroy); GET_PROC(cuTexRefSetArray); GET_PROC(cuTexRefSetAddress); GET_PROC(cuTexRefSetAddress2D); GET_PROC(cuTexRefSetFormat); GET_PROC(cuTexRefSetAddressMode); GET_PROC(cuTexRefSetFilterMode); GET_PROC(cuTexRefSetFlags); GET_PROC(cuTexRefGetAddress); GET_PROC(cuTexRefGetArray); GET_PROC(cuTexRefGetAddressMode); GET_PROC(cuTexRefGetFilterMode); GET_PROC(cuTexRefGetFormat); GET_PROC(cuTexRefGetFlags); GET_PROC(cuParamSetSize); GET_PROC(cuParamSeti); GET_PROC(cuParamSetf); GET_PROC(cuParamSetv); GET_PROC(cuParamSetTexRef); GET_PROC(cuLaunch); GET_PROC(cuLaunchGrid); GET_PROC(cuLaunchGridAsync); GET_PROC(cuEventCreate); GET_PROC(cuEventRecord); GET_PROC(cuEventQuery); GET_PROC(cuEventSynchronize); GET_PROC(cuEventDestroy); GET_PROC(cuEventElapsedTime); GET_PROC(cuStreamCreate); GET_PROC(cuStreamQuery); GET_PROC(cuStreamSynchronize); GET_PROC(cuStreamDestroy); if (driverVer >= 2030) { GET_PROC(cuMemHostGetFlags); } if (driverVer >= 3000) { GET_PROC(cuMemcpyDtoDAsync); GET_PROC(cuFuncSetCacheConfig); GET_PROC(cuGraphicsUnregisterResource); GET_PROC(cuGraphicsSubResourceGetMappedArray); GET_PROC(cuGraphicsResourceGetMappedPointer); GET_PROC(cuGraphicsResourceSetMapFlags); GET_PROC(cuGraphicsMapResources); GET_PROC(cuGraphicsUnmapResources); GET_PROC(cuGetExportTable); } return CUDA_SUCCESS; }