低级 CUDA 支持#

设备管理#

cupy.cuda.Device([device])

表示 CUDA 设备的类。

内存管理#

cupy.get_default_memory_pool()

返回 CuPy 用于 GPU 内存的默认内存池。

cupy.get_default_pinned_memory_pool()

返回 CuPy 用于锁定内存的默认内存池。

cupy.cuda.Memory(size_t size)

在 CUDA 设备上分配内存。

cupy.cuda.MemoryAsync(size_t size, stream)

在 CUDA 设备上异步分配内存。

cupy.cuda.ManagedMemory(size_t size)

在 CUDA 设备上分配托管内存(统一内存)。

cupy.cuda.UnownedMemory(intptr_t ptr, ...)

不由 CuPy 拥有的 CUDA 内存。

cupy.cuda.PinnedMemory(size[, flags])

在主机上分配锁定内存。

cupy.cuda.MemoryPointer(BaseMemory mem, ...)

指向设备内存上某个点的指针。

cupy.cuda.PinnedMemoryPointer(mem, ...)

锁定内存的指针。

cupy.cuda.malloc_managed(size_t size)

分配托管内存(统一内存)。

cupy.cuda.malloc_async(size_t size)

(实验性)从流有序内存分配器分配内存。

cupy.cuda.alloc(size)

调用当前分配器。

cupy.cuda.alloc_pinned_memory(size_t size)

调用当前分配器。

cupy.cuda.get_allocator()

返回当前用于 GPU 内存的分配器。

cupy.cuda.set_allocator([allocator])

设置当前用于 GPU 内存的分配器。

cupy.cuda.using_allocator([allocator])

设置一个线程本地的 GPU 内存分配器,在其内部

cupy.cuda.set_pinned_memory_allocator([...])

设置当前用于锁定内存的分配器。

cupy.cuda.MemoryPool([allocator])

主机上所有 GPU 设备的内存池。

cupy.cuda.MemoryAsyncPool([pool_handles])

(实验性)主机上所有 GPU 设备的 CUDA 内存池。

cupy.cuda.PinnedMemoryPool([allocator])

主机上锁定内存的内存池。

cupy.cuda.PythonFunctionAllocator(...)

使用 Python 函数执行内存分配的分配器。

cupy.cuda.CFunctionAllocator(intptr_t param, ...)

使用 C 函数指针指向分配例程的分配器。

内存钩子#

cupy.cuda.MemoryHook()

内存分配钩子的基类。

cupy.cuda.memory_hooks.DebugPrintHook([...])

打印调试信息的内存钩子。

cupy.cuda.memory_hooks.LineProfileHook([...])

代码行 CuPy 内存分析器。

流和事件#

cupy.cuda.Stream([null, non_blocking, ptds])

CUDA 流。

cupy.cuda.ExternalStream(ptr[, device_id])

不由 CuPy 管理的 CUDA 流。

cupy.cuda.get_current_stream(int device_id=-1)

获取指定 CUDA 设备的当前 CUDA 流。

cupy.cuda.Event([block, disable_timing, ...])

CUDA 事件,CUDA 流的同步点。

cupy.cuda.get_elapsed_time(start_event, ...)

获取两个事件之间的经过时间。

#

cupy.cuda.Graph(*args, **kwargs)

CUDA 图对象。

纹理和表面内存#

cupy.cuda.texture.ChannelFormatDescriptor(...)

保存通道格式描述的类。

cupy.cuda.texture.CUDAarray(...)

分配可用作纹理内存的 CUDA 数组(cudaArray_t)。

cupy.cuda.texture.ResourceDescriptor(...)

保存资源描述的类。

cupy.cuda.texture.TextureDescriptor([...])

保存纹理描述的类。

cupy.cuda.texture.TextureObject(...)

保存纹理对象的类。

cupy.cuda.texture.SurfaceObject(...)

保存表面对象的类。

NVTX#

cupy.cuda.nvtx.Mark(message, int id_color=-1)

在应用程序中标记一个即时事件(标记)。

cupy.cuda.nvtx.MarkC(message, uint32_t color=0)

在应用程序中标记一个即时事件(标记)。

cupy.cuda.nvtx.RangePush(message, ...)

开始一个嵌套范围。

cupy.cuda.nvtx.RangePushC(message, ...)

开始一个嵌套范围。

cupy.cuda.nvtx.RangePop()

结束由 RangePush*() 调用开始的嵌套范围。

NCCL#

cupy.cuda.nccl.NcclCommunicator(int ndev, ...)

为一个进程控制的一个设备初始化一个 NCCL 通信器。

cupy.cuda.nccl.get_build_version()

cupy.cuda.nccl.get_version()

返回 NCCL 的运行时版本。

cupy.cuda.nccl.get_unique_id()

cupy.cuda.nccl.groupStart()

开始一组 NCCL 调用。

cupy.cuda.nccl.groupEnd()

结束一组 NCCL 调用。

版本#

cupy.cuda.get_local_runtime_version()

返回环境中安装的 CUDA Runtime 版本。

运行时 API#

