큰 2D 배열 (C 언어)을 장치에 전달하고 가능한 모든 조합을 결정합니다. 예 :CUDA - 알 수없는 크기의 결과를 반환하는 방법
A =
id val1 val2
1 100 200
2 400 800
Combination =
id1 id2 sumval1 sumval2
1 2 500 1000
원래 배열의 크기 때문에 가능한 모든 조합을 저장하고 반환 할 수 없습니다. sumval1> 500 및 sumval2> 1000 인 모든 조합을 반환하고 싶습니다.
어떻게이 조합의 조합 만 파일에 기록 할 호스트로 되돌릴 수 있습니까? 얼마나 많은 조합이 조건을 충족시키는 지 모르겠다.
저는 페이징 아이디어를 좋아합니다. 나는 결과를 위해 배열 R을 할당 할 것이지만 배열을 어떻게 색인화해야합니까? C에서는 결과가 입력 될 때마다 ++가됩니다. 동일한 스레드를 사용하는 모든 스레드에서 문제가 발생합니까? – user2936659
스트림 압축을 수행하고 thrust :: remove_if를 살펴보아야합니다. 출력 배열에 맞는 수만큼 조합을 생성하십시오. 어쩌면 입력이 텍스처가되어야 할 수도 있으므로, 출력에 복사하지 않고 술어의 값을 사용할 수 있습니다. 스트림 압축을 실행하고 last_id1과 lastid_2를 리턴하십시오. 데이터를 진행하면서 다른 시작점을 사용하여 여러 번 커널을 호출하십시오. – purpletentacle