首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++、OpenCV和跨平台GPU编程的“什么”

C++、OpenCV和跨平台GPU编程的“什么”
EN

Stack Overflow用户
提问于 2015-12-07 15:27:36
回答 2查看 2.1K关注 0票数 3

我想为计算机视觉问题编写一个跨平台代码。这段代码应该运行在带有GPU (nVidia)的PC上,使用GPU的iPhone和一些可能包含或不包含GPU的安卓设备上。我希望最大限度地利用现有硬件。我的编程语言是C++ 11,我的计算机视觉库是OpenCV。什么是最好的框架,层,技术..。等使用,以便编写一个孤立的高级代码,可以利用从GPU,如果它是可用的。

P.S.这可以显示为非主题要求推荐。但在这里,我并不是在问许多可供选择的方案。我只是在问这通常是如何完成的,或者这一领域的技术现状如何。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-07 16:50:54

我认为以下技术栈对您的需求非常有意义:

  • OpenCL适用于配备nVidia图形处理器或任何其他厂商的各种台式机站,也适用于安卓上的GPU编程。
  • Metal用于iOS上的GPU编程,因为它在移植OpenCL实现方面的工作很少:

如果你认为金属可能是一个原因-这种语言看起来非常像OpenCL,因为它只是OpenCL,就像苹果所希望的那样。因此,在这两种语言之间进行移植非常简单。这也意味着,通过一些小的修复,现有的OpenCL编译器可以编译一个Metel内核。

(http://streamcomputing.eu/blog/2015-05-09/apples-dragging-opencl-compiler-problem/,最后一次访问时间为2015年12月7日)

关于OpenCV

OpenCV部分支持OpenCL (http://docs.opencv.org/2.4/modules/ocl/doc/introduction.html,最后一次访问于2015年7月12日),但是OpenCV无法利用iOS下的GPU (OpenCV on iOS - GPU usage?)。

因此,在将基于iOS的算法移植到该平台方面,iOS将是一个棘手的部分,如果您希望它被加速。

票数 2
EN

Stack Overflow用户

发布于 2015-12-07 17:47:10

对于多平台,我将主张将其保存在C/C++中,并使用通常的线程库。

虽然在iOS中只有一家供应商,而OpenCV团队可以根据需要进行优化,但在安卓上有多种CPU/GPU供应商,因此谷歌/安卓团队使用了RenderScript (Why did Google choose RenderScript instead of OpenCL),并不正式支持OpenCL。包括一个非RenderScript GPU计算选项,将必须来自个人供应商,如英特尔,高通,以及完整的nVidia的CUDA。

意识到移动平台的发展速度比个人电脑快得多,也就是说,你可以从英特尔获得的手机类型首先发布了Core系列(2008)和现在可用的产品。

再往下看,在OpenGL、ES、3.1和Vulkan中有计算阴影。因此,如果您正在寻找基线-您将更好地在C/C++线程的土地。

现在,如果您确实有一个移动应用程序,您需要它来提高性能,那么您可以在您选择的移动平台上找出所需的优化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34137200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档