6.24. 图管理

本节介绍底层 CUDA 驱动程序应用程序编程接口的图管理功能。

函数

CUresult cuDeviceGetGraphMemAttribute ( CUdevice device, CUgraphMem_attribute attr, void* value )
查询与图相关的异步分配属性。
CUresult cuDeviceGraphMemTrim ( CUdevice device )
释放缓存在指定设备上用于图的未使用内存,返回给操作系统。
CUresult cuDeviceSetGraphMemAttribute ( CUdevice device, CUgraphMem_attribute attr, void* value )
设置与图相关的异步分配属性。
CUresult cuGraphAddBatchMemOpNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
创建一个批量内存操作节点并将其添加到图中。
CUresult cuGraphAddChildGraphNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraph childGraph )
创建一个子图节点并将其添加到图中。
CUresult cuGraphAddDependencies ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, size_t numDependencies )
向图中添加依赖边。
CUresult cuGraphAddDependencies_v2 ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies )
向图中添加依赖边 (12.3+)。
CUresult cuGraphAddEmptyNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies )
创建一个空节点并将其添加到图中。
CUresult cuGraphAddEventRecordNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event )
创建一个事件记录节点并将其添加到图中。
CUresult cuGraphAddEventWaitNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event )
创建一个事件等待节点并将其添加到图中。
CUresult cuGraphAddExternalSemaphoresSignalNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
创建一个外部信号量信号节点并将其添加到图中。
CUresult cuGraphAddExternalSemaphoresWaitNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
创建一个外部信号量等待节点并将其添加到图中。
CUresult cuGraphAddHostNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_HOST_NODE_PARAMS* nodeParams )
创建一个主机执行节点并将其添加到图中。
CUresult cuGraphAddKernelNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
创建一个内核执行节点并将其添加到图中。
CUresult cuGraphAddMemAllocNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUDA_MEM_ALLOC_NODE_PARAMS* nodeParams )
创建一个分配节点并将其添加到图中。
CUresult cuGraphAddMemFreeNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUdeviceptr dptr )
创建一个内存释放节点并将其添加到图中。
CUresult cuGraphAddMemcpyNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMCPY3D* copyParams, CUcontext ctx )
创建一个 memcpy 节点并将其添加到图中。
CUresult cuGraphAddMemsetNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx )
创建一个 memset 节点并将其添加到图中。
CUresult cuGraphAddNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraphNodeParams* nodeParams )
向图中添加任意类型的节点。
CUresult cuGraphAddNode_v2 ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUgraphNodeParams* nodeParams )
向图中添加任意类型的节点 (12.3+)。
CUresult cuGraphBatchMemOpNodeGetParams ( CUgraphNode hNode, CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams_out )
返回批量内存操作节点的参数。
CUresult cuGraphBatchMemOpNodeSetParams ( CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
设置批量内存操作节点的参数。
CUresult cuGraphChildGraphNodeGetGraph ( CUgraphNode hNode, CUgraph* phGraph )
获取子图节点的嵌入式图的句柄。
CUresult cuGraphClone ( CUgraph* phGraphClone, CUgraph originalGraph )
克隆一个图。
CUresult cuGraphConditionalHandleCreate ( CUgraphConditionalHandle* pHandle_out, CUgraph hGraph, CUcontext ctx, unsigned int  defaultLaunchValue, unsigned int  flags )
创建一个条件句柄。
CUresult cuGraphCreate ( CUgraph* phGraph, unsigned int  flags )
创建一个图。
CUresult cuGraphDebugDotPrint ( CUgraph hGraph, const char* path, unsigned int  flags )
写入描述图结构的 DOT 文件。
CUresult cuGraphDestroy ( CUgraph hGraph )
销毁一个图。
CUresult cuGraphDestroyNode ( CUgraphNode hNode )
从图中移除一个节点。
CUresult cuGraphEventRecordNodeGetEvent ( CUgraphNode hNode, CUevent* event_out )
返回与事件记录节点关联的事件。
CUresult cuGraphEventRecordNodeSetEvent ( CUgraphNode hNode, CUevent event )
设置事件记录节点的事件。
CUresult cuGraphEventWaitNodeGetEvent ( CUgraphNode hNode, CUevent* event_out )
返回与事件等待节点关联的事件。
CUresult cuGraphEventWaitNodeSetEvent ( CUgraphNode hNode, CUevent event )
设置事件等待节点的事件。
CUresult cuGraphExecBatchMemOpNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
在给定的 graphExec 中,设置批量内存操作节点的参数。
CUresult cuGraphExecChildGraphNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, CUgraph childGraph )
更新给定 graphExec 中子图节点的节点参数。
CUresult cuGraphExecDestroy ( CUgraphExec hGraphExec )
销毁可执行图。
CUresult cuGraphExecEventRecordNodeSetEvent ( CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event )
在给定的 graphExec 中,设置事件记录节点的事件。
CUresult cuGraphExecEventWaitNodeSetEvent ( CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event )
在给定的 graphExec 中,设置事件等待节点的事件。
CUresult cuGraphExecExternalSemaphoresSignalNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
在给定的 graphExec 中,设置外部信号量信号节点的参数。
CUresult cuGraphExecExternalSemaphoresWaitNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
在给定的 graphExec 中,设置外部信号量等待节点的参数。
CUresult cuGraphExecGetFlags ( CUgraphExec hGraphExec, cuuint64_t* flags )
查询可执行图的实例化标志。
CUresult cuGraphExecHostNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams )
在给定的 graphExec 中,设置主机节点的参数。
CUresult cuGraphExecKernelNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
在给定的 graphExec 中,设置内核节点的参数。
CUresult cuGraphExecMemcpyNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMCPY3D* copyParams, CUcontext ctx )
在给定的 graphExec 中,设置内存复制节点的参数。
CUresult cuGraphExecMemsetNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx )
在给定的 graphExec 中,设置内存设置节点的参数。
CUresult cuGraphExecNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, CUgraphNodeParams* nodeParams )
更新已实例化图中的图节点的参数。
CUresult cuGraphExecUpdate ( CUgraphExec hGraphExec, CUgraph hGraph, CUgraphExecUpdateResultInfo* resultInfo )
检查可执行图是否可以使用图进行更新,并在可能的情况下执行更新。
CUresult cuGraphExternalSemaphoresSignalNodeGetParams ( CUgraphNode hNode, CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* params_out )
返回外部信号量信号节点的参数。
CUresult cuGraphExternalSemaphoresSignalNodeSetParams ( CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
设置外部信号量信号节点的参数。
CUresult cuGraphExternalSemaphoresWaitNodeGetParams ( CUgraphNode hNode, CUDA_EXT_SEM_WAIT_NODE_PARAMS* params_out )
返回外部信号量等待节点的参数。
CUresult cuGraphExternalSemaphoresWaitNodeSetParams ( CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
设置外部信号量等待节点的参数。
CUresult cuGraphGetEdges ( CUgraph hGraph, CUgraphNode* from, CUgraphNode* to, size_t* numEdges )
返回图的依赖边。
CUresult cuGraphGetEdges_v2 ( CUgraph hGraph, CUgraphNode* from, CUgraphNode* to, CUgraphEdgeData* edgeData, size_t* numEdges )
返回图的依赖边 (12.3+)。
CUresult cuGraphGetNodes ( CUgraph hGraph, CUgraphNode* nodes, size_t* numNodes )
返回图的节点。
CUresult cuGraphGetRootNodes ( CUgraph hGraph, CUgraphNode* rootNodes, size_t* numRootNodes )
返回图的根节点。
CUresult cuGraphHostNodeGetParams ( CUgraphNode hNode, CUDA_HOST_NODE_PARAMS* nodeParams )
返回主机节点的参数。
CUresult cuGraphHostNodeSetParams ( CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams )
设置主机节点的参数。
CUresult cuGraphInstantiate ( CUgraphExec* phGraphExec, CUgraph hGraph, unsigned long long flags )
从图创建可执行图。
CUresult cuGraphInstantiateWithParams ( CUgraphExec* phGraphExec, CUgraph hGraph, CUDA_GRAPH_INSTANTIATE_PARAMS* instantiateParams )
从图创建可执行图。
CUresult cuGraphKernelNodeCopyAttributes ( CUgraphNode dst, CUgraphNode src )
将属性从源节点复制到目标节点。
CUresult cuGraphKernelNodeGetAttribute ( CUgraphNode hNode, CUkernelNodeAttrID attr, CUkernelNodeAttrValue* value_out )
查询节点属性。
CUresult cuGraphKernelNodeGetParams ( CUgraphNode hNode, CUDA_KERNEL_NODE_PARAMS* nodeParams )
返回内核节点的参数。
CUresult cuGraphKernelNodeSetAttribute ( CUgraphNode hNode, CUkernelNodeAttrID attr, const CUkernelNodeAttrValue* value )
设置节点属性。
CUresult cuGraphKernelNodeSetParams ( CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
设置内核节点的参数。
CUresult cuGraphLaunch ( CUgraphExec hGraphExec, CUstream hStream )
在流中启动可执行图。
CUresult cuGraphMemAllocNodeGetParams ( CUgraphNode hNode, CUDA_MEM_ALLOC_NODE_PARAMS* params_out )
返回内存分配节点的参数。
CUresult cuGraphMemFreeNodeGetParams ( CUgraphNode hNode, CUdeviceptr* dptr_out )
返回内存释放节点的参数。
CUresult cuGraphMemcpyNodeGetParams ( CUgraphNode hNode, CUDA_MEMCPY3D* nodeParams )
返回内存复制节点的参数。
CUresult cuGraphMemcpyNodeSetParams ( CUgraphNode hNode, const CUDA_MEMCPY3D* nodeParams )
设置内存复制节点的参数。
CUresult cuGraphMemsetNodeGetParams ( CUgraphNode hNode, CUDA_MEMSET_NODE_PARAMS* nodeParams )
返回内存设置节点的参数。
CUresult cuGraphMemsetNodeSetParams ( CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* nodeParams )
设置内存设置节点的参数。
CUresult cuGraphNodeFindInClone ( CUgraphNode* phNode, CUgraphNode hOriginalNode, CUgraph hClonedGraph )
在克隆图中查找节点的克隆版本。
CUresult cuGraphNodeGetDependencies ( CUgraphNode hNode, CUgraphNode* dependencies, size_t* numDependencies )
返回节点的依赖项。
CUresult cuGraphNodeGetDependencies_v2 ( CUgraphNode hNode, CUgraphNode* dependencies, CUgraphEdgeData* edgeData, size_t* numDependencies )
返回节点的依赖项 (12.3+)。
CUresult cuGraphNodeGetDependentNodes ( CUgraphNode hNode, CUgraphNode* dependentNodes, size_t* numDependentNodes )
返回节点的从属节点。
CUresult cuGraphNodeGetDependentNodes_v2 ( CUgraphNode hNode, CUgraphNode* dependentNodes, CUgraphEdgeData* edgeData, size_t* numDependentNodes )
返回节点的从属节点 (12.3+)。
CUresult cuGraphNodeGetEnabled ( CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int* isEnabled )
查询给定 graphExec 中的节点是否已启用。
CUresult cuGraphNodeGetType ( CUgraphNode hNode, CUgraphNodeType* type )
返回节点的类型。
CUresult cuGraphNodeSetEnabled ( CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int  isEnabled )
在给定的 graphExec 中,启用或禁用指定的节点。
CUresult cuGraphNodeSetParams ( CUgraphNode hNode, CUgraphNodeParams* nodeParams )
更新图节点的参数。
CUresult cuGraphReleaseUserObject ( CUgraph graph, CUuserObject object, unsigned int  count )
从图中释放用户对象引用。
CUresult cuGraphRemoveDependencies ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, size_t numDependencies )
从图中移除依赖边。
CUresult cuGraphRemoveDependencies_v2 ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies )
从图中移除依赖边 (12.3+)。
CUresult cuGraphRetainUserObject ( CUgraph graph, CUuserObject object, unsigned int  count, unsigned int  flags )
从图中保留对用户对象的引用。
CUresult cuGraphUpload ( CUgraphExec hGraphExec, CUstream hStream )
在流中上传可执行图。
CUresult cuUserObjectCreate ( CUuserObject* object_out, void* ptr, CUhostFn destroy, unsigned int  initialRefcount, unsigned int  flags )
创建用户对象。
CUresult cuUserObjectRelease ( CUuserObject object, unsigned int  count )
释放对用户对象的引用。
CUresult cuUserObjectRetain ( CUuserObject object, unsigned int  count )
保留对用户对象的引用。

函数

CUresult cuDeviceGetGraphMemAttribute ( CUdevice device, CUgraphMem_attribute attr, void* value )
查询与图相关的异步分配属性。
参数
device
- 指定查询的范围
attr
- 要获取的属性
value
- 检索到的值
描述

有效的属性包括

另请参阅

cuDeviceSetGraphMemAttribute, cuGraphAddMemAllocNode, cuGraphAddMemFreeNode

CUresult cuDeviceGraphMemTrim ( CUdevice device )
将设备上为图缓存的未使用内存释放回操作系统。
参数
device
- 应该释放缓存内存的设备。
描述

当前未被正在执行或计划执行的图使用的块将被释放回操作系统。

另请参阅

cuGraphAddMemAllocNode, cuGraphAddMemFreeNode, cuDeviceSetGraphMemAttribute, cuDeviceGetGraphMemAttribute

CUresult cuDeviceSetGraphMemAttribute ( CUdevice device, CUgraphMem_attribute attr, void* value )
设置与图相关的异步分配属性。
参数
device
- 指定查询的范围
attr
- 要获取的属性
value
- 指向要设置的值的指针
描述

有效的属性包括

另请参阅

cuDeviceGetGraphMemAttribute, cuGraphAddMemAllocNode, cuGraphAddMemFreeNode

CUresult cuGraphAddBatchMemOpNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
创建批量内存操作节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 节点的参数
描述

创建一个新的批量内存操作节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

返回。 当添加节点时,nodeParams中的 paramArray 被复制,因此在调用返回后可以释放它。

注意

警告:不正确地使用此 API 可能会导致应用程序死锁。通过此 API 建立的同步顺序对于 CUDA 是不可见的。 由此 API 排序(即使是间接排序)的 CUDA 任务也应使用 CUDA 可见的依赖项(例如事件)来表达该顺序。 这确保了调度程序不会以不正确的顺序序列化它们。 有关更多信息,请参阅编程指南中的流内存操作部分 (https://docs.nvda.net.cn/cuda/cuda-c-programming-guide/index.html)。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuStreamBatchMemOp, cuStreamWaitValue32, cuStreamWriteValue32, cuStreamWaitValue64, cuStreamWriteValue64, cuGraphBatchMemOpNodeGetParams, cuGraphBatchMemOpNodeSetParams, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddChildGraphNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraph childGraph )
创建子图节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
childGraph
- 要克隆到此节点的图
描述

创建一个执行嵌入式图的新节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

如果hGraph包含分配或释放节点,则此调用将返回错误。

该节点执行嵌入式子图。 子图在此调用中被克隆。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphChildGraphNodeGetGraph, cuGraphCreate, cuGraphDestroyNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode, cuGraphClone

CUresult cuGraphAddDependencies ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, size_t numDependencies )
向图中添加依赖边。
参数
hGraph
- 向其添加依赖项的图
from
- 提供依赖项的节点数组
to
- 依赖节点数组
numDependencies
- 要添加的依赖项数量
描述

要添加的依赖项数量由numDependencies定义。fromto中相应索引处的元素定义一个依赖项。fromto中的每个节点都必须属于hGraph.

如果numDependencies。 如果fromto中的元素。 指定现有依赖项将返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphRemoveDependencies, cuGraphGetEdges, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphAddDependencies_v2 ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies )
向图中添加依赖边 (12.3+)。
参数
hGraph
- 向其添加依赖项的图
from
- 提供依赖项的节点数组
to
- 依赖节点数组
edgeData
- 可选的边数据数组。 如果为 NULL,则假定为默认(零)边数据。
numDependencies
- 要添加的依赖项数量
描述

