2013-08-07 2 views
0

특정 기준을 충족하는 배열에서 삼각형을 선택하고 싶습니다. CUDA에서 어떻게하면 좋을까요?큐다를 사용하여 배열 요소 선택

입력은 삼각형의 배열입니다. 그런 다음 CUDA는 각 삼각형에 대한 값을 계산합니다. 출력은 값이 임계 값보다 작은 삼각형 (예 : 2)으로 구성된 배열이어야합니다.

triangle array:  [tri1][tri2][tri3][tri4] 
value array:  [1.00][0.50][3.50][0.50] 
-> pick triangles with value <= 2 
output:    [tri1][tri2][tri4] 

이 경우에는 cudas 병렬성을 최적화하는 방법을 잘 모르겠습니다.

현재 값 배열을 다시 mathematica로 읽어서 Cases []를 사용하여 너무 느린 삼각형을 선택하십시오.

result = CUDAMemoryGet[cOutput]; 
validTriangleIndices = Cases[Range[Length[result]], x_ /; result[[x]] < threshold]; 
+1

사용 사례에서 "삼각형"이란 무엇입니까? 그것은 구조체 또는 벡터 유형입니다. 세부 사항이 중요하며 문제를 충분히 설명하여 문제를 해결할 수있는 것은 아닙니다. – talonmies

답변

3

@ talonmies가 말했듯이, 당신은 완전한 대답을 위해 질문에 충분한 정보를 제공하지 못했습니다. 그러나 설명하는 내용은 Thrustcopy_if 알고리즘에 적합합니다. this example을 확인하십시오.

+0

copy_if 메서드를 가리켜 주셔서 감사합니다. 이것은 더 이상 유효한 삼각형을 저장할 수있는 새로운 배열에 대한 인덱스를 얻는 데 사용할 수있는 atomicAdd() 함수로 이어졌습니다. – Markus