使用图 API 编写高效可移植代码
在计算机视觉和图像处理领域,编写性能可移植的应用程序是一个重要的目标。这意味着应用程序能够在不同的硬件平台上都能达到接近最优的性能。本文将介绍如何使用 OpenVX 图 API 来实现这一目标,包括 OpenVX 图的基本概念、节点和图参数的使用、执行模型以及一些高级特性。
1. OpenVX 图
在 OpenVX 中,程序由一个图来表示,图中包含计算节点和数据对象,计算节点对应函数,数据对象之间的连接对应数据流,这也暗示了执行顺序。
1.1 OpenVX 图是二分有向无环图(DAG)
OpenVX 图可以正式定义为二分有向无环图(DAG),表示为元组 (N, D, C),其中 N 是计算节点的集合,D 是数据对象的集合,C 是计算节点和数据对象之间的单向连接集合。
节点中心和数据中心的图表示方法可用于计算节点和数据对象之间的连接。OpenVX 节点 API 使用节点中心的图表示方法,每个节点创建 API 调用会在 OpenVX 图中实例化一个计算节点。
从数据中心的角度看,所有图输入在数据中心图表示中作为输入的计算节点集合为空,所有图输出作为输出的计算节点集合为空。并且,一个数据对象在图中最多只能由一个计算节点写入。
1.2 中间结果作为虚拟数据对象
在大多数情况下,中间数据对象(如 {D3, D6, D7})不会被应用程序访问。此时,应用程序可以将这些数据对象标记为虚拟数据对象,表示不会对其进行读写操作。
虚拟数据对象必须在节点中心图表示中作为输出出现一次,作为输入至少出现一次,并且其作用域仅限于创建它的图。使用虚
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



