【发布时间】:2022-11-10 23:57:16
【问题描述】:
我正在导入一个库,编译时出现此错误:
go.cu(61): error: calling a __host__ function("TinyJS::Interpreter::Interpreter()") from a __global__ function("capnduk_kernel") is not allowed
...有没有办法将整个文件 (TinyJS) 移植到设备上运行?
我检查了编译器文档,看起来没有办法做到这一点。我猜唯一的方法是手动重写文件,这是一罐蠕虫。
【问题讨论】:
-
Nvidia 的
nvc/nvc++编译器(来自 NVHPC 工具包,基于旧的 PGI 编译器)可能能够完成这项工作,因为它可以自动确定__host__和__device__。您确定该文件中的所有内容都是有效的设备代码吗? -
查看链接文件后,我认为无论有没有
__device__说明符,这都不太可能。有很多东西,比如设备代码中不支持的异常。我猜想将 JS 解释器移植到 GPU是一罐蠕虫。你到底想达到什么目的?