问题标签 [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.
caching - Compute Capability 7.5 中的缓存行为
这些是我的假设:
- 有两种类型的加载,缓存和非缓存。在第一个中,流量通过 L1 和 L2,而在第二个中,流量仅通过 L2。
- Compute Capability 6.x 和 7.x 中的默认行为是缓存访问。
- 一个 L1 缓存行是 128 字节,一个 L2 缓存行是 32 个字节,因此对于生成的每个 L1 事务,应该有四个 L2 事务(每个扇区一个。)
- 在 Nsight 中,一个 SM->TEX 请求意味着一条由 32 个线程合并而成的 warp 级指令。L2->TEX Returns 和 TEX->SM Returns 是衡量每个内存单元之间传输了多少扇区的量度。
假设计算能力 7.5,这些是我的问题:
- 第三个假设似乎暗示 L2->TEX Returns 对于全局缓存加载应该总是四的倍数,但情况并非总是如此。这里发生了什么?
- 用 const 和 __restrict__ 限定符标记指针还有意义吗?这曾经是向编译器提示数据是只读的,因此可以缓存在 L1/纹理缓存中,但现在所有数据都缓存在那里,只读和非只读。
- 根据我的第四个假设,我认为每当 TEX->SM Returns 大于 L2->TEX Returns 时,差异来自缓存命中。那是因为当缓存命中时,您会从 L1 读取一些扇区,但从 L2 中没有。这是真的?
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 的架构?
gpu - 在 slurm 作业脚本中设置 GPU 计算能力的约束
我正在尝试设置一个约束,以便我的工作只能在计算能力高于(或等于)7 的 GPU 上运行。
这是我的脚本名为torch_gpu_sanity_venv385-11.slurm
:
不使用--constraint="cc7.0"
我的脚本运行正确。我什至使用了另一个版本,--constraint=cc7.0
但无论哪种情况,我都会收到以下错误:
当我删除该--constraint="cc7.0"
术语时,我可以运行该作业。删除约束项后:
那么,如何设置约束,以便只分配具有 7 或更高计算能力的 GPU?
我按照本教程进行约束设置。
c++ - Pre 8.x 相当于 CUDA 中的 __reduce_max_sync()
cuda-memcheck
在执行以下操作的代码中检测到竞争条件:
所以基本上这段代码根据某些条件计算每个扭曲的所有者线程。对于某些 warp 可能没有所有者,但对于某些所有者的数量可能超过 1,然后发生竞争条件,因为多个线程将值分配给同一共享内存区域。
在尝试了文档之后,我认为我需要做的事情是:
但是,我的尝试有两个问题:
- 我真的不需要找到最大线程 - 如果有一个线程,则为每个经纱选择任何 1 个线程就足够了
condition==true
- 它需要CUDA计算能力8.x,而我需要支持5.2计算能力的设备
你能帮我解决以上问题吗?
cuda - CUDA atomicAdd_block 未定义
根据 CUDA Programming Guide,“原子函数仅相对于由特定集合的线程执行的其他操作是原子的......块范围的原子:对于当前程序中的所有 CUDA 线程在与当前线程块相同的线程块中执行的原子线程。这些以 _block 为后缀,例如,atomicAdd_block
“
但是,atomicAdd_block
当我的代码使用atomicAdd
. 我应该添加或链接到任何标题或库吗?