问题标签 [gpu-shared-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - 为什么 Ampere GPU 上每个块的最大共享内存量不是 16 KiB 的倍数?
传统上,NVIDIA GPU 提供了 CUDA 线程块共享内存,其数量始终可以被 16 KiB 整除(参见此表中的示例)。但是,对于 Ampere 8.0 和 8.6 GPU,数量为 99 KiB 和 163 KiB。怎么来的?这是因为硬件问题吗?不会是错字吧?
docker - docker run -gpus all 与 yolov5 的多个卷
docker:来自守护进程的错误响应:无效模式:/usr/src/app/data。
我试过改成
成功创建容器但是 docker 不连接卷目录,我无法访问本地系统文件
或在本地系统和 docker 容器前添加 / 但是都失败了
我从stackoverflow尝试了多种解决方案,但仍然失败
sass - 共享内存的 atomicAdd 与 int 和 float 有不同的 SASS
我遇到了一个性能问题atomicAdd
,float
在int
使用nv-nsight-cu-cli
. 检查生成的 SASS 后,我发现共享内存的生成 SASS 是打开的atomicAdd
,float
并且int
完全不相似。
在这里,我以最小的 cuda 代码展示了一个示例:
从上面生成的 SASS 代码中,我们可以清楚地得知,共享内存atomicAdd
在int
生成单个轻量级ATOMS.POPC.INC.32 RZ, [URZ]
,而在float
生成一堆 SASS 时具有重量级ATOMS.CAST.SPIN R3, [RZ], R2, R3
。
CUDA Binary Utilities没有告诉我CAST
or的含义SPIN
。但是,我猜想这意味着共享内存地址上的独占自旋锁。(纠正我,如果我猜错了。)在我的真实代码中,没有一个 SASSatomicAdd
有int
热点。但是,这比ofATOMS.CAST.SPIN
生成的其他 SASS 代码要热得多。atomicAdd
float
另外,我用编译器标志-arch=sm_86
和. 在那些 CC 下,生成的 SPSS 代码非常相似。另一个事实是,毫不奇怪, 的生成的SPSS 与.-arch=sm_80
-arch=sm_75
atomicAdd
float
atomicAdd
double
float
这个观察比问题更让我困惑。我会从我的分析经验中提出一些简单的问题,并希望我们能进行愉快的讨论。
- 具体是做什么
ATOMS.CAST.SPIN
的?我知道的唯一 SASS 文档是CUDA Binary Utilities。 - 为什么
atomicAdd
of应该float
生成更多的 SASS 代码并做更多的工作int
?我知道这是一个普遍的问题,很难回答。也许ATOMS.POPC.INC
根本不适用于数据类型float
或double
? - 如果它更容易受到更多共享内存加载和存储冲突的影响,因此of比of 的停顿时间更长?前者显然有更多要执行的指令和不同的分支。我的项目中有以下代码片段,其中两个函数的函数调用次数相同。然而,of在开启时不会造成运行时瓶颈。
atomicAdd
float
atomicAdd
int
atomicAdd
float
int