4

我正在尝试将 cuda 与 GNU 多精度库 (gmp) 一起使用。当我将诸如 mpf_init() 之类的 gmp 指令添加到我的设备代码中时,出现此编译器错误:tlgmp.cu(37): error: calling a host function("__ gmpf_init") from a __ device__ /__ global__ function("histo" ) 不被允许。

是否可以重新定义 gmp 指令以便它们可以在设备代码中使用?

4

1 回答 1

3

GMP 库是为主机编译的,因此不能直接在设备代码中使用。这是您看到的错误的直接原因。

由于它是一个开源库,因此可以通过一些努力来检查代码并创建您自己的版本,该版本__device__对您需要的各种功能具有适当的装饰器(可能还有其他更改)。然而,这可能需要大量的工作。

另一种选择可能是调查CUMP 库

另一种选择可能是调查xmp 库

另一种选择可能是调查坎帕里图书馆

于 2013-10-16T03:22:44.493 回答