Implement cuGraphExecUpdate_v2

This commit is contained in:
Violet 2025-09-25 23:07:29 +00:00
commit 05aed3b400
3 changed files with 46 additions and 1 deletions

View file

@ -1,3 +1,4 @@
use cuda_types::cuda::CUgraphExecUpdateResult;
use hip_runtime_sys::*;
pub(crate) unsafe fn destroy(graph: hipGraph_t) -> hipError_t {
@ -8,6 +9,48 @@ pub(crate) unsafe fn exec_destroy(graph_exec: hipGraphExec_t) -> hipError_t {
hipGraphExecDestroy(graph_exec)
}
pub(crate) fn exec_update_v2(
h_graph_exec: hipGraphExec_t,
h_graph: hipGraph_t,
result_info: &mut cuda_types::cuda::CUgraphExecUpdateResultInfo,
) -> hipError_t {
let mut h_error_node: hipGraphNode_t = unsafe { std::mem::zeroed() };
let mut update_result: hipGraphExecUpdateResult = unsafe { std::mem::zeroed() };
unsafe { hipGraphExecUpdate(h_graph_exec, h_graph, &mut h_error_node, &mut update_result) }?;
result_info.errorNode = unsafe { std::mem::transmute(h_error_node) };
result_info.errorFromNode = unsafe { std::mem::transmute(h_error_node) };
result_info.result = match update_result {
hipGraphExecUpdateResult::hipGraphExecUpdateSuccess => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_SUCCESS
}
hipGraphExecUpdateResult::hipGraphExecUpdateError => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorTopologyChanged => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_TOPOLOGY_CHANGED
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorNodeTypeChanged => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_NODE_TYPE_CHANGED
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorFunctionChanged => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_FUNCTION_CHANGED
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorParametersChanged => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_PARAMETERS_CHANGED
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorNotSupported => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_NOT_SUPPORTED
}
hipGraphExecUpdateResult::hipGraphExecUpdateErrorUnsupportedFunctionChange => {
CUgraphExecUpdateResult::CU_GRAPH_EXEC_UPDATE_ERROR_UNSUPPORTED_FUNCTION_CHANGE
}
_ => return hipError_t::ErrorNotSupported,
};
Ok(())
}
pub(crate) unsafe fn get_nodes(
graph: hipGraph_t,
nodes: *mut hipGraphNode_t,

View file

@ -111,6 +111,7 @@ cuda_macros::cuda_function_declarations!(
cuGetProcAddress_v2,
cuGraphDestroy,
cuGraphExecDestroy,
cuGraphExecUpdate_v2,
cuGraphGetNodes,
cuGraphInstantiateWithFlags,
cuGraphLaunch,

View file

@ -173,7 +173,8 @@ from_cuda_nop!(
cublasLtMatmulDescAttributes_t,
CUmemAllocationGranularity_flags,
CUmemAllocationProp,
CUresult
CUresult,
CUgraphExecUpdateResultInfo
);
from_cuda_transmute!(
CUuuid => hipUUID,