8

机器学习与计算机视觉(opencl编程)

 4 years ago
source link: https://feixiaoxing.blog.csdn.net/article/details/105901264
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

机器学习与计算机视觉(opencl编程)

original.png
费晓行 2020-05-03 11:37:52 articleReadEyes.png 538

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

    因为学习cuda的原因,所以最近一段时间对GPU编程比较感兴趣。大家都知道,cuda是属于nvidia公司的产品,那么我就在想,对于其他公司开发的GPU产品,他们是怎么做的?结果就是opencl编程。

1、opencl编程

    opencl支持nvidia、ati、arm等多个gpu,也可以在嵌入式设备上完成。

2、opencl的编译环境

    大部分安装了gpu的编程环境,比如说cuda sdk,就可以开发opencl编程了。

3、最简单的opencl代码

https://github.com/giobauermeister/OpenCL-test-apps/blob/master/cl_sample_timer/cl_sample_timer.c

4、编译opencl代码的时候需要注意什么

    在链接的时候添加OpenCL.lib即可

5、查询opencl设备信息

    可以参考这个链接,https://www.cnblogs.com/mtcnn/p/9411861.html

    用到的api主要就是两个,clGetPlatformIDs & clGetPlatformInfo

6、opencl和cuda的相同之处

    opencl和cuda结构上差不多,一部分api代码都是在cpu运行的,只有kernel部分的代码才是在gpu上运行的。当然除了c语言之外,opencl和cuda都是支持python的,将kernel代码传给python就可以了,使用起来不复杂。

7、opencl和cuda的关系

    opencl&cuda有点类似于opengl&direct x的关系。对于跨平台来说,opencl更好,但是cuda的生态更棒。本身cuda除了cudnn之外,还提供了很多的第三方库,这些对于需要数学库移植的同学来说太方便了。

8、个人怎么学习使用

     如果是在nvidia的环境开发,那么多多使用cuda,总归没有错的。但是如果arm系列的gpu,opencl基本上是你唯一的选择。不然,你只能使用neon指令去加速一些特殊的算法了。

9、opencl & opencv

    现在很多朋友使用opencl加速opencv的效果不明显,建议可以自己编写opencv算法、测试高分辨率图片、用很多图片来测试算法,看看原因出在哪里。另外测试的时候多让图像在gpu保存,不要在cpu和gpu之间搬来搬去,这样很浪费时间。

    当然,现在除了opencl,也有一种并发框架,类似于openmp,它就是openacc,https://www.openacc.org/get-started

    参考代码链接在这https://yq.aliyun.com/articles/71262,内容如下

    目前soc上面的dsp、fpga、gpu、nn其实都是可以用来数据计算的。只不过因为功耗、习惯、技术积累的原因,通常我们只使用其中的一种技术。这个时候,就要适当多了解一下其他硬件编程技术。不管从哪方面讲,opencl&cuda都是非常不错的,既满足了并发的要求,而且学习难度上也小很多。dsp&fpga太小众了,nn也是每一家都有自己的方案,自己能控制的可能只剩下GPU编程这一种了。

    安装了cuda之后,就可以opencl编程,比如https://blog.csdn.net/liu798675179/article/details/53240803


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK