首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将我的NVRTC程序源代码与文件联系起来?

如何将我的NVRTC程序源代码与文件联系起来?
EN

Stack Overflow用户
提问于 2020-12-31 09:48:08
回答 2查看 147关注 0票数 1

我正在使用NVRTC编译一个内核。相关的API调用是:

代码语言:javascript
复制
nvrtcResult nvrtcCreateProgram ( 
    nvrtcProgram* prog,
    const char* src,
    const char* name, 
    int  numHeaders, 
    const char** headers,
    const char** includeNames )

如您所见,源是一个原始字符串,不与文件关联。这意味着当您使用--generate-line-info时,可以得到行号,但没有相关的文件名。这意味着,如果您使用,比如说,NSight计算-您将无法看到您的内核源代码。

显然,无论是NSight计算本身,还是NVRTC本身,都无法发现原始源在某个文件中是镜像的。但必须有办法解决这个问题:

也许我在NVRTC中遗漏了一些东西,它可以使源代码<->文件association?

  • Perhaps我们可以操纵产生的编译程序(合理的,而不是手动的,或者编写我自己的新API )来使association?

  • Perhaps我们可以以某种方式将源代码塞进编译的程序中?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-31 11:54:04

看起来,NVRTC确实提供了一个默认的文件名,因此如果您将源代码以该名称放在文件中-- NSight计算可能会找到它。

该名称是作为nvrtcCreateProgram()参数传递给name的名称。

因此,如果您的内核函数(即__global__函数)位于my_kernel.cuh中,并且将该文件放置在概要文件程序的工作目录中(您告诉NSight计算程序),或者放在您构建程序的包含目录中,那么您将能够读取源代码。如果原始文件的目录也是包含目录之一,那么您很幸运,甚至不需要复制。

票数 1
EN

Stack Overflow用户

发布于 2020-12-31 09:48:08

这是我最初的解决办法:

将源代码放置在文件中,例如my_kernel.cuh.

  • Create字符串:#

  1. 只使用NVRTC

编译此字符串。

现在,NVRTC能够将包含的文件源与文件关联起来,因此它只是一个在源<->文件关联方面将丢失的存根。

注意:您需要小心路径--NVRTC的包含路径、调用程序的工作目录和源文件目录等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65519200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档