使用 NVRTC,您可以创建如下程序:
nvrtcResult nvrtcCreateProgram (&prog, src, prog_name, numHeaders, header_sources, header_fake_paths)
指定几个“here-headers”,或从您提供的字符串而不是从磁盘上的文件中获取的标题。
然后,您注册要从编译结果中访问的实体的名称(内核、设备全局变量)。
然后,你像这样编译你的程序:
nvrtcCompileProgram(prog, numOptions, options);
现在,AFAICT,在程序的创建和编译之间您绝对无能为力。并且 - 为以后查找而注册的全局变量实际上并没有使用或依赖“here-headers”。
这引出了两个问题:
- 如果它们仅在编译期间有用,为什么我们要在创建时指定此处的标头?除了编译选项之外,将它传递给
nvrtcCompile()
. - 事实上,为什么在编译之前还要有一个程序呢?为什么不创建和编译:源、名称、要跟踪的命名表达式、编译选项和此处的标题?