gpt4 book ai didi

deep-learning - cudnn 卷积工作区是否可重用?

转载 作者:行者123 更新时间:2023-12-04 03:34:58 29 4
gpt4 key购买 nike

我需要找到有关提供给 cudnnConvolutionForwardcudnnConvolutionBackwardDatacudnnConvolutionBackwardFilter 函数系列的工作空间的引用或描述。

假设不同的层没有在 GPU 上并行执行,我可以为下一个调用/层重用工作区吗?

我正在研究 caffe 对 cudnn_conv_layer.cpp 的实现层的实例为 3 个函数中的每一个分配了自己的独立空间。这似乎很浪费,因为从逻辑上讲,我应该能够为多个层/功能重用内存。

但是我找不到明确允许或禁止此操作的引用,并且 Caffe 为每一层保留单独的工作区,我怀疑它总共可能会“浪费”大量内存。

最佳答案

是的,您可以将工作区重新用于来自不同层的调用。工作区只是算法工作所需的内存,而不是一种必须初始化或保持特定状态的上下文,您可以在 cuDNN 用户指南中看到它,例如herehere (查看例如 cudnnGetConvolutionForwardWorkspaceSize 的文档)。这也是为什么在一层内,工作空间的大小被计算为所应用的任何算法所需的所有可能工作空间的最大值(好吧,乘以 CUDNN_STREAMS_PER_GROUP,如果更多,则还乘以组数多于一个,因为组可以并行执行)。

也就是说,在 caffe 中,很可能并行计算任何层的 2 个实例,而且我认为与一批必须存储的实际数据相比,工作空间没有那么大(尽管我不是确定这部分,因为这取决于所使用的 NN 体系结构和算法),但我怀疑在常见情况下您能否通过重用工作空间来赢得很多。

理论上,您总是可以在相应的库调用之前分配工作区并在调用之后释放它,这样可以节省更多内存,但它可能会在一定程度上降低性能。

关于deep-learning - cudnn 卷积工作区是否可重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67108118/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com