问题标签 [compute-capability]

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.

0 投票
1 回答
219 浏览

caching - Compute Capability 7.5 中的缓存行为

这些是我的假设:

  1. 有两种类型的加载,缓存和非缓存。在第一个中,流量通过 L1 和 L2,而在第二个中,流量仅通过 L2。
  2. Compute Capability 6.x 和 7.x 中的默认行为是缓存访问。
  3. 一个 L1 缓存行是 128 字节,一个 L2 缓存行是 32 个字节,因此对于生成的每个 L1 事务,应该有四个 L2 事务(每个扇区一个。)
  4. 在 Nsight 中,一个 SM->TEX 请求意味着一条由 32 个线程合并而成的 warp 级指令。L2->TEX Returns 和 TEX->SM Returns 是衡量每个内存单元之间传输了多少扇区的量度。

假设计算能力 7.5,这些是我的问题:

  1. 第三个假设似乎暗示 L2->TEX Returns 对于全局缓存加载应该总是四的倍数,但情况并非总是如此。这里发生了什么?
  2. 用 const 和 __restrict__ 限定符标记指针还有意义吗?这曾经是向编译器提示数据是只读的,因此可以缓存在 L1/纹理缓存中,但现在所有数据都缓存在那里,只读和非只读。
  3. 根据我的第四个假设,我认为每当 TEX->SM Returns 大于 L2->TEX Returns 时,差异来自缓存命中。那是因为当缓存命中时,您会从 L1 读取一些扇区,但从 L2 中没有。这是真的?
0 投票
2 回答
1287 浏览

cmake - 如何让 CMake 自动检测 CUDA_ARCHITECTURES 的值?

较新版本的 CMake(3.18 及更高版本)“了解”CUDA 代码编译目标的 CUDA 架构选择。目标具有一个CUDA_ARCHITECTURES属性,当设置该属性时,它会-gencode arch=whatever,code=whatever为您生成适当的编译选项。如果您不设置此值,您甚至会收到警告:

默认情况下,此目标属性初始化为CMAKE_CUDA_ARCHITECTURES. 但CMAKE_CUDA_ARCHITECTURES它本身没有初始化为任何东西(!)

我们如何让 CMake 自动检测CUDA_ARCHITECTURES或 global的适当值CMAKD_CUDA_ARCHITECTURES?也就是说,使用系统上安装的 GPU 的架构?

0 投票
0 回答
58 浏览

gpu - 在 slurm 作业脚本中设置 GPU 计算能力的约束

我正在尝试设置一个约束,以便我的工作只能在计算能力高于(或等于)7 的 GPU 上运行。

这是我的脚本名为torch_gpu_sanity_venv385-11.slurm

不使用--constraint="cc7.0"我的脚本运行正确。我什至使用了另一个版本,--constraint=cc7.0但无论哪种情况,我都会收到以下错误:

当我删除该--constraint="cc7.0"术语时,我可以运行该作业。删除约束项后:

那么,如何设置约束,以便只分配具有 7 或更高计算能力的 GPU?

我按照本教程进行约束设置。

0 投票
1 回答
38 浏览

c++ - Pre 8.x 相当于 CUDA 中的 __reduce_max_sync()

cuda-memcheck在执行以下操作的代码中检测到竞争条件:

所以基本上这段代码根据某些条件计算每个扭曲的所有者线程。对于某些 warp 可能没有所有者,但对于某些所有者的数量可能超过 1,然后发生竞争条件,因为多个线程将值分配给同一共享内存区域。

在尝试了文档之后,我认为我需要做的事情是:

但是,我的尝试有两个问题:

  1. 我真的不需要找到最大线程 - 如果有一个线程,则为每个经纱选择任何 1 个线程就足够了condition==true
  2. 它需要CUDA计算能力8.x,而我需要支持5.2计算能力的设备

你能帮我解决以上问题吗?

0 投票
2 回答
189 浏览

cuda - CUDA atomicAdd_block 未定义

根据 CUDA Programming Guide,“原子函数仅相对于由特定集合的线程执行的其他操作是原子的......块范围的原子:对于当前程序中的所有 CUDA 线程在与当前线程块相同的线程块中执行的原子线程。这些以 _block 为后缀,例如,atomicAdd_block

但是,atomicAdd_block当我的代码使用atomicAdd. 我应该添加或链接到任何标题或库吗?