我有一些脚本在运行一段时间后会引发 Cuda 内存不足异常。在它们内部,我使用的是预先分配的数组,所以我没想到这是个问题。尽管如此,在我将脚本转换为 .fs 文件并对其进行编译后,分析器对于此任务并不是特别有用,并且 cuda-memcheck 工具 6.5 (36) 在我使用它时抛出了 CudaInterOp 异常。cuda-memcheck 7.0 (40) 实际上迫使我在 GPU 熄灭时重置 PC。
我现在有点不确定该怎么做。如何使用 Alea 修复泄漏?
我有一些脚本在运行一段时间后会引发 Cuda 内存不足异常。在它们内部,我使用的是预先分配的数组,所以我没想到这是个问题。尽管如此,在我将脚本转换为 .fs 文件并对其进行编译后,分析器对于此任务并不是特别有用,并且 cuda-memcheck 工具 6.5 (36) 在我使用它时抛出了 CudaInterOp 异常。cuda-memcheck 7.0 (40) 实际上迫使我在 GPU 熄灭时重置 PC。
我现在有点不确定该怎么做。如何使用 Alea 修复泄漏?
设备 reduce 资源管理的完整用法如下所示:
// first, create module, which has the compilation stuff
use reduceModule = new DeviceReduceModule<float>(Target, <@ (+) @>)
// second, create a reduce object, which contains temp memory for that maxItems
use reduce = reduceModule.Create(maxItems)
// third, allocate your device memory for input
use numbers = reduce.AllocateStreamBuffer(xxx)
// now you can scatter data and do reduce
numbers.Scatter(your data)
reduce.Reduce(numbers)
// now because you are using "use" keyword, the dispose() will be called implicitly