关于设备端主机端调用问题

我比着cuda by example编写了一个julia集的cuda程序,编译了下发现有错 calling a host function(“cuComplex::cuComplex”) from a device/global function(“julia”) is not allowed,请问谁知道哪里出错了啊?

从报错信息上看,你应该是内核程序(或者设备端子程序)中调用了主机端的子程序。
比如:你主机端代码里面有个自己创建的子程序:yuquan(a,b);
你可以在主机端代码里面随意调用,但是你要在kernel(或者__device__)中调用他就会报错。

(1)购买此书的用户,建议跟出版商/作者取得技术支持,以直接获得勘误表,这样快捷。

(2)此外,您可以继续采用如下建议。注意,我不是C++用户,以下解答不保证正确性:

建议:
看上去是此类的构造函数没有被标记成 device__导致的, 请在该类的构造函数前加上__device
谢谢。

一个范例如下:
class cuComplex
{
public: device cuComplex(…); //注意此构造函数需要__device__标注
}

谢谢,一切ok了

您客气了。能够服务您是我的荣幸。