CUDA NSIGHT:调用一个不匹配的malloc或一个不匹配的free

CUDA NSIGHT:调用一个不匹配的malloc或一个不匹配的free,cuda,nsight,Cuda,Nsight,我无法理解下面的陈述 非重叠输入/输出缓冲区 a kernel can malloc and free a buffer in the same launch, but it cannot call an unmatched malloc or an unmatched free. 有人能再解释一下吗 这仅仅意味着您不应该跨不同的内核启动malloc或free。 如果在内核启动期间malloc,则必须在同一次启动期间释放它,而不是在以后的多次启动期间释放它 只有在启用NSIGHT prof

我无法理解下面的陈述

非重叠输入/输出缓冲区

a kernel can malloc and free a buffer in the same launch, 
but it cannot call an unmatched malloc or an unmatched free. 

有人能再解释一下吗

这仅仅意味着您不应该跨不同的内核启动
malloc
free
。 如果在内核启动期间
malloc
,则必须在同一次启动期间释放它,而不是在以后的多次启动期间释放它


只有在启用NSIGHT profiler选项
非重叠输入/输出缓冲区
时才需要此选项,因为它允许探查器执行一些优化。如果您跨内核启动执行
malloc
free
(就CUDA而言,这很好),那么只需禁用该选项。

调用malloc()时是否会出现编译/运行时错误如果您的内核满足所列的要求,那么探查器就不必在内核重放之间保存和恢复所有可变状态。如果内核具有不匹配的malloc或free,那么探查器必须保存和恢复设备堆。例如,如果内核在每次启动时malloced 1MB,而它没有释放,并且如果探查器没有还原堆分配器,那么每次重播都会malloc额外1MB。如果探查器进行N次传递,则它将泄漏(N-1)×1MB的设备堆。