cudaFuncSetSharedMemConfig 在 12.4 中已弃用 - 为什么?

问题描述 投票:0回答:1

升级到 CUDA 12.4 并重新编译我的项目后,我收到以下警告:

Experiments.cu:188:39: warning: ‘cudaError_t cudaFuncSetSharedMemConfig(T*, cudaSharedMemConfig) [with T = void(long unsigned int, BigNum<256>*, BigNum<256>*, BigNum<512>*); cudaError_t = cudaError]’ is deprecated [-Wdeprecated-declarations]
  188 |   gpuErrchk(cudaFuncSetSharedMemConfig(&BatchMultiply, cudaSharedMemBankSizeEightByte));
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/cuda/targets/x86_64-linux/include/cuda_runtime.h:1589:1: note: declared here
 1589 | __host__ cudaError_t cudaFuncSetSharedMemConfig(
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~

文档似乎没有说明为什么它被弃用。

你知道为什么以及我们应该用什么来代替吗?

cuda deprecated gpu-shared-memory
1个回答
0
投票

该函数的目的是设置共享内存库大小。如文档中所示,可用选项是:

支持的银行配置有:

cudaSharedMemBankSizeDefault:启动此功能时使用设备的共享内存配置。

cudaSharedMemBankSizeFourByte:启动此函数时,将共享内存组宽度本机设置为四个字节。

cudaSharedMemBankSizeEightByte:启动此函数时,将共享内存组宽度本机设置为八个字节。

无论是现在还是历史上,大多数 CUDA 设备都有每个存储体 4 字节的固定存储体大小。有一些 Kepler 设备(主要是 cc3.5 设备)具有可配置的存储体大小,可以是 4 或 8 字节。

除了开普勒之外,没有任何设备具备这种能力。目前所有支持的 CUDA GPU 都有固定的四字节存储体大小。

鉴于 CUDA 12.x 不再支持 cc3.5(最后一次支持是在 CUDA 11.x 中),看来 CUDA 开发经理认为不再需要支持此功能,因为它不会影响任何当前支持的 CUDA GPU。因此,他们正在宣传它可能会在未来的版本中删除,以向开发人员表明您应该从正在开发的代码中删除它,继续前进。它没有任何作用。

没有替代品。目前没有类似的功能。

© www.soinside.com 2019 - 2024. All rights reserved.