要添加的依赖项数量由numDependencies定义。fromto中相应索引处的元素定义一个依赖项。fromto中的每个节点都必须属于hGraph.

如果numDependencies。 如果fromto中的元素。 指定现有依赖项将返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphRemoveDependencies, cuGraphGetEdges, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphAddEmptyNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies )
创建一个空节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
描述

创建一个新的不执行任何操作的节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

。 空节点在执行期间不执行任何操作,但可用于传递排序。 例如,具有 2 组 n 个节点的阶段性执行图,它们之间有一个屏障,可以使用一个空节点和 2*n 个依赖边来表示,而不是没有空节点和 n^2 个依赖边。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddEventRecordNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event )
创建一个事件记录节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
event
- 节点的事件
描述

创建一个新的事件记录节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies中指定的事件。event。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

每次启动图时,都将记录event以捕获节点依赖项的执行。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphAddEventWaitNode, cuEventRecordWithFlags, cuStreamWaitEvent, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddEventWaitNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event )
创建一个事件等待节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
event
- 节点的事件
描述

创建一个新的事件等待节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies中指定的事件。event。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

中捕获的所有工作。event有关事件捕获内容的详细信息,请参阅 cuEventRecord()event可能来自与启动流不同的上下文或设备。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphAddEventRecordNode, cuEventRecordWithFlags, cuStreamWaitEvent, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddExternalSemaphoresSignalNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
创建一个外部信号量信号节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 节点的参数
描述

创建一个新的外部信号量信号节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

。 启动节点后,对一组外部分配的信号量对象执行信号操作。 操作将在节点的所有依赖项完成后发生。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphExternalSemaphoresSignalNodeGetParams, cuGraphExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuImportExternalSemaphore, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync, cuGraphCreate, cuGraphDestroyNode, cuGraphAddEventRecordNode, cuGraphAddEventWaitNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddExternalSemaphoresWaitNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
创建一个外部信号量等待节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 节点的参数
描述

创建一个新的外部信号量等待节点,并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

。 启动节点后,对一组外部分配的信号量对象执行等待操作。 节点的依赖项在等待操作完成之前不会启动。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphExternalSemaphoresWaitNodeGetParams, cuGraphExternalSemaphoresWaitNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphAddExternalSemaphoresSignalNode, cuImportExternalSemaphore, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync, cuGraphCreate, cuGraphDestroyNode, cuGraphAddEventRecordNode, cuGraphAddEventWaitNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddHostNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_HOST_NODE_PARAMS* nodeParams )
创建主机执行节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 主机节点的参数
描述

创建新的 CPU 执行节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

当图启动时,该节点将调用指定的 CPU 函数。在 MPS 和 Volta 之前的 GPU 中不支持主机节点。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuLaunchHostFunc, cuGraphHostNodeGetParams, cuGraphHostNodeSetParams, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddKernelNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
创建内核执行节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- GPU 执行节点的参数
描述

创建新的内核执行节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

CUDA_KERNEL_NODE_PARAMS 结构体定义为

‎  typedef struct CUDA_KERNEL_NODE_PARAMS_st {
            CUfunction func;
            unsigned int gridDimX;
            unsigned int gridDimY;
            unsigned int gridDimZ;
            unsigned int blockDimX;
            unsigned int blockDimY;
            unsigned int blockDimZ;
            unsigned int sharedMemBytes;
            void **kernelParams;
            void **extra;
            CUkernel kern;
            CUcontext ctx;
        } CUDA_KERNEL_NODE_PARAMS;

当图启动时,该节点将调用内核func在 (gridDimXxgridDimYxgridDimZ) 网格的块上。每个块包含 (blockDimXxblockDimYxblockDimZ) 线程。

sharedMemBytes设置每个线程块可用的动态共享内存量。

内核参数func可以通过以下两种方式之一指定

1) 可以通过kernelParams指定内核参数。如果内核有 N 个参数,则kernelParams需要是一个包含 N 个指针的数组。每个指针,从kernelParams[0] 到kernelParams[N-1],指向实际参数将从中复制的内存区域。内核参数的数量及其偏移量和大小不需要指定,因为这些信息直接从内核的映像中检索。

2) 非协作内核的内核参数也可以由应用程序打包到单个缓冲区中,并通过extra传入。这会将了解每个内核参数的大小以及缓冲区内的对齐/填充的负担放在应用程序身上。extra参数的存在是为了允许此函数接受其他不太常用的参数。extra指定额外设置的名称列表及其对应的值。每个额外的设置名称紧随其后是对应的值。列表必须以 NULL 或 CU_LAUNCH_PARAM_END 结尾。

如果内核参数同时使用kernelParamsextra(即kernelParamsextra都为非 NULL),则会返回错误 CUDA_ERROR_INVALID_VALUE。如果extra用于协作内核,则会返回 CUDA_ERROR_INVALID_VALUE

在调用期间,会复制kernelParamsextra数组,以及它指向的参数值。

注意

使用图启动的内核不得使用纹理和表面引用。通过任何纹理或表面引用进行读取或写入是未定义的行为。此限制不适用于纹理和表面对象。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuLaunchKernel, cuLaunchCooperativeKernel, cuGraphKernelNodeGetParams, cuGraphKernelNodeSetParams, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddHostNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddMemAllocNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUDA_MEM_ALLOC_NODE_PARAMS* nodeParams )
创建分配节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 节点的参数
描述

创建新的分配节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

cuGraphAddMemAllocNode 创建分配节点时,它会在nodeParams.dptr中返回分配的地址。分配的地址在实例化和启动期间保持不变。

如果在同一图中释放分配,方法是使用 cuGraphAddMemFreeNode 创建一个释放节点,则位于分配节点之后但在释放节点之前的节点可以访问该分配。这些分配不能在拥有图之外释放,并且在拥有图中只能释放一次。

如果未在同一图中释放分配,则不仅图中位于分配节点之后的节点可以访问它,而且图中执行之后但在分配释放之前的流操作也可以访问它。

未在同一图中释放的分配可以通过以下方式释放:

不可能在拥有图和另一个图中都释放分配。如果在同一图中释放了分配,则不能将释放节点添加到另一个图中。如果在另一个图中释放了分配,则不能再将释放节点添加到拥有图中。

以下限制适用于包含分配和/或内存释放节点的图:

  • 图的节点和边不能删除。

  • 该图不能在子节点中使用。

  • 在任何时间点,图中只能存在一个实例化。

  • 该图不能被克隆。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphAddMemFreeNode, cuGraphMemAllocNodeGetParams, cuDeviceGraphMemTrim, cuDeviceGetGraphMemAttribute, cuDeviceSetGraphMemAttribute, cuMemAllocAsync, cuMemFreeAsync, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddEventRecordNode, cuGraphAddEventWaitNode, cuGraphAddExternalSemaphoresSignalNode, cuGraphAddExternalSemaphoresWaitNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddMemFreeNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUdeviceptr dptr )
创建内存释放节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
dptr
- 要释放的内存地址
描述

创建新的内存释放节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies以及在以下项中指定的参数nodeParams。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

如果用户尝试在同一图中释放

以下限制适用于包含分配和/或内存释放节点的图:

  • 图的节点和边不能删除。

  • 该图不能在子节点中使用。

  • 在任何时间点,图中只能存在一个实例化。

  • 该图不能被克隆。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphAddMemAllocNode, cuGraphMemFreeNodeGetParams, cuDeviceGraphMemTrim, cuDeviceGetGraphMemAttribute, cuDeviceSetGraphMemAttribute, cuMemAllocAsync, cuMemFreeAsync, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddEventRecordNode, cuGraphAddEventWaitNode, cuGraphAddExternalSemaphoresSignalNode, cuGraphAddExternalSemaphoresWaitNode, cuGraphAddKernelNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphAddMemcpyNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMCPY3D* copyParams, CUcontext ctx )
创建 memcpy 节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
copyParams
- 内存复制的参数
ctx
- 在其上运行节点的上下文
描述

创建新的 memcpy 节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

当图启动时,该节点将执行由copyParams描述的 memcpy 操作。有关结构及其限制的说明,请参阅 cuMemcpy3D()

如果系统包含至少一个设备,其设备属性 CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS 的值为零,则 memcpy 节点对托管内存有一些额外的限制。如果一个或多个操作数引用托管内存,则对于这些操作数,不允许使用内存类型 CU_MEMORYTYPE_UNIFIED。托管内存将被视为驻留在主机或设备上,具体取决于指定的内存类型。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuMemcpy3D, cuGraphMemcpyNodeGetParams, cuGraphMemcpyNodeSetParams, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemsetNode

CUresult cuGraphAddMemsetNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx )
创建 memset 节点并将其添加到图中。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
memsetParams
- 内存设置的参数
ctx
- 在其上运行节点的上下文
描述

创建新的 memset 节点并将其添加到hGraph使用numDependencies通过以下方式指定的依赖项dependencies。 可以为numDependencies为 0,在这种情况下,节点将放置在图的根目录。dependencies可能没有任何重复条目。 新节点的句柄将在phGraphNode.

元素大小必须为 1、2 或 4 字节。当图启动时,该节点将执行由memsetParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuMemsetD2D32, cuGraphMemsetNodeGetParams, cuGraphMemsetNodeSetParams, cuGraphCreate, cuGraphDestroyNode, cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemcpyNode

CUresult cuGraphAddNode ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraphNodeParams* nodeParams )
向图中添加任意类型的节点。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
numDependencies
- 依赖项的数量
nodeParams
- 节点的规范
描述

hGraph中创建一个新节点,由nodeParams使用numDependencies通过以下方式指定的依赖项dependencies. numDependencies描述。 可能为 0。dependencies如果numDependencies为 0,则可能为空。dependencies可能没有重复条目。

nodeParams是一个标记联合。节点类型应在type字段中指定,类型特定的参数在相应的联合成员中指定。所有未使用的字节 - 即reserved0以及所有超出已使用联合成员的字节 - 必须设置为零。建议使用大括号初始化或 memset 来确保所有字节都已初始化。

请注意,对于某些节点类型,nodeParams可能包含在调用期间修改的“输出参数”,例如nodeParams->alloc.dptr.

新节点的句柄将在phGraphNode.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphNodeSetParams, cuGraphExecNodeSetParams

CUresult cuGraphAddNode_v2 ( CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUgraphNodeParams* nodeParams )
向图中添加任意类型的节点 (12.3+)。
参数
phGraphNode
- 返回新创建的节点
hGraph
- 要向其添加节点的图
dependencies
- 节点的依赖项
dependencyData
- 依赖项的可选边缘数据。如果为 NULL,则假定所有依赖项的数据均为默认值(零值)。
numDependencies
- 依赖项的数量
nodeParams
- 节点的规范
描述

hGraph中创建一个新节点,由nodeParams使用numDependencies通过以下方式指定的依赖项dependencies. numDependencies描述。 可能为 0。dependencies如果numDependencies为 0,则可能为空。dependencies可能没有重复条目。

nodeParams是一个标记联合。节点类型应在type字段中指定,类型特定的参数在相应的联合成员中指定。所有未使用的字节 - 即reserved0以及所有超出已使用联合成员的字节 - 必须设置为零。建议使用大括号初始化或 memset 来确保所有字节都已初始化。

请注意,对于某些节点类型,nodeParams可能包含在调用期间修改的“输出参数”,例如nodeParams->alloc.dptr.

新节点的句柄将在phGraphNode.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphNodeSetParams, cuGraphExecNodeSetParams

CUresult cuGraphBatchMemOpNodeGetParams ( CUgraphNode hNode, CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams_out )
返回批量内存操作节点的参数。
参数
hNode
- 要获取其参数的节点
nodeParams_out
- 用于返回参数的指针
描述

返回批量内存操作节点的参数hNodenodeParams_out中。 在paramArray中返回的nodeParams_out由节点拥有。此内存保持有效,直到节点被销毁或其参数被修改,并且不应直接修改。使用 cuGraphBatchMemOpNodeSetParams 更新此节点的参数。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuStreamBatchMemOp, cuGraphAddBatchMemOpNode, cuGraphBatchMemOpNodeSetParams

