cuda如何向device传入指针数组或二维数组

求大牛帮忙。
在device端调用传入的指针数组,程序虽然编译通过,但是结果却没有。
希望有人能帮我解决一下,

LZ您好:

1:如果您需要使用二维数组,建议使用如下帖中2#给出的,带有维度信息的指针来实现。
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6566
以及还有一些讨论的帖子,您可能需要翻一翻。

还可以参考:
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6439
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6248

以及贴图上个例子好了,一些老帖不好找到
[attach]3107[/attach]

2:如果您需要使用的是二维数组,那么不推荐您用指针数组手工维护,建议使用1:的方法。

3:程序编译通过,但无结果,这个需要您仔细调试,无法直接给出建议。

大致如上,祝您编码顺利~

添加了更多的参考帖子链接并上传了示例图片。

先谢谢版主这么快的回复,我慢慢吸收一下。
看到你的贴图,你是如何在device端用printf函数的?我是在linux下,调试不太方便,所以想在device端能输出便于差错,跟你加入的头文件有关嘛?

LZ您好,是fermi开始支持在kernel里面printf的(需要stdio.h头文件),具体可以看programming guide,注意编译的时候需要指定硬件架构的计算能力在2.0或者更高才可以。

祝您好运!

哦 看来我的不行了,不过二维数组的问题已经解决了,谢谢

这是我GPU的参数,您说的指数我应该是到2.1了吧,为什么还是不能在device端用printf呢,头文件我也加了。[attach]3116[/attach]

嗯嗯,恭喜LZ搞定问题。

以及如果有机会的话,建议升级新卡,fermi和kepler的很多新特性还是十分给力的。

祝您编码顺利~

LZ您好,您的卡是fermi核心的GTX 460 ,计算能力版本为2.1,是很不错的卡。

您的编译参数可能设置的不对,是按照1.x来编译生成代码的,此时编译会报错。
请您检查一下。

祝您好运!

我是在linux下编程的 那参数我应该怎么设置呢,如果不麻烦可以给我一个详细的步骤嘛?

添加-arch=sm_xx(看你卡型号)

LZ您好,大致是NVCC的参数里面arch什么的,你看下NVCC的手册即可。
我是用WIN +VS的,可以在项目的属性里面设置。

以及请熟悉linux的网友补充。

祝您好运~

补充一下10#,因为LZ前面给出了显卡信息,显卡为GTX 460,所以可以用sm_21.


修正笔误一处,祝LZ好运~

是在编译的时候加这个嘛

谢谢 我是刚刚接触CUDA做毕设,所以没有手册,,,是在编译时直接加选项 -arch sm_21嘛

您的环境是?用的IDE是?

手册是随CUDA Toolkit自带的,您可以找一下。

祝您好运~

linux ubuntu10.10 没有用IDE软件 直接nvcc的

http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html

请参阅此帮助文档。

祝您好运!

万分感谢

不客气的,其他在线文档,可在本论坛资料下载区找到~

祝您晚安~