1#include <muda/launch/stream_define.h>
4MUDA_INLINE MUDA_GENERIC GraphViewer::GraphViewer(cudaGraphExec_t graph,
5 Flags<GraphInstantiateFlagBit> flags)
11MUDA_INLINE MUDA_GENERIC
void GraphViewer::launch(cudaStream_t stream)
const
14 MUDA_KERNEL_ASSERT(m_flags.has(GraphInstantiateFlagBit::DeviceLaunch),
15 "To launch on device, the graph should be instantiated with `DeviceLaunch`");
16 MUDA_KERNEL_ASSERT(stream == details::stream::graph_tail_launch()
17 || stream == details::stream::graph_fire_and_forget(),
18 "Launch Graph on device with invalid stream! "
19 "Only Stream::GraphTailLaunch{} and Stream::GraphFireAndForget{} are allowed");
20#if !MUDA_WITH_DEVICE_STREAM_MODEL
21 MUDA_ERROR_WITH_LOCATION(
22 "GraphViewer[%s:%s]: graph launch on device is not supported in "
27 __CUDACC_VER_MINOR__);
30 auto graph_viewer_error_code = cudaGraphLaunch(m_graph, stream);
31 if(graph_viewer_error_code != cudaSuccess)
33 auto error_string = cudaGetErrorString(graph_viewer_error_code);
34 MUDA_KERNEL_ERROR_WITH_LOCATION(
"GraphViewer[%s:%s]: launch error: %s(%d), GraphExec=%p",
38 (
int)graph_viewer_error_code,
43MUDA_INLINE MUDA_DEVICE
void GraphViewer::tail_launch()
const
46 this->launch(details::stream::graph_tail_launch());
50MUDA_INLINE MUDA_DEVICE
void GraphViewer::fire_and_forget()
const
53 this->launch(details::stream::graph_fire_and_forget());