CUresult cuGraphBatchMemOpNodeSetParams ( CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
设置批量内存操作节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置批量内存操作节点的参数hNodetonodeParams.

中的 paramArraynodeParams中的 paramArray 被复制,因此在调用返回后可以释放它。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuStreamBatchMemOp, cuGraphAddBatchMemOpNode, cuGraphBatchMemOpNodeGetParams

CUresult cuGraphChildGraphNodeGetGraph ( CUgraphNode hNode, CUgraph* phGraph )
获取子图节点的嵌入式图的句柄。
参数
hNode
- 要获取嵌入式图的节点
phGraph
- 用于存储图句柄的位置
描述

获取子图节点中嵌入式图的句柄。此调用不克隆图。对图的更改将反映在节点中,并且节点保留图的所有权。

分配和释放节点无法添加到返回的图中。尝试这样做将返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddChildGraphNode, cuGraphNodeFindInClone

CUresult cuGraphClone ( CUgraph* phGraphClone, CUgraph originalGraph )
克隆图。
参数
phGraphClone
- 返回新创建的克隆图
originalGraph
- 要克隆的图
描述

此函数创建originalGraph的副本,并在phGraphClone中返回它。所有参数都复制到克隆图中。在此调用之后,可以修改原始图,而不会影响克隆。

原始图中的子图节点将递归复制到克隆中。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphNodeFindInClone

CUresult cuGraphConditionalHandleCreate ( CUgraphConditionalHandle* pHandle_out, CUgraph hGraph, CUcontext ctx, unsigned int  defaultLaunchValue, unsigned int  flags )
创建条件句柄。
参数
pHandle_out
- 用于向调用方返回句柄的指针。
hGraph
- 将包含使用此句柄的条件节点的图。
ctx
- 句柄和关联条件节点的上下文。
defaultLaunchValue
- 条件变量的可选初始值。如果在flags.
flags
中设置了 CU_GRAPH_COND_ASSIGN_DEFAULT,则在每次图形执行开始时应用。
描述

创建与hGraph.

关联的条件句柄。条件句柄必须与此图或其子图之一中的条件节点关联。

未与条件节点关联的句柄可能会导致图实例化失败。

句柄只能从与其关联的上下文中设置。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode

CUresult cuGraphCreate ( CUgraph* phGraph, unsigned int  flags )
创建图。
参数
phGraph
- 返回新创建的图
flags
- 图形创建标志,必须为 0
描述

创建一个空图,该图通过phGraph.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

返回。cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode, cuGraphInstantiate, cuGraphDestroy, cuGraphGetNodes, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphClone

CUresult cuGraphDebugDotPrint ( CUgraph hGraph, const char* path, unsigned int  flags )
写入描述图结构的 DOT 文件。
参数
hGraph
- 从其创建 DOT 文件的图
path
- 要将 DOT 文件写入到的路径
flags
- 来自 CUgraphDebugDot_flags 的标志,用于指定要写入的附加节点信息
描述

使用提供的hGraph,写入到path图中,一个 DOT 格式的图描述。默认情况下,这包括图拓扑、节点类型、节点 ID、内核名称和 memcpy 方向。flags可以指定以写入有关每种节点类型的更详细信息,例如参数值、内核属性、节点和函数句柄。

CUresult cuGraphDestroy ( CUgraph hGraph )
销毁图。
参数
hGraph
- 要销毁的图
描述

销毁由hGraph指定的图及其所有节点。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate

CUresult cuGraphDestroyNode ( CUgraphNode hNode )
从图中移除节点。
参数
hNode
- 要移除的节点
描述

hNode的图中移除。此操作还会切断其他节点对hNode的任何依赖关系,反之亦然。

属于包含分配或释放节点的图的节点无法销毁。任何尝试这样做都将返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddChildGraphNode, cuGraphAddEmptyNode, cuGraphAddKernelNode, cuGraphAddHostNode, cuGraphAddMemcpyNode, cuGraphAddMemsetNode

CUresult cuGraphEventRecordNodeGetEvent ( CUgraphNode hNode, CUevent* event_out )
返回与事件记录节点关联的事件。
参数
hNode
- 要获取事件的节点
event_out
- 用于返回事件的指针
描述

返回事件记录节点的事件hNodeevent_out.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddEventRecordNode, cuGraphEventRecordNodeSetEvent, cuGraphEventWaitNodeGetEvent, cuEventRecordWithFlags, cuStreamWaitEvent

CUresult cuGraphEventRecordNodeSetEvent ( CUgraphNode hNode, CUevent event )
设置事件记录节点的事件。
参数
hNode
- 要设置事件的节点
event
- 要使用的事件
描述

设置事件记录节点的事件hNodetoevent.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuGraphAddEventRecordNode, cuGraphEventRecordNodeGetEvent, cuGraphEventWaitNodeSetEvent, cuEventRecordWithFlags, cuStreamWaitEvent

CUresult cuGraphEventWaitNodeGetEvent ( CUgraphNode hNode, CUevent* event_out )
返回与事件等待节点关联的事件。
参数
hNode
- 要获取事件的节点
event_out
- 用于返回事件的指针
描述

返回事件等待节点的事件hNodeevent_out.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddEventWaitNode, cuGraphEventWaitNodeSetEvent, cuGraphEventRecordNodeGetEvent, cuEventRecordWithFlags, cuStreamWaitEvent

CUresult cuGraphEventWaitNodeSetEvent ( CUgraphNode hNode, CUevent event )
设置事件等待节点的事件。
参数
hNode
- 要设置事件的节点
event
- 要使用的事件
描述

设置事件等待节点的事件hNodetoevent.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuGraphAddEventWaitNode, cuGraphEventWaitNodeGetEvent, cuGraphEventRecordNodeSetEvent, cuEventRecordWithFlags, cuStreamWaitEvent

CUresult cuGraphExecBatchMemOpNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams )
设置给定 graphExec 中批量内存操作节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 从实例化 graphExec 的图中的批量内存操作节点
nodeParams
- 要设置的更新参数
描述

设置可执行图中批量内存操作节点的参数hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

以下操作字段可以在可执行图上修改:

op.waitValue.address op.waitValue.value[64] op.waitValue.flags 对应于等待类型的位(即,CU_STREAM_WAIT_VALUE_FLUSH 位无法修改) op.writeValue.address op.writeValue.value[64]

其他字段(例如上下文、操作计数或类型以及其他类型的操作(例如 membars))可能无法修改。

hNode不得从原始图中删除。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

中的 paramArraynodeParams中的 paramArray 被复制,因此在调用返回后可以释放它。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuStreamBatchMemOp, cuGraphAddBatchMemOpNode, cuGraphBatchMemOpNodeGetParams, cuGraphBatchMemOpNodeSetParams, cuGraphInstantiate

CUresult cuGraphExecChildGraphNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, CUgraph childGraph )
更新给定 graphExec 中子图节点中的节点参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自用于实例化 graphExec 的图的主机节点
childGraph
- 提供更新参数的图
描述

更新hNodehGraphExec表示的工作,就好像hNode 的图中包含的节点在实例化时具有childGraph 的节点中的参数一样。hNode必须保留在用于实例化hGraphExec的图中。更改的与hNode的边缘将被忽略。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

的拓扑结构childGraph以及节点插入顺序,必须与hNode中包含的图的拓扑结构匹配。 有关在实例化的图中可以更新的内容的限制列表,请参见 cuGraphExecUpdate()。更新是递归的,因此顶级子图内包含的子图节点也将被更新。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddChildGraphNode, cuGraphChildGraphNodeGetGraph, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecDestroy ( CUgraphExec hGraphExec )
销毁可执行图。
参数
hGraphExec
- 要销毁的可执行图
描述

销毁由hGraphExec指定的可执行图及其所有可执行节点。如果可执行图正在运行中,则不会终止它,而是在完成后异步释放。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate, cuGraphUpload, cuGraphLaunch

CUresult cuGraphExecEventRecordNodeSetEvent ( CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event )
设置给定 graphExec 中事件记录节点的事件。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自实例化 graphExec 的图的事件记录节点
event
- 要使用的更新事件
描述

设置可执行图中事件记录节点的事件hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddEventRecordNode, cuGraphEventRecordNodeGetEvent, cuGraphEventWaitNodeSetEvent, cuEventRecordWithFlags, cuStreamWaitEvent, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecEventWaitNodeSetEvent ( CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event )
在给定 graphExec 中设置事件等待节点的事件。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的事件等待节点
event
- 要使用的更新事件
描述

在可执行图中设置事件等待节点的事件hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddEventWaitNode, cuGraphEventWaitNodeGetEvent, cuGraphEventRecordNodeSetEvent, cuEventRecordWithFlags, cuStreamWaitEvent, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecExternalSemaphoresSignalNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
在给定 graphExec 中设置外部信号量信号节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的信号量信号节点
nodeParams
- 要设置的更新参数
描述

在可执行图中设置外部信号量信号节点的参数hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

hNode不得从原始图中删除。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

更改nodeParams->numExtSems不受支持。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddExternalSemaphoresSignalNode, cuImportExternalSemaphore, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecExternalSemaphoresWaitNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
在给定 graphExec 中设置外部信号量等待节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的信号量等待节点
nodeParams
- 要设置的更新参数
描述

在可执行图中设置外部信号量等待节点的参数hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

hNode不得从原始图中删除。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

更改nodeParams->numExtSems不受支持。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuImportExternalSemaphore, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecGetFlags ( CUgraphExec hGraphExec, cuuint64_t* flags )
查询可执行图的实例化标志。
参数
hGraphExec
- 要查询的可执行图
flags
- 返回实例化标志
描述

返回传递给给定可执行图的实例化的标志。 CUDA_GRAPH_INSTANTIATE_FLAG_UPLOAD 不会由此 API 返回,因为它不影响生成的可执行图。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate, cuGraphInstantiateWithParams

CUresult cuGraphExecHostNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams )
在给定 graphExec 中设置主机节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自用于实例化 graphExec 的图的主机节点
nodeParams
- 要设置的更新参数
描述

更新hNodehGraphExec就像hNode包含在nodeParams实例化时一样。hNode 必须保留在用于实例化的图中hGraphExec。更改的进出 hNode 的边将被忽略。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec不受此调用的影响。hNode 也不会被此调用修改。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddHostNode, cuGraphHostNodeSetParams, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecKernelNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
在给定 graphExec 中设置内核节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的内核节点
nodeParams
- 要设置的更新参数
描述

在可执行图中设置内核节点的参数hGraphExec。该节点由hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

