簡體   English   中英

C ++,OpenCV和用於跨平台GPU編程的“什么”

[英]C++, OpenCV and “what” for cross-platform GPU programing

我想編寫一個計算機視覺問題的跨平台代碼。 此代碼應該在具有GPU(nVidia)的PC上運行,具有GPU的iPhone和可能包含GPU的某些基於Android的設備可能不運行。 我想獲得現有硬件的最大可能利用率。 我的編程語言是C ++ 11,我的計算機視覺庫是OpenCV。 什么是最好的框架,層,技術等等,以便編寫一個孤立的高級代碼,如果可用,可以從GPU中使用。

PS這可以作為要求推薦的偏離主題顯示。 但實際上我並沒有在許多可用選項之間提出要求。 我只是詢問這通常是如何完成的,或者這個領域的現狀是什么。

對於多平台,我將主張將其保留在C / C ++中並使用通常的線程庫。

雖然在iOS中你只有一個供應商而且OpenCV團隊可以根據需要投入精力進行調整,在Android上有各種CPU / GPU供應商,所以Google / Android團隊使用RenderScript( 為什么Google選擇RenderScript而不是(OpenCL )並沒有正式支持OpenCL。 包括非RenderScript GPU計算選項必須來自英特爾,高通等各個供應商,以及完整性nVidia的CUDA。

意識到移動平台的發展速度遠遠超過PC,即英特爾首次發布Core i系列(2008)與現在可用的手機類型。

在管道的下方還有OpenGL ES 3.1和Vulkan中的計算着色器。 因此,如果您正在尋找基線 - 在C / C ++線程領域會更好。

現在,如果你真的有一個移動應用程序,你需要推動性能,那么你可以找出你選擇的移動平台需要什么樣的優化。

我認為以下技術堆棧對您的要求非常有意義:

  • OpenCL適用於配備nVidia GPU或任何其他供應商的各種桌面工作站,適用於Android上的GPU編程。
  • 用於iOS上GPU編程的Metal ,因為它很少用於移植OpenCL實現:

如果您認為Metal可能是一個原因 - 該語言看起來非常像OpenCL,因為它只是Apple希望的OpenCL。 因此,在兩種語言之間移植非常簡單。 這也意味着通過一些小的修復,Metel內核可以由現有的OpenCL編譯器編譯。

http://streamcomputing.eu/blog/2015-05-09/apples-dragging-opencl-compiler-problem/ ,上次訪問時間為07.12.2015)

關於OpenCV

OpenCV部分支持OpenCLhttp://docs.opencv.org/2.4/modules/ocl/doc/introduction.html ,最后在2015年12月7日訪問),但據我所知是沒有辦法OpenCV不使用的iOS下的GPU( OpenCV的在iOS上 - GPU使用? )。

因此,如果您想要將GPU加速,那么iOS在將基於OpenCV的算法移植到該平台方面將是棘手的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM