brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.2 KiB · a470d6d Raw
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