hNode必须未从原始图中删除。所有nodeParams字段都可以更改,但以下限制适用于func更新

  • 函数的所属上下文无法更改。

  • 最初其函数未使用 CUDA 动态并行性的节点无法更新为使用 CDP 的函数

  • 最初其函数未进行设备端更新调用的节点无法更新为进行设备端更新调用的函数。

  • 如果hGraphExec未针对设备启动实例化,最初其函数未使用设备端 cudaGraphLaunch() 的节点无法更新为使用设备端 cudaGraphLaunch() 的函数,除非该节点与在实例化时包含此类调用的节点位于同一上下文中。如果在实例化时不存在此类调用,则根本无法执行这些更新。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

如果hNode是设备可更新的内核节点,则

的下一次上传/启动hGraphExec将覆盖任何先前的设备端更新。此外,在从设备更新设备可更新的内核节点时,对该节点应用主机更新将导致未定义的行为。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddKernelNode, cuGraphKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecMemcpyNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMCPY3D* copyParams, CUcontext ctx )
在给定 graphExec 中设置 memcpy 节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自用于实例化 graphExec 的图的 Memcpy 节点
copyParams
- 要设置的更新参数
ctx
- 在其上运行节点的上下文
描述

更新hNodehGraphExec就像hNode包含在copyParams实例化时一样。hNode 必须保留在用于实例化的图中hGraphExec。更改的进出 hNode 的边将被忽略。

中的源内存和目标内存copyParams必须从与原始源内存和目标内存相同的上下文中分配。实例化时内存操作数和

中的内存操作数copyParams都必须是一维的。不支持零长度操作。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec不受此调用的影响。hNode 也不会被此调用修改。

如果内存操作数的映射已更改,或者原始或新内存操作数是多维的,则返回 CUDA_ERROR_INVALID_VALUE。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddMemcpyNode, cuGraphMemcpyNodeSetParams, cuGraphExecKernelNodeSetParams, cuGraphExecMemsetNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecMemsetNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx )
在给定 graphExec 中设置 memset 节点的参数。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自用于实例化 graphExec 的图的 Memset 节点
memsetParams
- 要设置的更新参数
ctx
- 在其上运行节点的上下文
描述

更新hNodehGraphExec就像hNode包含在memsetParams实例化时一样。hNode 必须保留在用于实例化的图中hGraphExec。更改的进出 hNode 的边将被忽略。

不支持零大小操作。

memsetParams 中的新目标指针必须与原始目标指针的分配类型相同,并且具有与原始目标指针相同的上下文关联和设备映射。

值和指针地址都可以更新。更改 memset 的其他方面(宽度、高度、元素大小或间距)可能会导致更新被拒绝。具体而言,对于 2d memset,所有尺寸更改都会被拒绝。对于 1d memset,显式拒绝高度的更改,如果生成的工作映射到已为节点分配的工作资源,则机会性地允许其他更改。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec不受此调用的影响。hNode 也不会被此调用修改。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphExecNodeSetParams, cuGraphAddMemsetNode, cuGraphMemsetNodeSetParams, cuGraphExecKernelNodeSetParams, cuGraphExecMemcpyNodeSetParams, cuGraphExecHostNodeSetParams, cuGraphExecChildGraphNodeSetParams, cuGraphExecEventRecordNodeSetEvent, cuGraphExecEventWaitNodeSetEvent, cuGraphExecExternalSemaphoresSignalNodeSetParams, cuGraphExecExternalSemaphoresWaitNodeSetParams, cuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecNodeSetParams ( CUgraphExec hGraphExec, CUgraphNode hNode, CUgraphNodeParams* nodeParams )
更新实例化图中图节点的参数。
参数
hGraphExec
- 要在其中更新指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的相应节点
nodeParams
- 要设置的更新参数
描述

在可执行图中设置节点的参数hGraphExec。该节点由hNode在从中实例化可执行图的非可执行图中。hNode不得从原始图中删除。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

允许对可执行图上的参数进行以下更改

节点类型

允许的更改

内核

请参阅 cuGraphExecKernelNodeSetParams

memcpy

如果在一维副本的地址分配在同一上下文中;请参阅 cuGraphExecMemcpyNodeSetParams

memset

如果在一维 memset 的地址分配在同一上下文中;请参阅 cuGraphExecMemsetNodeSetParams

主机

无限制

子图

拓扑必须匹配,并且限制以递归方式应用;请参阅 cuGraphExecUpdate

事件等待

无限制

事件记录

无限制

外部信号量信号

信号量操作的数量不能更改

外部信号量等待

信号量操作的数量不能更改

内存分配

API 不支持

内存释放

API 不支持

批量内存操作

等待操作的地址、值和操作类型;请参阅 cuGraphExecBatchMemOpNodeSetParams

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphNodeSetParamscuGraphExecUpdate, cuGraphInstantiate

CUresult cuGraphExecUpdate ( CUgraphExec hGraphExec, CUgraph hGraph, CUgraphExecUpdateResultInfo* resultInfo )
检查是否可以使用一个图更新可执行图,并在可能的情况下执行更新。
参数
hGraphExec
要更新的已实例化图
hGraph
包含更新参数的图
resultInfo
错误信息结构
描述

更新由以下项指定的已实例化图中的节点参数hGraphExec使用由以下项指定的拓扑结构相同的图中的节点参数hGraph.

限制

  • 内核节点
    • 函数的所属上下文无法更改。

    • 最初其函数未使用 CUDA 动态并行性的节点无法更新为使用 CDP 的函数。

    • 最初其函数未进行设备端更新调用的节点无法更新为进行设备端更新调用的函数。

    • 协作节点不能更新为非协作节点,反之亦然。

    • 如果图是使用 CUDA_GRAPH_INSTANTIATE_FLAG_USE_NODE_PRIORITY 实例化的,则优先级属性不能更改。相等性检查最初请求的优先级值,在它们被限制到设备支持的范围之前。

    • 如果hGraphExec未针对设备启动实例化,最初其函数未使用设备端 cudaGraphLaunch() 的节点无法更新为使用设备端 cudaGraphLaunch() 的函数,除非该节点与在实例化时包含此类调用的节点位于同一上下文中。如果在实例化时不存在此类调用,则根本无法执行这些更新。

    • 既不是hGraph也不是hGraphExec可能包含设备可更新的内核节点。

  • Memset 和 memcpy 节点
    • 操作数分配/映射到的 CUDA 设备不能更改。

    • 源/目标内存必须从与原始源/目标内存相同的上下文中分配。

    • 对于 2d memset,只能更新地址和赋值。

    • 对于 1d memset,也允许更新维度,但如果结果操作没有映射到已为节点分配的工作资源,则可能会失败。

  • 额外的 memcpy 节点限制
    • 不支持更改源或目标内存类型(即 CU_MEMORYTYPE_DEVICE、CU_MEMORYTYPE_ARRAY 等)。

  • 外部信号量等待节点和记录节点
    • 不支持更改信号量的数量。

  • 条件节点
    • 不支持更改节点参数。

    • 条件体图内节点的参数更改受上述规则约束。

    • 条件句柄标志和默认值作为图更新的一部分进行更新。

注意:API 可能会在未来的版本中添加更多限制。应始终检查返回代码。

cuGraphExecUpdate 设置了 result 成员resultInfo在以下条件下设置为 CU_GRAPH_EXEC_UPDATE_ERROR_TOPOLOGY_CHANGED

  • 直接在以下项中的节点计数hGraphExechGraph不同,在这种情况下,resultInfo->errorNode 设置为 NULL。

  • hGraph具有比以下项更多的退出节点hGraph,在这种情况下,resultInfo->errorNode 设置为 hGraph 中的一个退出节点。

  • 以下项中的节点hGraph具有与来自以下项的节点不同数量的依赖项hGraphExec它与之配对,在这种情况下,resultInfo->errorNode 设置为来自以下项的节点hGraph.

  • 以下项中的节点hGraph具有与来自以下项的配对节点的相应依赖项不匹配的依赖项hGraphExec。resultInfo->errorNode 将设置为来自以下项的节点hGraph。resultInfo->errorFromNode 将设置为不匹配的依赖项。依赖项基于边顺序配对,当节点已经基于图中检查的其他边配对时,依赖项不匹配。

cuGraphExecUpdate 设置了 result 成员resultInfoto

  • 如果传递了无效值,则为 CU_GRAPH_EXEC_UPDATE_ERROR。

  • 如果图拓扑结构已更改,则为 CU_GRAPH_EXEC_UPDATE_ERROR_TOPOLOGY_CHANGED

  • 如果节点类型已更改,则为 CU_GRAPH_EXEC_UPDATE_ERROR_NODE_TYPE_CHANGED,在这种情况下hErrorNode_out设置为来自以下项的节点hGraph.

  • 如果函数以不支持的方式更改,则为 CU_GRAPH_EXEC_UPDATE_ERROR_UNSUPPORTED_FUNCTION_CHANGE(请参阅上面的注释),在这种情况下hErrorNode_out设置为来自以下项的节点hGraph

  • 如果节点的任何参数以不支持的方式更改,则为 CU_GRAPH_EXEC_UPDATE_ERROR_PARAMETERS_CHANGED,在这种情况下hErrorNode_out设置为来自以下项的节点hGraph.

  • 如果节点的任何属性以不支持的方式更改,则为 CU_GRAPH_EXEC_UPDATE_ERROR_ATTRIBUTES_CHANGED,在这种情况下hErrorNode_out设置为来自以下项的节点hGraph.

  • 如果节点中的某些内容不受支持,例如节点类型或配置,则为 CU_GRAPH_EXEC_UPDATE_ERROR_NOT_SUPPORTED,在这种情况下hErrorNode_out设置为来自以下项的节点hGraph

如果更新因上面未列出的原因而失败,则 result 成员resultInfo将设置为 CU_GRAPH_EXEC_UPDATE_ERROR。如果更新成功,则 result 成员将设置为 CU_GRAPH_EXEC_UPDATE_SUCCESS。

