有关结构体传输和内核函数的调试!

大家好,小白在这有几个问题需要请教大家。
1、有关结构体从host端内存传到GPU显存的问题,我之前做的都是将int或者float型的数组进行传输。现在我想将结构体(例如一个二叉树)传到GPU的显存里面,应该如何做?
2、关于内核函数的调试问题,能不能在内核函数里面进行调试?
谢谢大家!

LZ您好:

1.1:单个结构体可以直接作为kernel的参数传入。
1.2:如果您需要多个结构体/结构体数组来存储一个二叉树,那么请给出您的具体写法,以便建议。
1.3:memcpy并不关心copy过去的是什么东西。

2:可以调试kernel的内容的,如果您使用windows+visual studio,您可以使用nsight来调试您的kernel的代码。

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

谢谢ice的回复,我想对问题进行一个补充。假如我要传输一个双向链表,每个结构体里面饱含有一个整型变量,还有指向前面一个结构体的指针和后面一个结构体的指针。我应该如何实现呢?完全没有思路。之前看了一下有关指针传输的帖子,也没搞明白。希望能得到比较详细的回复。谢谢!

LZ您好:

1:您的结构体可以如下书写:
struct node
{
struct node *next;
struct node *previous;
int value;
}

2:您结构体里面的两个指针必须指向device端的地址(也就是您链表的每个节点的结构体都必须在deivce端,而不能放在host端。)

3:如此使用可能会造成比较低下的GPU访存效率,请您考虑这一点。

另外,可以参考如下帖子:
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6705

祝您编码顺利~

谢谢!我先看看!