나는 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 할 수있는 그래픽 카드)
가 어떻게 이중 두 장치 목록을 연결된 장치에 액세스 할 수 있나요?
- 피어 투 피어 복사본?
- 다른 건 없나요?
실제로 달성하려는 것은 무엇입니까? CUDA 스레드에서 연결된 목록 통과의 성능은 실망 스럽습니다. –
그것이 링크 된 목록이라는 것을 감안할 때, 클래스의 다른 크기가 문제가되는 것처럼 보이지는 않습니다. 실제로 개체 목록을 반복하는 데 문제가 있습니까?목록에는 기대하는 모든 것이 포함되어 있지 않다.) 또는 반복하는 동안 원하는대로 (어떻게 든 어떻게 든 객체를 복사하는) 방법을 모르는 문제 일까? –
호스트에서 반복 작업은 완벽합니다. 내 유일한 문제는 전체 목록을 장치에 복사하는 것입니다. – bricklore