当更新成功执行时,cuGraphExecUpdate 返回 CUDA_SUCCESS。如果由于图更新包含违反实例化图更新特定约束的更改而未执行图更新,则返回 CUDA_ERROR_GRAPH_EXEC_UPDATE_FAILURE。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate

CUresult cuGraphExternalSemaphoresSignalNodeGetParams ( CUgraphNode hNode, CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* params_out )
返回外部信号量信号节点的参数。
参数
hNode
- 要获取其参数的节点
params_out
- 用于返回参数的指针
描述

返回外部信号量信号节点的参数hNodeparams_out中。 在extSemArrayparamsArray中返回的params_out, 由节点拥有。此内存保持有效,直到节点被销毁或其参数被修改,并且不应直接修改。使用 cuGraphExternalSemaphoresSignalNodeSetParams 更新此节点的参数。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuLaunchKernel, cuGraphAddExternalSemaphoresSignalNode, cuGraphExternalSemaphoresSignalNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync

CUresult cuGraphExternalSemaphoresSignalNodeSetParams ( CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams )
设置外部信号量信号节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置外部信号量信号节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuGraphAddExternalSemaphoresSignalNode, cuGraphExternalSemaphoresSignalNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync

CUresult cuGraphExternalSemaphoresWaitNodeGetParams ( CUgraphNode hNode, CUDA_EXT_SEM_WAIT_NODE_PARAMS* params_out )
返回外部信号量等待节点的参数。
参数
hNode
- 要获取其参数的节点
params_out
- 用于返回参数的指针
描述

返回外部信号量等待节点的参数hNodeparams_out中。 在extSemArrayparamsArray中返回的params_out, 由节点拥有。此内存保持有效,直到节点被销毁或其参数被修改,并且不应直接修改。使用 cuGraphExternalSemaphoresSignalNodeSetParams 更新此节点的参数。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuLaunchKernel, cuGraphAddExternalSemaphoresWaitNode, cuGraphExternalSemaphoresWaitNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync

CUresult cuGraphExternalSemaphoresWaitNodeSetParams ( CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams )
设置外部信号量等待节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置外部信号量等待节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuGraphExternalSemaphoresWaitNodeSetParams, cuGraphAddExternalSemaphoresWaitNode, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync

CUresult cuGraphGetEdges ( CUgraph hGraph, CUgraphNode* from, CUgraphNode* to, size_t* numEdges )
返回图的依赖边。
参数
hGraph
- 从中获取边的图
from
- 返回边端点的位置
to
- 返回边端点的位置
numEdges
- 请参阅描述
描述

返回列表hGraph 的依赖边。边通过以下项中相应的索引返回fromto;也就是说,以下项中的节点to[i] 依赖于以下项中的节点from[i]。fromto可能都为 NULL,在这种情况下,此函数仅返回以下项中的边数numEdges。否则,numEdges条目将被填充。如果numEdges高于边的实际数量,则以下项中剩余的条目fromto将设置为 NULL,并且实际返回的边数将写入numEdges.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphGetNodes, cuGraphGetRootNodes, cuGraphAddDependencies, cuGraphRemoveDependencies, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphGetEdges_v2 ( CUgraph hGraph, CUgraphNode* from, CUgraphNode* to, CUgraphEdgeData* edgeData, size_t* numEdges )
返回图的依赖边 (12.3+)。
参数
hGraph
- 从中获取边的图
from
- 返回边端点的位置
to
- 返回边端点的位置
edgeData
- 返回边数据的可选位置
numEdges
- 请参阅描述
描述

返回列表hGraph 的依赖边。边通过以下项中相应的索引返回from, toedgeData;也就是说,以下项中的节点to[i] 依赖于以下项中的节点from带有数据的 [i]edgeData[i]。fromto可能都为 NULL,在这种情况下,此函数仅返回以下项中的边数numEdges。否则,numEdges条目将被填充。如果numEdges高于边的实际数量,则以下项中剩余的条目fromto将设置为 NULL,并且实际返回的边数将写入numEdges. edgeData可能单独为 NULL,在这种情况下,边都必须具有默认(零)边数据。尝试通过 NULL 进行有损查询edgeData将导致 CUDA_ERROR_LOSSY_QUERY。如果edgeData为非 NULL,则fromto也必须为非 NULL。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphGetNodes, cuGraphGetRootNodes, cuGraphAddDependencies, cuGraphRemoveDependencies, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphGetNodes ( CUgraph hGraph, CUgraphNode* nodes, size_t* numNodes )
返回图的节点。
参数
hGraph
- 要查询的图
nodes
- 返回节点的指针
numNodes
- 请参阅描述
描述

返回列表hGraph 的节点。nodes可能为 NULL,在这种情况下,此函数将返回以下项中的节点数numNodes。否则,numNodes条目将被填充。如果numNodes高于节点的实际数量,则以下项中剩余的条目nodes将设置为 NULL,并且实际获得的节点数将返回到numNodes.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphNodeGetType, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphGetRootNodes ( CUgraph hGraph, CUgraphNode* rootNodes, size_t* numRootNodes )
返回图的根节点。
参数
hGraph
- 要查询的图
rootNodes
- 返回根节点的指针
numRootNodes
- 请参阅描述
描述

返回列表hGraph 的根节点。rootNodes可能为 NULL,在这种情况下,此函数将返回以下项中的根节点数numRootNodes。否则,numRootNodes条目将被填充。如果numRootNodes高于根节点的实际数量,则以下项中剩余的条目rootNodes将设置为 NULL,并且实际获得的节点数将返回到numRootNodes.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphGetNodes, cuGraphGetEdges, cuGraphNodeGetType, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphHostNodeGetParams ( CUgraphNode hNode, CUDA_HOST_NODE_PARAMS* nodeParams )
返回主机节点的参数。
参数
hNode
- 要获取其参数的节点
nodeParams
- 用于返回参数的指针
描述

返回主机节点的参数hNodenodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuLaunchHostFunc, cuGraphAddHostNode, cuGraphHostNodeSetParams

CUresult cuGraphHostNodeSetParams ( CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams )
设置主机节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置主机节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuLaunchHostFunc, cuGraphAddHostNode, cuGraphHostNodeGetParams

CUresult cuGraphInstantiate ( CUgraphExec* phGraphExec, CUgraph hGraph, unsigned long long flags )
从图创建可执行图。
参数
phGraphExec
- 返回实例化的图
hGraph
- 要实例化的图
flags
- 控制实例化的标志。请参阅 CUgraphInstantiate_flags
描述

实例化hGraph作为可执行图。图将针对任何结构约束或先前未验证的节点内约束进行验证。如果实例化成功,则实例化的图的句柄将在以下项中返回phGraphExec.

在调用期间,会复制flags参数控制实例化和后续图启动的行为。有效标志为

  • CUDA_GRAPH_INSTANTIATE_FLAG_USE_NODE_PRIORITY,它使图在执行期间使用来自每个节点属性的优先级,而不是启动流的优先级。请注意,优先级仅在内核节点上可用,并且在流捕获期间从流优先级复制。

如果hGraph包含任何分配或释放节点,则对于该图,一次最多只能存在一个可执行图。在销毁第一个可执行图之前尝试实例化第二个可执行图与 cuGraphExecDestroy 将导致错误。如果以下情况也适用hGraph包含任何设备可更新的内核节点。

如果hGraph包含从多个上下文调用设备端 cudaGraphLaunch() 的内核,这将导致错误。

为在设备上启动而实例化的图具有不适用于主机图的附加限制

  • 图的节点必须驻留在单个上下文中。

  • 图只能包含内核节点、memcpy 节点、memset 节点和子图节点。

  • 图不能为空,并且必须至少包含一个内核、memcpy 或 memset 节点。操作特定的限制在下面概述。

  • 内核节点
    • 不允许使用 CUDA 动态并行性。

    • 只要不使用 MPS,就允许协作启动。

  • Memcpy 节点
    • 仅允许涉及设备内存和/或pinned设备映射的主机内存的副本。

    • 不允许涉及 CUDA 数组的副本。

    • 两个操作数都必须可以从当前上下文访问,并且当前上下文必须与图中其他节点的上下文匹配。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate, cuGraphCreate, cuGraphUpload, cuGraphLaunch, cuGraphExecDestroy

CUresult cuGraphInstantiateWithParams ( CUgraphExec* phGraphExec, CUgraph hGraph, CUDA_GRAPH_INSTANTIATE_PARAMS* instantiateParams )
从图创建可执行图。
参数
phGraphExec
- 返回实例化的图
hGraph
- 要实例化的图
instantiateParams
- 实例化参数
描述

实例化hGraph根据以下项作为可执行图instantiateParams结构。图将针对任何结构约束或先前未验证的节点内约束进行验证。如果实例化成功,则实例化的图的句柄将在以下项中返回phGraphExec.

instantiateParams控制实例化和后续图启动的行为,以及在发生错误时返回更详细的信息。CUDA_GRAPH_INSTANTIATE_PARAMS 定义为

‎    typedef struct {
              cuuint64_t flags;
              CUstream hUploadStream;
              CUgraphNode hErrNode_out;
              CUgraphInstantiateResult result_out;
          } CUDA_GRAPH_INSTANTIATE_PARAMS;

在调用期间,会复制flags字段控制实例化和后续图启动的行为。有效标志为

  • CUDA_GRAPH_INSTANTIATE_FLAG_USE_NODE_PRIORITY,它使图在执行期间使用来自每个节点属性的优先级,而不是启动流的优先级。请注意,优先级仅在内核节点上可用,并且在流捕获期间从流优先级复制。

如果hGraph包含任何分配或释放节点,则对于该图,一次最多只能存在一个可执行图。在销毁第一个可执行图之前尝试实例化第二个可执行图与 cuGraphExecDestroy 将导致错误。如果以下情况也适用hGraph包含任何设备可更新的内核节点。

