Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164705
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 344
  • 用 户 组: 普通用户
  • 注册时间: 2019-09-08 12:19
个人简介

关于个人介绍,既然你诚心诚意的看了 我就大发慈悲的告诉你 为了防止世界被破坏 为了维护世界的和平 贯彻爱与真实的邪恶 可爱又迷人的反派角色 我们是穿梭在银河的火箭队 白洞,白色的明天在等着我们

文章分类

分类: C/C++

2019-12-24 10:35:49

OpenVX我觉得可以认为是OpenCV的嵌入式版本(计算机视觉和人工智能),OpenVX提供一些图像处理的标准的API,系统第三方Vendor可以用硬件来实现一些图像处理功能,效率更高,而OpenCV则偏向于用Software的方式来实现这一些定义的功能(本章只是简单做一个记录,并不详细说实现)

在OpenVX当中,有一个关键词叫做kernel,这里的kernel并不是指操作系统的kernel,而是指OpenVX中的一种功能,比如对一个图片进行高通滤波的功能就是openVX的一个功能,这在OpenVX里面叫做一个user kernel。既然kernel是一种提供给用户使用的功能,那么这个功能函数一般支持传参,通过参数的不同来改变kernel的运行结果(比如传入的图片就算一个参数),在OpenVX当中,把参数定义初始化好后的kenrel叫做node,  因此,node就是kernel的一个实例化即拥有指定参数的kernel。在CNN中,OpenVX的node就是一个layer层,而OpenVX的运行是基于node来运行的,所有的node会被链接到图(graph)中,最后由graph统一运行。运行例子如下(具体编程参考后面的链接):

既然存在user kernel(这个功能运行在当前CPU上),TI在openVX的基础上增加了remote kernel即这个Kernel函数是运行在其他CPU上面的,这样做可以让多个CPU并行运算,提升运行效率,比如将不同功能分发给擅长该功能的CPU运行,可以事半功倍(这里就简单提一下,不详细说具体实现)。

TI的多核并行运算TIOpenVX数据逻辑如下(远程CPU之间通信是通过共享内存和rpmsg实现,下图是一个DSP+ARM流程图):


TI修改后的TiOpenVX代码初始化逻辑框架如下:



参考链接:https://www.khronos.org/registry/OpenVX/specs/1.1/html/da/d83/group__group__user__kernels.html

OpenVX的编程文档链接
https://www.khronos.org/registry/OpenVX/specs/1.2.1/OpenVX_Specification_1_2_1.pdf


阅读(420) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

BugMan2019-12-25 15:50:52

基本概念:
    梯度就是微分(求导),结果是斜率,积分的结果是面积。向量的点积和叉积不一样,点积结果是数字,叉积结果是向量。([M*N] x [N*M] = [M*M]; [a1, b1]*[a2, b2] = a1*a2+b1*b2)

评论热议
请登录后评论。

登录 注册