Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试将 cuda 与 GNU 多精度库 (gmp) 一起使用。当我将诸如 mpf_init() 之类的 gmp 指令添加到我的设备代码中时,出现此编译器错误:tlgmp.cu(37): error: calling a host function("__ gmpf_init") from a __ device__ /__ global__ function("histo" ) 不被允许。
是否可以重新定义 gmp 指令以便它们可以在设备代码中使用?
GMP 库是为主机编译的,因此不能直接在设备代码中使用。这是您看到的错误的直接原因。
由于它是一个开源库,因此可以通过一些努力来检查代码并创建您自己的版本,该版本__device__对您需要的各种功能具有适当的装饰器(可能还有其他更改)。然而,这可能需要大量的工作。
__device__
另一种选择可能是调查CUMP 库。
另一种选择可能是调查xmp 库
另一种选择可能是调查坎帕里图书馆