[체험] 안드로이드 + OpenCV의 + UMAT + OpenCL을 사용 경험

최근 안드로이드에서 OpenCV의 지원 OpenCL을 컴파일, 키가 OpenCL을 이력서를 사용하는 능력이다 :: UMAT은 이력서를 대체 :: 매트.
실제 사용은 매우 미숙 한 구덩이를 많이 발견 후, 실제 제품의 성능을 향상시키기 위해이 방법을 사용하지 않는 것이 좋습니다.

  • UMAT은 GPU에서 발생 때마다 메모리를 할당하며, GPU 메모리 할당은 매우 느립니다; 매트를 사용하는 경우, 이러한 오버 헤드는 언급 할 가치가 아니라, UMAT하지 같은 일. 따라서, UMAT 반복 유통을 방지하기 위해, 재사용해야한다.
  • 틀린 참조 횟수 확인하기 어려운 mat.getUMat () 메소드 많은 피트는 원리를 이해하지 않았다. 따라서 우리는 대신 mat.copyTo (UMAT)를 사용하여왔다.
  • mat.copyTo (UMAT)와 umat.copyTo (매트) 매우 느린, 그래서, 기간 데이터가 복사보다 더 큰 계산해야하는 비용, 사용 UMAT은 성능 향상을 가져올 수 오프셋 복사합니다.
  • 예를 들어, 함수 이력서 :: cvtColor (umat_in, umat_out), 처음으로 컴파일의 핵심 기능은 OpenCL을 매우 시간이 많이 소요하기 때문에, 매우 느립니다. 처음으로 컴파일 오버 헤드에 이렇게 많은 사용하려는 시간, 더는 무시할 수 있습니다.
  • 커널 외에 질문을 컴파일 : 곧 두 번째 시간 이후,하지만이라는 컴파일마다 한 번씩 커널이 말이 없지만 OpenCV의는 한 번 컴파일하는 C 스타일, 각 호출, 커널 함수이다.
  • GPU 컴퓨팅 CPU 나 수행, 당신이 모르는의 완료와 함께 결국 : T-API는 API의 집합이 모두 매트 및 지원 UMAT을 지원하지만 구덩이가 좋아 보인다. 수신 UMAT 2의 배수로 정렬되어야 예를 들어, I, 그렇지 않으면 계산 CPU으로 퇴화되며, CV : DFT ()를 사용한다. 그것은 구덩이를 내려와 - 내가 mat.copyTo (UMAT), 다음 이력서에 전달합니다 :: 도막 (), 내부 GPU 컴퓨팅의 기능이 자동으로 CPU의 계산으로 변질 이후에 감지 할 수 없습니다, 다음 내부 umat.getMat () 앞뒤로 네 번 GPU 메모리 복사, 헛된 두 개 이상의 GPU 메모리 복사, 플러스 외부 호출에, mat.getUMat 완료 후 계산을 두 번 복사됩니다.
  • OpenCV의 기능, 즉, 오픈 CL의 모든 사본을 대기열을 지원 비동기를 허용하지 않는 CPU와 GPU를 계산하지 않습니다. 심지어 GPU는 CPU의 압력을 공유하지만 CPU는 GPU 컴퓨팅의 결과를 기다리고있다.
  • 보기의 오픈 CL 소스 스타일 포인트의 지원은 거의에만 인텔 GPU 및 AMD의 GPU 테스트, 온라인 기사의 안드로이드 + OpenCV의 + 오픈 CL에 처음 T-API에 가능성이 없다 - 추측 : OpenCL을 안드로이드에서 OpenCV의 가속 가속을 테스트하기 위해 안드로이드 플랫폼을 위해 특별히하지 않을 수 있습니다. 이 방법에는 이전은 가능 입증하지 않습니다!

추천

출처www.cnblogs.com/ahfuzhang/p/11220097.html