低级 CUDA 支持#

设备管理#

cupy.cuda.Device([device])

表示 CUDA 设备的对象。

内存管理#

cupy.get_default_memory_pool()

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

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])

CUDA 流不由 CuPy 管理。

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.get_local_runtime_version()

返回环境中安装的 CUDA 运行时的版本。

运行时 API#

CuPy 封装了 CUDA 运行时 API 以提供原生 CUDA 操作。请查看 CUDA 运行时 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.graphDestroy(intptr_t graph)

cupy.cuda.runtime.graphExecDestroy(...)

cupy.cuda.runtime.graphInstantiate(...)

cupy.cuda.runtime.graphLaunch(...)

cupy.cuda.runtime.graphUpload(...)

cupy.cuda.runtime.profilerStart()

启用性能分析。

cupy.cuda.runtime.profilerStop()

禁用性能分析。