cuda - 尝试使用超过 48 KB 的(静态)共享内存时出错
问题描述
我正在尝试__shared__
使用sm_86
. 如果变量的大小大于 48 KB,nvcc
则报错并编译失败并报错
入口函数使用过多的共享数据
我正在使用 CUDA 11.2 运行 Visual Studio 2019 并已设置
配置属性 -> CUDA C/C++ -> 设备 -> 代码生成到 compute_86,sm_86
根据此处的表格,cc 8.6 的设备不应该允许每块 100 KB 的最大共享内存吗?
这是一个对我失败的简单代码:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#define SIZE 12288 /* x 4 byte = 48 KB <---- Works */
/* #define SIZE 12289 */ /* <---- Fails */
__global__ void kernel(int* d) {
__shared__ int s[SIZE];
s[threadIdx.x] = 1;
d[threadIdx.x] = s[threadIdx.x];
}
int main() {
int* d_a;
cudaMalloc(&d_a, SIZE * sizeof(int));
kernel <<<1, 1024 >>> (d_a);
cudaDeviceSynchronize();
cudaFree(d_a);
}
解决方案
推荐阅读
- android - 当其他视图小于一个屏幕时,BottomNavigationView 向上移动
- ionic-framework - 生成器仅适用于 Ionic 2 项目 (CLI v2.2.2)
- javascript - 在 symfony 中加载资产 js
- angular - 如果填写了一个字段,则需要删除 Angular Form Arrays
- actions-on-google - 智能家居的智能家居测试套件对我的 Google Home 没有任何作用
- azure-devops - 在 Azure Devops 服务 (VSTS) 上强化 OnDemand
- android - 在给定路径的情况下通过 Intent 打开 Files/DocumentsUI
- authorization - 使用 http-request 节点和承载认证连接到 REST API
- angular - Angular 反应式表单子组件
- vb.net - WebBrowser.DocumentText 未更新