如果hGraph包含从多个上下文调用设备端 cudaGraphLaunch() 的内核,这将导致错误。

为在设备上启动而实例化的图具有不适用于主机图的附加限制

  • 图的节点必须驻留在单个上下文中。

  • 图只能包含内核节点、memcpy 节点、memset 节点和子图节点。

  • 图不能为空,并且必须至少包含一个内核、memcpy 或 memset 节点。操作特定的限制在下面概述。

  • 内核节点
    • 不允许使用 CUDA 动态并行性。

    • 只要不使用 MPS,就允许协作启动。

  • Memcpy 节点
    • 仅允许涉及设备内存和/或pinned设备映射的主机内存的副本。

    • 不允许涉及 CUDA 数组的副本。

    • 两个操作数都必须可以从当前上下文访问,并且当前上下文必须与图中其他节点的上下文匹配。

如果发生错误,则result_outhErrNode_out字段将包含有关错误性质的更多信息。可能的错误报告包括

如果实例化成功,result_out将设置为 CUDA_GRAPH_INSTANTIATE_SUCCESS,并且hErrNode_out将设置为 NULL。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphCreate, cuGraphInstantiate, cuGraphExecDestroy

CUresult cuGraphKernelNodeCopyAttributes ( CUgraphNode dst, CUgraphNode src )
将属性从源节点复制到目标节点。
参数
dst
目标节点
src
源节点。有关属性列表,请参阅 CUkernelNodeAttrID
描述

将属性从源节点复制src到目标节点dst。两个节点必须具有相同的上下文。

注意

请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

CUaccessPolicyWindow

CUresult cuGraphKernelNodeGetAttribute ( CUgraphNode hNode, CUkernelNodeAttrID attr, CUkernelNodeAttrValue* value_out )
查询节点属性。
参数
hNode
attr
value_out
描述

查询属性attr来自节点hNode并将其存储在以下项的相应成员中value_out.

注意

请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

CUaccessPolicyWindow

CUresult cuGraphKernelNodeGetParams ( CUgraphNode hNode, CUDA_KERNEL_NODE_PARAMS* nodeParams )
返回内核节点的参数。
参数
hNode
- 要获取其参数的节点
nodeParams
- 用于返回参数的指针
描述

返回内核节点的参数hNodenodeParams中。 在kernelParamsextra返回的数组位于nodeParams,以及它指向的参数值,都归节点所有。此内存保持有效,直到节点被销毁或其参数被修改,并且不应直接修改。使用 cuGraphKernelNodeSetParams 来更新此节点的参数。

参数将包含以下两者之一kernelParamsextra,具体取决于最近在节点上设置的是哪个。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuLaunchKernel, cuGraphAddKernelNode, cuGraphKernelNodeSetParams

CUresult cuGraphKernelNodeSetAttribute ( CUgraphNode hNode, CUkernelNodeAttrID attr, const CUkernelNodeAttrValue* value )
设置节点属性。
参数
hNode
attr
value
描述

设置属性attr在节点上hNode来自相应的属性value.

注意

请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

CUaccessPolicyWindow

CUresult cuGraphKernelNodeSetParams ( CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams )
设置内核节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置内核节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuLaunchKernel, cuGraphAddKernelNode, cuGraphKernelNodeGetParams

CUresult cuGraphLaunch ( CUgraphExec hGraphExec, CUstream hStream )
在流中启动可执行图。
参数
hGraphExec
- 要启动的可执行图
hStream
- 在其中启动图的流
描述

执行hGraphExechStream。一次只能执行一个hGraphExec实例。每次启动都排在hStream中的任何先前工作以及任何先前启动的hGraphExec之后。要并发执行图,必须将其多次实例化为多个可执行图。

如果hGraphExec创建的任何分配(来自先前的启动)仍然未释放,并且hGraphExec在实例化时未使用 CUDA_GRAPH_INSTANTIATE_FLAG_AUTO_FREE_ON_LAUNCH,则启动将失败并返回 CUDA_ERROR_INVALID_VALUE

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate, cuGraphUpload, cuGraphExecDestroy

CUresult cuGraphMemAllocNodeGetParams ( CUgraphNode hNode, CUDA_MEM_ALLOC_NODE_PARAMS* params_out )
返回内存分配节点的参数。
参数
hNode
- 要获取其参数的节点
params_out
- 用于返回参数的指针
描述

返回内存分配节点的参数hNodeparams_out中。 在poolPropsaccessDescs中返回的params_out,都归节点所有。此内存保持有效,直到节点被销毁。返回的参数不得修改。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddMemAllocNode, cuGraphMemFreeNodeGetParams

CUresult cuGraphMemFreeNodeGetParams ( CUgraphNode hNode, CUdeviceptr* dptr_out )
返回内存释放节点的参数。
参数
hNode
- 要获取其参数的节点
dptr_out
- 指向返回设备地址的指针
描述

返回内存释放节点的地址hNodedptr_out.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddMemFreeNode, cuGraphMemAllocNodeGetParams

CUresult cuGraphMemcpyNodeGetParams ( CUgraphNode hNode, CUDA_MEMCPY3D* nodeParams )
返回 memcpy 节点的参数。
参数
hNode
- 要获取其参数的节点
nodeParams
- 用于返回参数的指针
描述

返回 memcpy 节点的参数hNodenodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuMemcpy3D, cuGraphAddMemcpyNode, cuGraphMemcpyNodeSetParams

CUresult cuGraphMemcpyNodeSetParams ( CUgraphNode hNode, const CUDA_MEMCPY3D* nodeParams )
设置 memcpy 节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置 memcpy 节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuMemcpy3D, cuGraphAddMemcpyNode, cuGraphMemcpyNodeGetParams

CUresult cuGraphMemsetNodeGetParams ( CUgraphNode hNode, CUDA_MEMSET_NODE_PARAMS* nodeParams )
返回 memset 节点的参数。
参数
hNode
- 要获取其参数的节点
nodeParams
- 用于返回参数的指针
描述

返回 memset 节点的参数hNodenodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuMemsetD2D32, cuGraphAddMemsetNode, cuGraphMemsetNodeSetParams

CUresult cuGraphMemsetNodeSetParams ( CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* nodeParams )
设置 memset 节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置 memset 节点的参数hNodetonodeParams.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetParams, cuMemsetD2D32, cuGraphAddMemsetNode, cuGraphMemsetNodeGetParams

CUresult cuGraphNodeFindInClone ( CUgraphNode* phNode, CUgraphNode hOriginalNode, CUgraph hClonedGraph )
查找节点的克隆版本。
参数
phNode
- 返回克隆节点的句柄
hOriginalNode
- 原始节点的句柄
hClonedGraph
- 要查询的克隆图
描述

此函数返回hClonedGraph中对应于hOriginalNode在原始图中的节点。

hClonedGraph必须已从hOriginalGraph通过 cuGraphClone 克隆。hOriginalNode必须在调用 cuGraphClone 时位于hOriginalGraph中,并且hClonedGraph中的相应克隆节点不得被移除。然后,克隆节点通过phClonedNode.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

返回。

CUresult cuGraphNodeGetDependencies ( CUgraphNode hNode, CUgraphNode* dependencies, size_t* numDependencies )
返回节点的依赖项。
参数
hNode
- 要查询的节点
dependencies
- 指向返回依赖项的指针
numDependencies
- 请参阅描述
描述

返回列表节点的依赖项。dependencies可以为 NULL,在这种情况下,此函数将返回numDependencies。否则,numDependencies条目将被填充。如果numDependencies中的依赖项数量。如果dependencies将设置为 NULL,并且实际获得的节点数将返回到numDependencies.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeGetDependentNodes, cuGraphGetNodes, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphAddDependencies, cuGraphRemoveDependencies

CUresult cuGraphNodeGetDependencies_v2 ( CUgraphNode hNode, CUgraphNode* dependencies, CUgraphEdgeData* edgeData, size_t* numDependencies )
返回节点的依赖项 (12.3+)。
参数
hNode
- 要查询的节点
dependencies
- 指向返回依赖项的指针
edgeData
- 可选数组,用于返回每个依赖项的边数据
numDependencies
- 请参阅描述
描述

返回列表节点的依赖项。dependencies可以为 NULL,在这种情况下,此函数将返回numDependencies。否则,numDependencies条目将被填充。如果numDependencies中的依赖项数量。如果dependencies将设置为 NULL,并且实际获得的节点数将返回到numDependencies.

请注意,如果边具有非零(非默认)边数据,并且edgeData为 NULL,则此 API 将返回 CUDA_ERROR_LOSSY_QUERY。如果edgeData为非 NULL,则dependencies也必须为非 NULL。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeGetDependentNodes, cuGraphGetNodes, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphAddDependencies, cuGraphRemoveDependencies

CUresult cuGraphNodeGetDependentNodes ( CUgraphNode hNode, CUgraphNode* dependentNodes, size_t* numDependentNodes )
返回节点的从属节点。
参数
hNode
- 要查询的节点
dependentNodes
- 指向返回从属节点的指针
numDependentNodes
- 请参阅描述
描述

返回列表节点的从属节点。dependentNodes可以为 NULL,在这种情况下,此函数将返回numDependentNodes。否则,numDependentNodes条目将被填充。如果numDependentNodes中的从属节点数量。如果dependentNodes将设置为 NULL,并且实际获得的节点数将返回到numDependentNodes.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeGetDependencies, cuGraphGetNodes, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphAddDependencies, cuGraphRemoveDependencies

CUresult cuGraphNodeGetDependentNodes_v2 ( CUgraphNode hNode, CUgraphNode* dependentNodes, CUgraphEdgeData* edgeData, size_t* numDependentNodes )
返回节点的从属节点 (12.3+)。
参数
hNode
- 要查询的节点
dependentNodes
- 指向返回从属节点的指针
edgeData
- 可选指针,用于返回从属节点的边数据
numDependentNodes
- 请参阅描述
描述

