我需要在 cuda 设备上创建一个双向链表。
我有主机代码:
class Foo
{
public:
int my_index;
static int count;
static int index;
static Foo* first;
static Foo* last;
Foo* next;
Foo* prev;
Foo(); //adds object to list
~Foo(); //deletes object from list
}
Foo* Foo::first = 0;
Foo* Foo::last = 0;
int Foo::count = 0;
int Foo::index = 0;
当我想遍历它时:
for (Foo* pr = Foo::first; pr; pr = pr->next)
{
//do something
}
我的第一个问题是:
还有其他几个类继承自它们Foo
并且它们具有不同的大小,那么我该如何:
- 将所有创建的类型类
Foo
和所有派生类复制到设备 - 甚至更好的是,将整个链表完全存储
Foo
在设备上
我不必从Foo
主机上访问数据,
我只需要在设备上。
我的第二个问题:
我有多个 CUDA 设备(3 个支持 CUDA 的显卡)
我如何访问两个设备上的设备双向链表?
- 点对点复制?
- 别的东西?