是否有办法为整个文件指定__device__ ?(Nvidia Cuda Compiler)



我正在导入一个库,在编译时我得到这个错误:

go.cu(61): error: calling a __host__ function("TinyJS::Interpreter::Interpreter()") from a __global__ function("capnduk_kernel") is not allowed

…是否有一种方法来移植整个文件(TinyJS)在设备上运行?

我已经检查了编译器文档,它看起来没有办法做到这一点。我想唯一的方法是手工重写文件,这是一个棘手的问题。

对于nvcc没有办法做到这一点。这需要人工操作。

虽然NVCC不支持这个(正如Robert指出的),但这个运行时编译的一个选项,通过NVRTC库:

Documentation列出了以下编译选项:

--device-as-default-execution-space(-default-device)

将没有执行空间注释的实体视为__device__实体。

指出:

  • 在这种情况下,我会考虑向NVIDIA提交错误报告,并要求他们将此选项添加到NVCC中。
  • clang++支持编译CUDA,也许它有这样的标志。
  • 这个NVRTC也被用于CUDA的modern - c++包装库支持,这比直接使用NVRTC更方便。(警告:这是我自己的库。)

最新更新