stream event
stream 和 event 概念和联系
1. 创建stream 和 event
cudaStream_t streamA, streamB;
cudaEvent_t event;
cudaStreamCreate(&streamA);
cudaStreamCreate(&streamB);
cudaEventCreate(&event);
2. 在 Stream A 中执行操作并记录 Event
kernelA<<<grid, block, 0, streamA>>>(); // Stream A中的核函数
cudaEventRecord(event, streamA); // 当streamA中该Event前的操作完成后,Event触发
3. Stream B 等待 Event 完成后执行操作
cudaStreamWaitEvent(streamB, event, 0); // Stream B暂停,直到event完成
cudaMemcpyAsync(dst, src, size, cudaMemcpyDeviceToHost, streamB); // 依赖kernelA完成
4. cpu 等待event完成
cudaEventSynchronize(event); // CPU阻塞,直到event完成
5. 释放资源
cudaStreamDestroy(streamA);
cudaStreamDestroy(streamB);
cudaEventDestroy(event);