问题标签 [ptxas]
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 - 如何实现涉及多个变量的自定义原子函数?
我想在 CUDA 中实现这个原子函数:
我不相信我可以用任何原子函数来做到这一点。我需要为几个指令锁定几个全局内存位置。我可以用 PTXAS(汇编)代码来实现吗?
gcc - 带 PTX 输出的 NVCC 单独编译
只是为了看看 CUDA 生成什么样的代码,除了目标文件之外,我还喜欢编译为 ptx。由于我的一些循环展开可能需要很长时间,我希望能够编译*.cu
→<code>*.ptx→<code>*.o而不是在*.cu
→<code>*.ptx和*.cu
→< code>*.o,我目前正在这样做。
只需添加-ptx
到该nvcc *.cu
行即可提供所需的 ptx 输出。
使用ptxas -c
编译*.ptx
可以*.o
工作,但在我的可执行链接中导致错误:Relocations in generic ELF (EM: 190)
.
尝试编译*.ptx
with静默nvcc
失败,不输出任何内容。
我需要传递一些选项ptxas
吗?我应该如何通过单独编译通过 ptx 正确编译?或者,我可以告诉nvcc
保留 ptx 吗?
c++ - CUDA ptxas 错误“函数使用了太多共享数据”
我以前从未使用过 CUDA 或 C++,但我试图从(http://www.maisondelasimulation.fr/projects/RAMSES-GPU/html/download.html运行中获取 Ramses GPU。由于 autogen 中的错误。我使用 ./configure 并让这个工作正常。所以生成的 makefile 包含以下 NVCC 标志
但是当我尝试使用 make 编译程序时,我得到了多个 ptxas 错误:
我正在尝试在两个 NVIDIDA C1060 上使用内核 2.6 和 CUDA 4.2 在 Linux 上编译此代码(我尝试在我的大学中进行此操作,但他们没有定期升级东西。)。我尝试用 sm_20 替换 sm_10、sm_11 和 sm_13,(我在这里看到了这个修复:Entry function uses too much shared data (0x8020 bytes + 0x10 bytes system, 0x4000 max) - CUDA error)但这并没有解决我的问题。你有什么建议吗?如果您需要,我可以上传 Makefile 以及其他所有内容。谢谢您的帮助!
c++ - CUDA:--ptxas-options=-v 共享内存和 cudaFuncAttributes.sharedSizeBytes 不匹配
我正在尝试在结构中使用and 在reqRegs
运行时动态优化内核的块大小。sharedSizeBytes
cudaFuncAttributes
我当前的实现从标准输出文本中浏览nvcc --ptxas-options=-v
以发现内核的寄存器和共享内存使用情况。这种方法有点hacky,并且取决于输出文本的确切格式--ptxas-options=-v
,可能会在没有警告的情况下更改。
我的问题是我看到--ptxas-options=-v
输出中报告的“smem”共享内存值sharedSizeBytes
与cudaFuncAttributes
结构中的差异,这让我担心我一直使用的共享内存估计是错误的,或者sharedSizeBytes
变量不可靠,这意味着我不能将它用于运行时块大小优化。这是nvcc --ptxas-options=-v
一个这样的内核的输出......
...与cudaFuncAttributes.sharedSizeBytes
运行时的值 = 296 相比,对于完全相同的内核。有人知道这里会发生什么吗?
这是另一个使用不同内核的示例:
其中cudaFuncAttributes.sharedSizeBytes
= 340 在运行时。
谢谢。
cuda - CUDA ptxas 的 --abi-compile=yes 选项有什么作用(需要寄存器)?
NVIDIA CUDA 的 PTX 优化汇编器ptxas
具有以下选项:
那是什么ABI?当你禁用它时会发生什么?这似乎导致使用的寄存器更少,嗯......
(受此GTC 2011关于寄存器溢出的演示的启发提出的问题。)
cuda - __device__ 函数中的 NVCC 寄存器使用报告
我正在尝试使用NVCC选项获取有关我的CUDA内核中寄存器使用情况的一些信息,虽然使用全局函数一切都很好,但我在使用设备时遇到了一些困难,因为
--ptxas-options=v
ptxas info : Used N registers
输出中缺少行。关于调用全局函数,我尝试使用 noinline 关键字并将它们保存在另一个文件中,因为我认为NVCC正在报告全局函数的完整寄存器使用情况,包括在内联之后被调用的设备,但没有任何变化。我可以获得有关设备功能的寄存器使用情况的信息,仅将它们定义为全局。
你有什么建议吗?
谢谢!
cuda - 支持 `__shfl()` 和 `__shfl_sync()` 指令的正确方法是什么?
据我了解,CUDA 10.1 删除了以下shfl
说明:
PTX ISA 6.4 版删除了以下功能:
对于 .targetsm_70 及更高版本,已删除对不带限定符的支持
shfl
和投票指令。.sync
自 PTX ISA 6.0 版以来,此支持已被弃用,如 PTX ISA 6.2 版中所述。
shfl
支持未来和过去 CUDA 版本的正确方法是什么?
我当前的方法(在下面共享)导致使用 CUDA 10.1 出错:
另外,我想补充一点,我的项目的依赖项之一是CUB,我相信他们使用相同的方法来拆分_sync()
和旧shfl
指令。我不确定我做错了什么。
cuda - 解释 ptxas 的详细输出,第二部分
这个问题是解释 ptxas 的详细输出的延续,第一部分。
当我们用 编译一个内核.ptx
文件ptxas -v
,或者用 用一个.cu
文件编译它时-ptxas-options=-v
,我们会得到几行输出,例如:
(与链接到的问题中的示例相同;但名称拆解)
这个问题是关于最后一行的。来自其他内核的更多示例:
除了使用的寄存器数量之外,我们如何解释这一行的信息?具体来说:
- 是
cmem
常量记忆的缩写吗? - 为什么有不同的类别,
cmem
即cmem[0]
,,?cmem[2]
cmem[14]
smem
可能代表shared memory
; 它只是静态共享内存吗?- 每种条目在什么情况下会出现在这一行?
cuda - 为什么 nvcc 拒绝链接这个简单的合作组程序?
考虑以下 CUDA 程序,在一个名为 的文件中foo.cu
:
这个程序做的不多——但它是一个有效的程序(如果你的计算能力足够高,可以支持整个网格作为一个合作组)。它应该编译链接并运行。但是,我明白了:
奇怪!如果我添加一些特定-l
的-L
标志并没有帮助,例如:
为什么会这样?我应该如何修改 nvcc 命令行以使其找到未解析的符号?
笔记:
- 我正在使用 Devuan GNU/Linux 3.0。
- CUDA 10.1 作为分发包安装,因此其库位于
/usr/lib/x86_64-linux-gnu
. - 带有 GeForce 1050 Ti 卡的 x86_64 机器。
cuda - 如何禁用有关不确定堆栈大小的 ptxas 警告?
编译 CUDA 设备代码时,您可能会收到错误消息(为了便于阅读而使用换行符):
这可能有几个原因,比如动态内存分配或使用递归,但现在这些都不重要。我想至少在某些功能内禁用警告。问题是,我不知道要使用哪个令牌。搜索此列表是没有用的(按照此处关于禁用特定警告的建议)-因为这些是 NVCC 的 C/C++ 前端中的警告,而不是汇编程序。
那么如何禁用此警告?