CuPy 包装了 CUDA Runtime API,以提供原生 CUDA 操作。请查阅 CUDA Runtime API 文档 来使用这些函数。

cupy.cuda.runtime.driverGetVersion()

cupy.cuda.runtime.runtimeGetVersion()

返回静态链接到 CuPy 的 CUDA Runtime 版本。

cupy.cuda.runtime.getDevice()

cupy.cuda.runtime.getDeviceProperties(int device)

cupy.cuda.runtime.deviceGetAttribute(...)

cupy.cuda.runtime.deviceGetByPCIBusId(...)

cupy.cuda.runtime.deviceGetPCIBusId(int device)

cupy.cuda.runtime.deviceGetDefaultMemPool(...)

获取当前设备的默认内存池。

cupy.cuda.runtime.deviceGetMemPool(int device)

获取当前设备的当前内存池。

cupy.cuda.runtime.deviceSetMemPool(...)

将当前设备的当前内存池设置为指定的内存池。

cupy.cuda.runtime.memPoolCreate(...)

cupy.cuda.runtime.memPoolDestroy(intptr_t pool)

cupy.cuda.runtime.memPoolTrimTo(...)

cupy.cuda.runtime.getDeviceCount()

cupy.cuda.runtime.setDevice(int device)

cupy.cuda.runtime.deviceSynchronize()

cupy.cuda.runtime.deviceCanAccessPeer(...)

cupy.cuda.runtime.deviceEnablePeerAccess(...)

cupy.cuda.runtime.deviceGetLimit(int limit)

cupy.cuda.runtime.deviceSetLimit(int limit, ...)

cupy.cuda.runtime.malloc(size_t size)

cupy.cuda.runtime.mallocManaged(size_t size, ...)

cupy.cuda.runtime.malloc3DArray(...)

cupy.cuda.runtime.mallocArray(...)

cupy.cuda.runtime.mallocAsync(size_t size, ...)

cupy.cuda.runtime.mallocFromPoolAsync(...)

cupy.cuda.runtime.hostAlloc(size_t size, ...)

cupy.cuda.runtime.hostRegister(intptr_t ptr, ...)

cupy.cuda.runtime.hostUnregister(intptr_t ptr)

cupy.cuda.runtime.free(intptr_t ptr)

cupy.cuda.runtime.freeHost(intptr_t ptr)

cupy.cuda.runtime.freeArray(intptr_t ptr)

cupy.cuda.runtime.freeAsync(intptr_t ptr, ...)

cupy.cuda.runtime.memGetInfo()

cupy.cuda.runtime.memcpy(intptr_t dst, ...)

cupy.cuda.runtime.memcpyAsync(intptr_t dst, ...)

cupy.cuda.runtime.memcpyPeer(intptr_t dst, ...)

cupy.cuda.runtime.memcpyPeerAsync(...)

cupy.cuda.runtime.memcpy2D(intptr_t dst, ...)

cupy.cuda.runtime.memcpy2DAsync(...)

cupy.cuda.runtime.memcpy2DFromArray(...)

cupy.cuda.runtime.memcpy2DFromArrayAsync(...)

cupy.cuda.runtime.memcpy2DToArray(...)

cupy.cuda.runtime.memcpy2DToArrayAsync(...)

cupy.cuda.runtime.memcpy3D(...)

cupy.cuda.runtime.memcpy3DAsync(...)

cupy.cuda.runtime.memset(intptr_t ptr, ...)

cupy.cuda.runtime.memsetAsync(intptr_t ptr, ...)

cupy.cuda.runtime.memPrefetchAsync(...)

cupy.cuda.runtime.memAdvise(intptr_t devPtr, ...)

cupy.cuda.runtime.pointerGetAttributes(...)

cupy.cuda.runtime.streamCreate()

cupy.cuda.runtime.streamCreateWithFlags(...)

cupy.cuda.runtime.streamDestroy(intptr_t stream)

cupy.cuda.runtime.streamSynchronize(...)

cupy.cuda.runtime.streamAddCallback(...)

cupy.cuda.runtime.streamQuery(intptr_t stream)

cupy.cuda.runtime.streamWaitEvent(...)

cupy.cuda.runtime.launchHostFunc(...)

cupy.cuda.runtime.eventCreate()

cupy.cuda.runtime.eventCreateWithFlags(...)

cupy.cuda.runtime.eventDestroy(intptr_t event)

cupy.cuda.runtime.eventElapsedTime(...)

cupy.cuda.runtime.eventQuery(intptr_t event)

cupy.cuda.runtime.eventRecord(...)

cupy.cuda.runtime.eventSynchronize(...)

cupy.cuda.runtime.ipcGetMemHandle(...)

cupy.cuda.runtime.ipcOpenMemHandle(...)

cupy.cuda.runtime.ipcCloseMemHandle(...)

cupy.cuda.runtime.ipcGetEventHandle(...)

cupy.cuda.runtime.ipcOpenEventHandle(...)

cupy.cuda.runtime.profilerStart()

启用性能分析。

cupy.cuda.runtime.profilerStop()

禁用性能分析。