Я пытаюсь запустить захваченный график CUDA из обычного ядра CUDA (т. е. запуск графа на стороне устройства).
Из блога NVIDIA, посвященного запуску графа устройства, кажется, что это должно поддерживаться на новых графических процессорах (таких как H100) с последними версиями CUDA.
Чтобы проверить это, я написал минимальный пример, который фиксирует простое добавление ядро в граф CUDA, создает его экземпляр с помощью cudaGraphInstantiateFlagDeviceLaunch, а затем пытается запустить его из другого ядра.
Вот код:
Я пытаюсь запустить захваченный график CUDA из обычного ядра CUDA (т. е. запуск графа на стороне устройства). Из блога NVIDIA, посвященного запуску графа устройства, кажется, что это должно поддерживаться на новых графических процессорах (таких как H100) с последними версиями CUDA. Чтобы проверить это, я написал минимальный пример, который фиксирует простое добавление ядро в граф CUDA, создает его экземпляр с помощью cudaGraphInstantiateFlagDeviceLaunch, а затем пытается запустить его из другого ядра. Вот код: [code]#include #include #include
cudaGraphExecDestroy(exec); cudaGraphDestroy(g); cudaStreamDestroy(s); cudaFree(d_a); cudaFree(d_b); cudaFree(d_out); cudaFree(d_err); return 0; } [/code] [b]Команда сборки:[/b] [code]nvcc -std=c++17 -O3 -rdc=true -arch=sm_90 device_graph_test.cu -o device_graph_test -lcudadevrt [/code] [b]Выход:[/b] [code]Device: NVIDIA H100 NVL, Compute Capability: 9.0 Host cudaGraphLaunch error: no error Host add kernel result = 5 Kernel launch error: operation not supported device cudaGraphLaunch -> 0 add kernel result = 0 [/code] [b]Вопрос:[/b] [list] [*]Почему запуск графа на стороне хоста завершается успешно, но cudaGraphLaunch на стороне устройства завершается с ошибкой, операция не поддерживается? [*]Существует ли дополнительное требование или флаг API, необходимый для включения запуска графа устройства на H100 с помощью CUDA 12.9? [*]Я что-то упустил в том, как я создаю или запускаю граф изнутри ядра? [/list] Любые разъяснения или рабочий пример запуска CUDA Graph из обычного ядра будут очень признательны.