在一个.cu文件里的__device__函数里,居然可以直接调用string.h里的memset函数,还有memcpy和memcmp。
我之前都以为不能直接调用的呀?
到底能不能呢
device端代码中可以使用memset(),具体用法和注意事项请参阅programming guide。
另外需要计算能力2.0或更高的GPU.
看到文档了,可以调用memset和memcpy。
但是不应该是string.h里的memset和memcpy呀,为什么我的IDE会把这两个函数定位到string.h里面去呢?
还有.cu文件开头的include<stdio.h>这个头文件和CPU端的stdio.h是一样的吗?
楼主您好,的确和您的host端的C库无关的。
VS的IDE自动定位错误,请您原谅它。
感谢来访。
[
如果和c库无关,是谁实现的?
请不要断章取义。
我只是说和"host端的C库“无关。
这个是CUDA C提供的。感谢来访。
是指memset和memcpy这两个函数由cuda C 的库实现吗?
那在核函数中不能调用C库的东西吗?
test_c_lib.cu(10): error: calling a host function(“printf”) from a global function(“VecAdd”) is not allowed
不知道怎么提交图片,原来确实不能调用。
楼主您需要编译时指定至少compute_20,sm_20的计算能力的,
而不是CUDA不能用printf.
建议以后少下“定义式语句”,例如CUDA不能"******"之类的。
哈哈,你认错人了,上面的不是楼主,我才是呢
好好看官方文档吧
化***为动力!