问题标签 [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.

0 投票
2 回答
2724 浏览

cuda - 如何实现涉及多个变量的自定义原子函数?

我想在 CUDA 中实现这个原子函数:

我不相信我可以用任何原子函数来做到这一点。我需要为几个指令锁定几个全局内存位置。我可以用 PTXAS(汇编)代码来实现吗?

0 投票
1 回答
2531 浏览

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).

尝试编译*.ptxwith静默nvcc失败,不输出任何内容。

这张图片很有帮助: 在此处输入图像描述

我需要传递一些选项ptxas吗?我应该如何通过单独编译通过 ptx 正确编译?或者,我可以告诉nvcc保留 ptx 吗?

0 投票
1 回答
4812 浏览

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 以及其他所有内容。谢谢您的帮助!

0 投票
1 回答
1774 浏览

c++ - CUDA:--ptxas-options=-v 共享内存和 cudaFuncAttributes.sharedSizeBytes 不匹配

我正在尝试在结构中使用and 在reqRegs运行时动态优化内核的块大小。sharedSizeBytescudaFuncAttributes

我当前的实现从标准输出文本中浏览nvcc --ptxas-options=-v以发现内核的寄存器和共享内存使用情况。这种方法有点hacky,并且取决于输出文本的确切格式--ptxas-options=-v,可能会在没有警告的情况下更改。

我的问题是我看到--ptxas-options=-v输出中报告的“smem”共享内存值sharedSizeBytescudaFuncAttributes结构中的差异,这让我担心我一直使用的共享内存估计是错误的,或者sharedSizeBytes变量不可靠,这意味着我不能将它用于运行时块大小优化。这是nvcc --ptxas-options=-v一个这样的内核的输出......

...与cudaFuncAttributes.sharedSizeBytes运行时的值 = 296 相比,对于完全相同的内核。有人知道这里会发生什么吗?

这是另一个使用不同内核的示例:

其中cudaFuncAttributes.sharedSizeBytes= 340 在运行时。

谢谢。

0 投票
1 回答
711 浏览

cuda - CUDA ptxas 的 --abi-compile=yes 选项有什么作用(需要寄存器)?

NVIDIA CUDA 的 PTX 优化汇编器ptxas具有以下选项:

那是什么ABI?当你禁用它时会发生什么?这似乎导致使用的寄存器更少,嗯......

(受此GTC 2011关于寄存器溢出的演示的启发提出的问题。)

0 投票
2 回答
1774 浏览

cuda - __device__ 函数中的 NVCC 寄存器使用报告

我正在尝试使用NVCC选项获取有关我的CUDA内核中寄存器使用情况的一些信息,虽然使用全局函数一切都很好,但我在使用设备时遇到了一些困难,因为
--ptxas-options=v

ptxas info : Used N registers

输出中缺少行。关于调用全局函数,我尝试使用 noinline 关键字并将它们保存在另一个文件中,因为我认为NVCC正在报告全局函数的完整寄存器使用情况,包括在内联之后被调用的设备,但没有任何变化。我可以获得有关设备功能的寄存器使用情况的信息,仅将它们定义为全局。

你有什么建议吗?

谢谢!

0 投票
1 回答
521 浏览

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指令。我不确定我做错了什么。

0 投票
2 回答
292 浏览

cuda - 解释 ptxas 的详细输出,第二部分

这个问题是解释 ptxas 的详细输出的延续,第一部分

当我们用 编译一个内核.ptx文件ptxas -v,或者用 用一个.cu文件编译它时-ptxas-options=-v,我们会得到几行输出,例如:

(与链接到的问题中的示例相同;但名称拆解)

这个问题是关于最后一行的。来自其他内核的更多示例:

除了使用的寄存器数量之外,我们如何解释这一行的信息?具体来说:

  • cmem常量记忆的缩写吗?
  • 为什么有不同的类别,cmemcmem[0],,?cmem[2]cmem[14]
  • smem可能代表shared memory; 它只是静态共享内存吗?
  • 每种条目在什么情况下会出现在这一行?
0 投票
0 回答
143 浏览

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 机器。
0 投票
1 回答
335 浏览

cuda - 如何禁用有关不确定堆栈大小的 ptxas 警告?

编译 CUDA 设备代码时,您可能会收到错误消息(为了便于阅读而使用换行符):

这可能有几个原因,比如动态内存分配或使用递归,但现在这些都不重要。我想至少在某些功能内禁用警告。问题是,我不知道要使用哪个令牌。搜索此列表是没有用的(按照此处关于禁用特定警告的建议)-因为这些是 NVCC 的 C/C++ 前端中的警告,而不是汇编程序。

那么如何禁用此警告?