저는 CUDA에서 삼각형 목록을 입력으로 받아 그리드에서 복셀화하려고하는 알고리즘을 실행 중입니다. 출력은 삼각형으로 표시된 그리드 셀 목록이어야합니다. 물론이 목록은 입력 삼각형에 따라 크기가 달라집니다. 목록의 크기의 상한선을 알고 있습니다 (gridsize x gridsize x gridsize).CUDA : 벡터 목록 구현
문제는 가능한 모든 그리드 셀의 큰 테이블을 할당하고 그 테이블에서 true/false를 표시하는 것이 번거롭고 많은 메모리를 필요로한다는 것입니다. 또한 CUDA 원자 연산은 32/64 비트 값에서만 작동합니다. 이는 부울 플래그가 너무 과장 될 수 있습니다.
호스트에서 필자로 채워진 표 셀을 벡터에 추가 한 다음 벡터를 정렬하고 중복을 제거합니다.
가변 길이 목록을 저장하기위한 CUDA를위한 방법이나 알고리즘이 있습니까?
문제는 GPU 커널에서 스러스트 프리미티브를 사용할 수 없다는 것입니다. 그리고 삼각형이 그리드 셀에 속한 것인지 아닌지를 결정하는 수학적으로 중요한 부분은 커널에서 구현됩니다. –
제 제안은'thrust :: transform'을 사용하여 분류 코드를 실행하는 것입니다. 즉, 결정을 펑터로 구현하고이를 '변환'으로 전달하는 것입니다. 다시 말해, 분류 코드는 삼각형을 입력으로 받아 그리드 셀 목록을 출력 한 다음 정렬을 수행 한 다음 중복을 제거합니다. – Tom