返回列表节点的从属节点。dependentNodes可以为 NULL,在这种情况下,此函数将返回numDependentNodes。否则,numDependentNodes条目将被填充。如果numDependentNodes中的从属节点数量。如果dependentNodes将设置为 NULL,并且实际获得的节点数将返回到numDependentNodes.

请注意,如果边具有非零(非默认)边数据,并且edgeData为 NULL,则此 API 将返回 CUDA_ERROR_LOSSY_QUERY。如果edgeData为非 NULL,则dependentNodes也必须为非 NULL。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeGetDependencies, cuGraphGetNodes, cuGraphGetRootNodes, cuGraphGetEdges, cuGraphAddDependencies, cuGraphRemoveDependencies

CUresult cuGraphNodeGetEnabled ( CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int* isEnabled )
查询给定 graphExec 中的节点是否已启用。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的节点
isEnabled
- 返回节点启用状态的位置
描述

如果hNode已启用,则将 isEnabled 设置为 1;如果hNode已禁用,则设置为 0。

节点由对应的节点hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

hNode不得从原始图中删除。

注意
  • 标识。目前仅支持内核节点、memset 节点和 memcpy 节点。

  • 此函数不会反映设备可更新内核节点的设备端更新。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeSetEnabled, cuGraphExecUpdate, cuGraphInstantiatecuGraphLaunch

CUresult cuGraphNodeGetType ( CUgraphNode hNode, CUgraphNodeType* type )
返回节点的类型。
参数
hNode
- 要查询的节点
type
- 指向返回节点类型的指针
CUresult cuGraphNodeSetEnabled ( CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int  isEnabled )
启用或禁用给定 graphExec 中的指定节点。
参数
hGraphExec
- 要在其中设置指定节点的可执行图
hNode
- 来自从中实例化 graphExec 的图的节点
isEnabled
- 如果 != 0,则节点已启用;否则节点已禁用
描述

设置hNode为启用或禁用。禁用的节点在功能上等同于空节点,直到它们被重新启用。现有节点参数不受禁用/启用节点的影响。

节点由对应的节点hNode中对应的节点标识,该节点来自实例化可执行图的非可执行图。

hNode不得从原始图中删除。

修改仅影响未来的hGraphExec启动。已排队或正在运行的hGraphExec启动不受此调用的影响。hNode也不会被此调用修改。

如果hNode是设备可更新的内核节点,则

的下一次上传/启动hGraphExec将覆盖任何先前的设备端更新。此外,在从设备更新设备可更新的内核节点时,对该节点应用主机更新将导致未定义的行为。

注意

标识。目前仅支持内核节点、memset 节点和 memcpy 节点。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphNodeGetEnabled, cuGraphExecUpdate, cuGraphInstantiatecuGraphLaunch

CUresult cuGraphNodeSetParams ( CUgraphNode hNode, CUgraphNodeParams* nodeParams )
更新图节点的参数。
参数
hNode
- 要设置参数的节点
nodeParams
- 要复制的参数
描述

设置图节点的参数hNodetonodeParams。由nodeParams->type指定的节点类型必须与hNode. nodeParams的类型匹配。必须完全初始化,并且所有未使用的字节(保留、填充)都必须归零。

节点类型 CU_GRAPH_NODE_TYPE_MEM_ALLOC 和 CU_GRAPH_NODE_TYPE_MEM_FREE 不支持修改参数。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddNode, cuGraphExecNodeSetParams

CUresult cuGraphReleaseUserObject ( CUgraph graph, CUuserObject object, unsigned int  count )
从图中释放用户对象引用。
参数
graph
- 将释放引用的图
object
- 要释放引用的用户对象
count
- 要释放的引用数量,通常为 1。必须为非零且不大于 INT_MAX。
描述

释放图拥有的用户对象引用。

有关用户对象的更多信息,请参阅 CUDA C++ 编程指南中的 CUDA 用户对象。

另请参阅

cuUserObjectCreate, cuUserObjectRetain, cuUserObjectRelease, cuGraphRetainUserObject, cuGraphCreate

CUresult cuGraphRemoveDependencies ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, size_t numDependencies )
从图中移除依赖边。
参数
hGraph
- 要从中移除依赖项的图
from
- 提供依赖项的节点数组
to
- 依赖节点数组
numDependencies
- 要移除的依赖项数量
描述

要移除的dependencies数量由numDependencies定义。fromto中相应索引处的元素定义一个依赖项。fromto中的每个节点都必须属于hGraph.

如果numDependencies。 如果fromto中的元素将被忽略。指定不存在的依赖项将返回错误。

无法从包含分配或释放节点的图中移除依赖项。任何尝试这样做都会返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddDependencies, cuGraphGetEdges, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphRemoveDependencies_v2 ( CUgraph hGraph, const CUgraphNode* from, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies )
从图中移除依赖边 (12.3+)。
参数
hGraph
- 要从中移除依赖项的图
from
- 提供依赖项的节点数组
to
- 依赖节点数组
edgeData
- 可选的边数据数组。如果为 NULL,则假定边数据为默认值(零值)。
numDependencies
- 要移除的依赖项数量
描述

要移除的dependencies数量由numDependencies定义。fromto中相应索引处的元素定义一个依赖项。fromto中的每个节点都必须属于hGraph.

如果numDependencies。 如果fromto将被忽略。指定图中不存在的边,且数据与edgeData匹配,将导致错误。edgeData可以为空,这等效于为每条边传递默认(零值)数据。

无法从包含分配或释放节点的图中移除依赖项。任何尝试这样做都会返回错误。

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphAddDependencies, cuGraphGetEdges, cuGraphNodeGetDependencies, cuGraphNodeGetDependentNodes

CUresult cuGraphRetainUserObject ( CUgraph graph, CUuserObject object, unsigned int  count, unsigned int  flags )
从图中保留对用户对象的引用。
参数
graph
- 要将引用关联到的图
object
- 要保留引用的用户对象
count
- 要添加到图中的引用数量,通常为 1。必须为非零且不大于 INT_MAX。
flags
- 可选标志 CU_GRAPH_USER_OBJECT_MOVE 从调用线程传输引用,而不是创建新引用。传递 0 以创建新引用。
描述

创建或移动将由 CUDA 图拥有的用户对象引用。

有关用户对象的更多信息,请参阅 CUDA C++ 编程指南中的 CUDA 用户对象。

另请参阅

cuUserObjectCreate, cuUserObjectRetain, cuUserObjectRelease, cuGraphReleaseUserObject, cuGraphCreate

CUresult cuGraphUpload ( CUgraphExec hGraphExec, CUstream hStream )
在流中上传可执行图。
参数
hGraphExec
- 要上传的可执行图
hStream
- 在其中上传图的流
描述

上传hGraphExechStream中的设备,而不执行它。同一hGraphExec的上传将被序列化。每次上传都排在hStream中的任何先前工作以及任何先前启动的hGraphExec中任何先前工作之后。使用缓存的内存来支持hGraphExec.

注意
  • 图对象不是线程安全的。 更多信息请点击此处

  • 请注意,此函数也可能返回先前异步启动的错误代码。

另请参阅

cuGraphInstantiate, cuGraphLaunch, cuGraphExecDestroy

CUresult cuUserObjectCreate ( CUuserObject* object_out, void* ptr, CUhostFn destroy, unsigned int  initialRefcount, unsigned int  flags )
创建用户对象。
参数
object_out
- 返回用户对象句柄的位置
ptr
- 传递给销毁函数的指针
destroy
- 不再使用用户对象时用于释放用户对象的回调
initialRefcount
- 创建对象时的初始引用计数,通常为 1。初始引用由调用线程拥有。
flags
- 当前需要传递 CU_USER_OBJECT_NO_DESTRUCTOR_SYNC,这是唯一定义的标志。 这表示销毁回调函数不能被任何 CUDA API 等待。 需要同步回调的用户应手动发出完成信号。
描述

创建具有指定析构函数回调和初始引用计数的用户对象。 初始引用由调用者拥有。

析构函数回调不能进行 CUDA API 调用,并且应避免阻塞行为,因为它们由共享的内部线程执行。 如果另一个线程不会阻塞通过 CUDA 调度的任务的向前进度,则可以向该线程发出信号以执行此类操作。

有关用户对象的更多信息,请参阅 CUDA C++ 编程指南中的 CUDA 用户对象。

另请参阅

cuUserObjectRetain, cuUserObjectRelease, cuGraphRetainUserObject, cuGraphReleaseUserObject, cuGraphCreate

CUresult cuUserObjectRelease ( CUuserObject object, unsigned int  count )
释放对用户对象的引用。
参数
object
- 要释放的对象
count
- 要释放的引用数量,通常为 1。必须为非零且不大于 INT_MAX。
描述

释放调用者拥有的用户对象引用。 如果引用计数达到零,则调用对象的析构函数。

释放调用者未拥有的引用,或在所有引用释放后使用用户对象句柄,是未定义的行为。

有关用户对象的更多信息,请参阅 CUDA C++ 编程指南中的 CUDA 用户对象。

另请参阅

cuUserObjectCreate, cuUserObjectRetain, cuGraphRetainUserObject, cuGraphReleaseUserObject, cuGraphCreate

CUresult cuUserObjectRetain ( CUuserObject object, unsigned int  count )
保留对用户对象的引用。
参数
object
- 要保留的对象
count
- 要保留的引用数量,通常为 1。 必须为非零且不大于 INT_MAX。
描述

保留对用户对象的新引用。 新引用由调用者拥有。

有关用户对象的更多信息,请参阅 CUDA C++ 编程指南中的 CUDA 用户对象。

另请参阅

cuUserObjectCreate, cuUserObjectRelease, cuGraphRetainUserObject, cuGraphReleaseUserObject, cuGraphCreate