На странице документации для cudaStreamAddCallback
говорится, что она "предназначена для возможного устаревания и удаления" и вместо нее следует использовать cudaLaunchHostFunc. Тем не менее, документация для cudaLaunchHostFunc
говорит, что функциям хоста не разрешается делать какие-либо вызовы CUDA. Обратный вызов для cudaLaunchHostFunc
также имеет тип
typedef void (CUDART_CB *cudaHostFn_t)(void *userData);
вместо
typedef void (CUDART_CB *cudaStreamCallback_t)(cudaStream_t stream, cudaError_t status, void *userData);
, который cudaStreamAddCallBack
принимает. Я могу включить информацию о потоке в void* userData
, но как мне восстановить, если после присоединения обратного вызова произойдет ошибка?