[体験]アンドロイド+ OpenCVの+ UMAT + OpenCLの使用経験

最近、アンドロイドの下にOpenCVのサポートOpenCLのをコンパイルし、キーはOpenCLのCVを使用する能力である:: UMATはCVを交換::マット。
実際の使用は非常に未熟なピット、多くのを発見した後、実際の製品の性能を向上させるために、この方法を使用することをお勧めしません。

  • UMATはGPUから生成されるたびにメモリを割り当てます、とGPUのメモリ割り当てが非常に遅いです。マットを使用した場合、このオーバーヘッドは同じことに言及する価値はありませんが、UMATありません。したがって、UMATが繰り返さ分布を避けるために、再利用することを確認する必要があります。
  • mat.getUMat()メソッドの多くのピットは、間違って参照カウントを確認することが困難であり、原則を理解していません。そこで我々は、代わりにmat.copyTo(UMAT)を使用してきました。
  • mat.copyTo(UMAT)とumat.copyTo(マット)が非常に遅いので、時間がデータのコピーよりも大きい計算するようにしてください、コピーコスト、使用UMATは、パフォーマンスの向上をもたらすことができるオフセット。
  • 例えば、そのような機能CV :: cvtColor(umat_in、umat_out)、初めては、コンパイルのコア機能はOpenCLの非常に時間がかかるので、非常に遅いです。初めてのコンパイルのオーバーヘッドに非常に多くのあなたが使用したい倍、そしてより多くのを無視することができます。
  • カーネルのほかに質問をコンパイルします。すぐに2回目以降の、しかしと呼ばれるこのコンパイルは一度カーネルは意味がありませんが、OpenCVのは、一度にコンパイルするC-スタイル、各コール、カーネル関数です。
  • GPUコンピューティングをCPUまたは行って、あなたは知らないの完成と最後に:T-APIは、APIのセットが両方のマットとサポートUMATをサポートしていますが、ピットは、よさそうです。着信UMATが2の倍数に整列されなければならないように、例えば、私はそれ以外の場合は演算CPUに縮退します、CV :: DFT()を使用します。これは、ピットを降りてきた - 私はmat.copyTo(UMAT)、その後、CVに渡されます:: DFT()、内部のGPUコンピューティングの機能が自動的にCPUの計算に退化した後に検出することができないが、その後、内部umat.getMat()前後に4回GPUのメモリコピー、無駄つ以上のGPUのメモリコピーに加え、外部の呼び出しで、mat.getUMatの完了後に計算され、二回コピーされました。
  • OpenCVの関数は、つまり、すべてのコピーをするOpenCLのキューをサポートし、CPUとGPUが非同期を許可していない計算されていません。でも、GPUはCPUの圧力を共有しますが、CPUは、GPUコンピューティングの結果を待っています。
  • ビューのOpenCLのソーススタイルの点からサポートは、めったにだけインテルのGPU&AMDのGPUテスト、オンライン記事のアンドロイド+ OpenCVの+ OpenCLの上で最初にT-APIにはそうではありません - 推測:OpenCLの中アンドロイドの下にOpenCVの加速度が加速度をテストするには、Androidプラットフォーム用に特別ではないかもしれません。以前のは、実現可能な実績のないこの方法!

おすすめ

転載: www.cnblogs.com/ahfuzhang/p/11220097.html