2016-06-13 3 views
0

문서에서 일치하는 값을 가진 벡터 값 (1d 행렬)의 인덱스를 검색하는 방법을 보여주는 구현 사례를 찾을 수 없습니다. 가장 가까운 예는 다음과 같습니다OpenCV 벡터에서 값 검색

Mat b; 
Mat a = b == 5; 

그래서이 나에게 논리 값의 매트릭스를 제공해야합니다. 그리고 나서이 값을 사용하여 5와 동일한 값의 인덱스를 추출 할 수 있습니다. 더 효과적인 방법이 있습니까? 벡터의 모든 값을 GPU에 병렬로 전송 한 다음 5와 같은 유일한 (또는 첫 번째) 값의 인덱스를 반환해야합니다.

std::find(...); 

병렬 GPU 솔루션에만 관심이 있습니다.

답변

0

변환 축소를 통해 쉽게 수행 할 수 있습니다.

먼저 일치하는 벡터 요소를 해당 인덱스와 일치하지 않는 요소를 큰 수 (예 : 벡터 크기)로 변형합니다.

그런 다음 축소 단계에서 배열의 첫 번째로 일치하는 요소의 인덱스 인 최소값을 찾습니다.

이것은 O (log (n)) 알고리즘이며 GPU로 효율적으로 수행 할 수 있습니다.

당신은 추력이나 자신의 커널을 작성하여 구현할 수 있습니다.

https://thrust.github.io/doc/group__transformed__reductions.html