395 lines · c
1//===--- cuda/dynamic_cuda/cuda.h --------------------------------- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// The parts of the cuda api that are presently in use by the openmp cuda plugin10//11//===----------------------------------------------------------------------===//12 13#ifndef DYNAMIC_CUDA_CUDA_H_INCLUDED14#define DYNAMIC_CUDA_CUDA_H_INCLUDED15 16#include <cstddef>17#include <cstdint>18 19#define cuDeviceTotalMem cuDeviceTotalMem_v220#define cuModuleGetGlobal cuModuleGetGlobal_v221#define cuMemGetInfo cuMemGetInfo_v222#define cuMemAlloc cuMemAlloc_v223#define cuMemFree cuMemFree_v224#define cuMemAllocHost cuMemAllocHost_v225#define cuDevicePrimaryCtxRelease cuDevicePrimaryCtxRelease_v226#define cuDevicePrimaryCtxSetFlags cuDevicePrimaryCtxSetFlags_v227 28typedef int CUdevice;29typedef uintptr_t CUdeviceptr;30typedef struct CUmod_st *CUmodule;31typedef struct CUctx_st *CUcontext;32typedef struct CUfunc_st *CUfunction;33typedef void (*CUhostFn)(void *userData);34typedef struct CUstream_st *CUstream;35typedef struct CUevent_st *CUevent;36typedef struct CUuuid_st {37 char bytes[16];38} CUuuid;39 40#define CU_DEVICE_INVALID ((CUdevice)(-2))41 42typedef unsigned long long CUmemGenericAllocationHandle_v1;43typedef CUmemGenericAllocationHandle_v1 CUmemGenericAllocationHandle;44 45#define CU_DEVICE_INVALID ((CUdevice)(-2))46 47typedef enum CUmemAllocationGranularity_flags_enum {48 CU_MEM_ALLOC_GRANULARITY_MINIMUM = 0x0,49 CU_MEM_ALLOC_GRANULARITY_RECOMMENDED = 0x150} CUmemAllocationGranularity_flags;51 52typedef enum CUmemAccess_flags_enum {53 CU_MEM_ACCESS_FLAGS_PROT_NONE = 0x0,54 CU_MEM_ACCESS_FLAGS_PROT_READ = 0x1,55 CU_MEM_ACCESS_FLAGS_PROT_READWRITE = 0x3,56 CU_MEM_ACCESS_FLAGS_PROT_MAX = 0x7FFFFFFF57} CUmemAccess_flags;58 59typedef enum CUmemLocationType_enum {60 CU_MEM_LOCATION_TYPE_INVALID = 0x0,61 CU_MEM_LOCATION_TYPE_DEVICE = 0x1,62 CU_MEM_LOCATION_TYPE_MAX = 0x7FFFFFFF63} CUmemLocationType;64 65typedef struct CUmemLocation_st {66 CUmemLocationType type;67 int id;68} CUmemLocation_v1;69typedef CUmemLocation_v1 CUmemLocation;70 71typedef struct CUmemAccessDesc_st {72 CUmemLocation location;73 CUmemAccess_flags flags;74} CUmemAccessDesc_v1;75 76typedef CUmemAccessDesc_v1 CUmemAccessDesc;77 78typedef enum CUmemAllocationType_enum {79 CU_MEM_ALLOCATION_TYPE_INVALID = 0x0,80 CU_MEM_ALLOCATION_TYPE_PINNED = 0x1,81 CU_MEM_ALLOCATION_TYPE_MAX = 0x7FFFFFFF82} CUmemAllocationType;83 84typedef enum CUmemAllocationHandleType_enum {85 CU_MEM_HANDLE_TYPE_NONE = 0x0,86 CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR = 0x1,87 CU_MEM_HANDLE_TYPE_WIN32 = 0x2,88 CU_MEM_HANDLE_TYPE_WIN32_KMT = 0x4,89 CU_MEM_HANDLE_TYPE_MAX = 0x7FFFFFFF90} CUmemAllocationHandleType;91 92typedef struct CUmemAllocationProp_st {93 CUmemAllocationType type;94 CUmemAllocationHandleType requestedHandleTypes;95 CUmemLocation location;96 97 void *win32HandleMetaData;98 struct {99 unsigned char compressionType;100 unsigned char gpuDirectRDMACapable;101 unsigned short usage;102 unsigned char reserved[4];103 } allocFlags;104} CUmemAllocationProp_v1;105typedef CUmemAllocationProp_v1 CUmemAllocationProp;106 107typedef enum cudaError_enum {108 CUDA_SUCCESS = 0,109 CUDA_ERROR_INVALID_VALUE = 1,110 CUDA_ERROR_NO_DEVICE = 100,111 CUDA_ERROR_INVALID_HANDLE = 400,112 CUDA_ERROR_NOT_FOUND = 500,113 CUDA_ERROR_NOT_READY = 600,114 CUDA_ERROR_TOO_MANY_PEERS = 711,115} CUresult;116 117typedef enum CUstream_flags_enum {118 CU_STREAM_DEFAULT = 0x0,119 CU_STREAM_NON_BLOCKING = 0x1,120} CUstream_flags;121 122typedef enum CUlimit_enum {123 CU_LIMIT_STACK_SIZE = 0x0,124 CU_LIMIT_PRINTF_FIFO_SIZE = 0x1,125 CU_LIMIT_MALLOC_HEAP_SIZE = 0x2,126 CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH = 0x3,127 CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT = 0x4,128 CU_LIMIT_MAX_L2_FETCH_GRANULARITY = 0x5,129 CU_LIMIT_PERSISTING_L2_CACHE_SIZE = 0x6,130 CU_LIMIT_MAX131} CUlimit;132 133typedef enum CUdevice_attribute_enum {134 CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1,135 CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2,136 CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3,137 CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4,138 CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5,139 CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6,140 CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7,141 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8,142 CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8,143 CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9,144 CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10,145 CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11,146 CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12,147 CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12,148 CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13,149 CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14,150 CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15,151 CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16,152 CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17,153 CU_DEVICE_ATTRIBUTE_INTEGRATED = 18,154 CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19,155 CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20,156 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH = 21,157 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH = 22,158 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT = 23,159 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH = 24,160 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT = 25,161 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH = 26,162 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH = 27,163 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT = 28,164 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS = 29,165 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH = 27,166 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT = 28,167 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES = 29,168 CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT = 30,169 CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31,170 CU_DEVICE_ATTRIBUTE_ECC_ENABLED = 32,171 CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33,172 CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34,173 CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35,174 CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36,175 CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37,176 CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE = 38,177 CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR = 39,178 CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40,179 CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41,180 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH = 42,181 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS = 43,182 CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER = 44,183 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH = 45,184 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT = 46,185 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE = 47,186 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE = 48,187 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE = 49,188 CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50,189 CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51,190 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH = 52,191 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH = 53,192 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS = 54,193 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH = 55,194 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH = 56,195 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT = 57,196 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH = 58,197 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT = 59,198 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH = 60,199 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH = 61,200 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS = 62,201 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH = 63,202 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT = 64,203 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS = 65,204 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH = 66,205 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH = 67,206 CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS = 68,207 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH = 69,208 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH = 70,209 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT = 71,210 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH = 72,211 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH = 73,212 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT = 74,213 CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75,214 CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76,215 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH = 77,216 CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED = 78,217 CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED = 79,218 CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED = 80,219 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = 81,220 CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR = 82,221 CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83,222 CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84,223 CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85,224 CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86,225 CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87,226 CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88,227 CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89,228 CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90,229 CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91,230 CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_MEM_OPS = 92,231 CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS = 93,232 CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR = 94,233 CU_DEVICE_ATTRIBUTE_COOPERATIVE_LAUNCH = 95,234 CU_DEVICE_ATTRIBUTE_COOPERATIVE_MULTI_DEVICE_LAUNCH = 96,235 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN = 97,236 CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES = 98,237 CU_DEVICE_ATTRIBUTE_HOST_REGISTER_SUPPORTED = 99,238 CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES = 100,239 CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST = 101,240 CU_DEVICE_ATTRIBUTE_VIRTUAL_ADDRESS_MANAGEMENT_SUPPORTED = 102,241 CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 102,242 CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTED = 103,243 CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_HANDLE_SUPPORTED = 104,244 CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_KMT_HANDLE_SUPPORTED = 105,245 CU_DEVICE_ATTRIBUTE_MAX_BLOCKS_PER_MULTIPROCESSOR = 106,246 CU_DEVICE_ATTRIBUTE_GENERIC_COMPRESSION_SUPPORTED = 107,247 CU_DEVICE_ATTRIBUTE_MAX_PERSISTING_L2_CACHE_SIZE = 108,248 CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE = 109,249 CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WITH_CUDA_VMM_SUPPORTED = 110,250 CU_DEVICE_ATTRIBUTE_RESERVED_SHARED_MEMORY_PER_BLOCK = 111,251 CU_DEVICE_ATTRIBUTE_SPARSE_CUDA_ARRAY_SUPPORTED = 112,252 CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED = 113,253 CU_DEVICE_ATTRIBUTE_TIMELINE_SEMAPHORE_INTEROP_SUPPORTED = 114,254 CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED = 115,255 CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_SUPPORTED = 116,256 CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS = 117,257 CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING = 118,258 CU_DEVICE_ATTRIBUTE_MEMPOOL_SUPPORTED_HANDLE_TYPES = 119,259 CU_DEVICE_ATTRIBUTE_MAX,260} CUdevice_attribute;261 262typedef enum CUfunction_attribute_enum {263 CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0,264 CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8,265} CUfunction_attribute;266 267typedef enum CUctx_flags_enum {268 CU_CTX_SCHED_BLOCKING_SYNC = 0x04,269 CU_CTX_SCHED_MASK = 0x07,270} CUctx_flags;271 272typedef enum CUmemAttach_flags_enum {273 CU_MEM_ATTACH_GLOBAL = 0x1,274 CU_MEM_ATTACH_HOST = 0x2,275 CU_MEM_ATTACH_SINGLE = 0x4,276} CUmemAttach_flags;277 278typedef enum CUcomputeMode_enum {279 CU_COMPUTEMODE_DEFAULT = 0,280 CU_COMPUTEMODE_PROHIBITED = 2,281 CU_COMPUTEMODE_EXCLUSIVE_PROCESS = 3,282} CUcompute_mode;283 284typedef enum CUevent_flags_enum {285 CU_EVENT_DEFAULT = 0x0,286 CU_EVENT_BLOCKING_SYNC = 0x1,287 CU_EVENT_DISABLE_TIMING = 0x2,288 CU_EVENT_INTERPROCESS = 0x4289} CUevent_flags;290 291static inline void *CU_LAUNCH_PARAM_END = (void *)0x00;292static inline void *CU_LAUNCH_PARAM_BUFFER_POINTER = (void *)0x01;293static inline void *CU_LAUNCH_PARAM_BUFFER_SIZE = (void *)0x02;294 295typedef void (*CUstreamCallback)(CUstream, CUresult, void *);296typedef size_t (*CUoccupancyB2DSize)(int);297 298CUresult cuCtxGetDevice(CUdevice *);299CUresult cuDeviceGet(CUdevice *, int);300CUresult cuDeviceGetAttribute(int *, CUdevice_attribute, CUdevice);301CUresult cuDeviceGetCount(int *);302CUresult cuFuncGetAttribute(int *, CUfunction_attribute, CUfunction);303CUresult cuFuncSetAttribute(CUfunction, CUfunction_attribute, int);304 305// Device info306CUresult cuDeviceGetName(char *, int, CUdevice);307CUresult cuDeviceGetUuid(CUuuid *, CUdevice);308CUresult cuDeviceTotalMem(size_t *, CUdevice);309CUresult cuDriverGetVersion(int *);310 311CUresult cuGetErrorString(CUresult, const char **);312CUresult cuInit(unsigned);313CUresult cuLaunchKernel(CUfunction, unsigned, unsigned, unsigned, unsigned,314 unsigned, unsigned, unsigned, CUstream, void **,315 void **);316CUresult cuLaunchHostFunc(CUstream, CUhostFn, void *);317 318CUresult cuMemAlloc(CUdeviceptr *, size_t);319CUresult cuMemAllocHost(void **, size_t);320CUresult cuMemAllocManaged(CUdeviceptr *, size_t, unsigned int);321CUresult cuMemAllocAsync(CUdeviceptr *, size_t, CUstream);322 323CUresult cuMemcpyDtoDAsync(CUdeviceptr, CUdeviceptr, size_t, CUstream);324CUresult cuMemcpyDtoH(void *, CUdeviceptr, size_t);325CUresult cuMemcpyDtoHAsync(void *, CUdeviceptr, size_t, CUstream);326CUresult cuMemcpyHtoD(CUdeviceptr, const void *, size_t);327CUresult cuMemcpyHtoDAsync(CUdeviceptr, const void *, size_t, CUstream);328 329CUresult cuMemsetD8Async(CUdeviceptr, unsigned int, size_t, CUstream);330CUresult cuMemsetD16Async(CUdeviceptr, unsigned int, size_t, CUstream);331CUresult cuMemsetD32Async(CUdeviceptr, unsigned int, size_t, CUstream);332CUresult cuMemsetD2D8Async(CUdeviceptr, size_t, unsigned int, size_t, size_t,333 CUstream);334CUresult cuMemsetD2D16Async(CUdeviceptr, size_t, unsigned int, size_t, size_t,335 CUstream);336CUresult cuMemsetD2D32Async(CUdeviceptr, size_t, unsigned int, size_t, size_t,337 CUstream);338 339CUresult cuMemFree(CUdeviceptr);340CUresult cuMemFreeHost(void *);341CUresult cuMemFreeAsync(CUdeviceptr, CUstream);342 343CUresult cuModuleGetFunction(CUfunction *, CUmodule, const char *);344CUresult cuModuleGetGlobal(CUdeviceptr *, size_t *, CUmodule, const char *);345 346CUresult cuModuleUnload(CUmodule);347CUresult cuStreamCreate(CUstream *, unsigned);348CUresult cuStreamDestroy(CUstream);349CUresult cuStreamSynchronize(CUstream);350CUresult cuStreamQuery(CUstream);351CUresult cuStreamAddCallback(CUstream, CUstreamCallback, void *, unsigned int);352CUresult cuCtxSetCurrent(CUcontext);353CUresult cuDevicePrimaryCtxRelease(CUdevice);354CUresult cuDevicePrimaryCtxGetState(CUdevice, unsigned *, int *);355CUresult cuDevicePrimaryCtxSetFlags(CUdevice, unsigned);356CUresult cuDevicePrimaryCtxRetain(CUcontext *, CUdevice);357CUresult cuModuleLoadDataEx(CUmodule *, const void *, unsigned, void *,358 void **);359 360CUresult cuDeviceCanAccessPeer(int *, CUdevice, CUdevice);361CUresult cuCtxEnablePeerAccess(CUcontext, unsigned);362CUresult cuMemcpyPeerAsync(CUdeviceptr, CUcontext, CUdeviceptr, CUcontext,363 size_t, CUstream);364 365CUresult cuCtxGetLimit(size_t *, CUlimit);366CUresult cuCtxSetLimit(CUlimit, size_t);367 368CUresult cuEventCreate(CUevent *, unsigned int);369CUresult cuEventRecord(CUevent, CUstream);370CUresult cuEventQuery(CUevent);371CUresult cuStreamWaitEvent(CUstream, CUevent, unsigned int);372CUresult cuEventSynchronize(CUevent);373CUresult cuEventDestroy(CUevent);374 375CUresult cuMemUnmap(CUdeviceptr ptr, size_t size);376CUresult cuMemRelease(CUmemGenericAllocationHandle handle);377CUresult cuMemAddressFree(CUdeviceptr ptr, size_t size);378CUresult cuMemGetInfo(size_t *free, size_t *total);379CUresult cuMemAddressReserve(CUdeviceptr *ptr, size_t size, size_t alignment,380 CUdeviceptr addr, unsigned long long flags);381CUresult cuMemMap(CUdeviceptr ptr, size_t size, size_t offset,382 CUmemGenericAllocationHandle handle,383 unsigned long long flags);384CUresult cuMemCreate(CUmemGenericAllocationHandle *handle, size_t size,385 const CUmemAllocationProp *prop, unsigned long long flags);386CUresult cuMemSetAccess(CUdeviceptr ptr, size_t size,387 const CUmemAccessDesc *desc, size_t count);388CUresult cuMemGetAllocationGranularity(size_t *granularity,389 const CUmemAllocationProp *prop,390 CUmemAllocationGranularity_flags option);391CUresult cuOccupancyMaxPotentialBlockSize(int *, int *, CUfunction,392 CUoccupancyB2DSize, size_t, int);393 394#endif395