我正在尝试使用cuda和GNU多精度库(gmp)。当我将gmp指令(如mpf_init())添加到我的设备代码时,我得到此编译器错误:tlgmp.cu(37):错误:从__ device__ / __ global__函数调用主机函数(“__ gmpf_init”)(“histo” )是不被允许的。
是否可以重新定义gmp指令,以便它们可以在设备代码中使用?
答案 0 :(得分:3)
GMP库是为主机编译的,因此不能直接在设备代码中使用。这就是你所看到的错误的直接原因。
由于它是一个开源库,因此可能需要花费一些精力来完成代码并创建自己的版本,该版本具有适当的__device__
装饰器(以及可能的其他更改),以满足您需要的各种功能。然而,这可能需要大量的工作。
另一种选择可能是调查CUMP library。