OpenVX功能参数分析

3. 节点参数
节点创建函数的参数定义为原子类型,如vx_int32、vx_enum,或对象,如vx_scalar、vx_image。框架应将节点创建功能的原子变量转换为vx_scalar引用,供节点使用。vx_scalar类型的节点参数,可以在图形执行期间更改;而如果改变原子类型的节点参数(vx_int32等),则至少需要图重新验证。通过vxGetParameterByIndex检索对vx_parameter的引用,然后将其传递给vxQueryParameter,以检索对该对象的引用,可以修改所有节点参数对象。
vx_parameter param = vxGetParameterByIndex(node, p);
vx_reference ref;
vxQueryParameter(param, VX_PARAMETER_REF, &ref, sizeof(ref));
如果参数的类型未知,则可以使用相同的函数进行检索。
vx_enum type;
vxQueryParameter(param, VX_PARAMETER_TYPE, &type, sizeof(type));
/* 原子是vx_scalar,将ref强制转换为正确的vx_<type>。*/
4. 图形参数
图形上也可能存在参数。这些参数由Graph定义,每个Graph参数都使用vxAddParameterToGraph定义为Graph中节点的特定参数。图形参数向实现传达,在图形执行之间,存在可以由客户端修改的特定节点参数。此外,它们是客户端可以在不引用节点时设置的参数,但可以使用vxSetGraphParameterByIndex引用Graph。这允许图形开发者构建图形工厂。
5. 执行模型
图形必须在以下两种情况下执行:
1)同步阻塞模式(vxProcessGraph将阻塞,直到图形完成)。
2)每个参考模式异步单次发布(通过vxScheduleGraph和vxWaitGraph)。
在异步模式下,图形必须是每个引用的单个问题。给定一个构造的图引用G,它可以被调度多次,但仅相对于其自身按顺序执行。提供给异步图形接口的多个图形引用没有定义的行为,并且可以根据行为或供应商的实现,并行或串行执行。
6.图形式主义
要使用图,必须制定若干规则,以允许确定性地执行图。processGraph(G)调用的行为,由处理图G的结构决定。处理图是由一组节点N1…Nn和一组数据对象d1…di组成的二分图。图中的每条边(Nx,Dy)表示由节点Nx写入的数据对象Dy,每条边(Dx,Ny)表示被节点Ny读取的数据对象Dx。每条边e都有一个名称name(e),它给出了引用相应数据对象的节点的参数名称。每个节点参数在{INPUT,OUTPUT}中,也有一个类型type(Node,name)。有些数据对象是虚拟的,有些数据对象则是延迟的。延迟数据对象只是具有索引(如图像列表)和图中已知链接点的数据对象的集合。一个节点可以被分类为头节点,它不具有向后依赖性。节点可以是依赖节点,其对头部节点具有向后依赖性。此外,处理图有几个限制:
1)输出类型:每个输出边 都需要{Output}中 。
2)输入键入:每个输入边 都需要{Input}中 。
3)单个写入器:每个数据对象最多是一个输出边的目标。
4)断开的循环:G中的每个循环必须至少包含输入边 ,其中 是Delay。
5)虚拟图像源:如果 是虚拟的,则至少有一个输出边缘写入 。
6)延迟数据对象不应是虚拟的:如果 为延迟,则不应为虚拟的。
7)无法输出统一的图像。
每个节点的执行由一个原子操作(有时称为激发)组成,该操作消耗表示每个输入数据对象的数据,对其进行处理,并生成表示每个输出数据对象的信息。当节点的所有输入边都被标记为已知时,节点可以执行。在图形执行前,将使用以下初始标记。
1)标记来自非虚拟对象Dx的所有输入边 (必须设置参数)。
2)具有输出边缘 的所有输入边缘 都是未标记的。
3)标记Dx是延迟数据对象的所有输入边 。
处理节点导致取消标记所有对应的输入边,并标记其所有输出边;标记Dy不是延迟的输出边缘 导致标记所有输入边缘 。可以按如下方式静态调度图中的节点:构造一个优先图P,包括所有节点 ,以及每对边 和 的边 ,其中 不是延迟。然后根据P的任何拓扑类,无条件地激发每个节点。
应验证以下断言:
1)P是一个有向非循环图(DAG),由4及其构造方法表示。
2)每个数据对象在执行时都有一个值,由5、6、7和标记表示。
3)如果节点是确定性的,则执行是确定性的(隐含在3、4和标记中)。
4)每个节点只完成一次执行。
这里描述的执行模型只是一种形式主义。例如,允许在多个依赖的节点和边上进行独立处理,前提是结果与此处描述的执行模型保持不变。
7.重叠数据对象
图2-2中节点N1的输出参数和节点N2的输入参数所引用的两个不同数据对象会导致这两个节点之间的依赖关系:例如,金字塔及其级别图像、由vxCreateImageFromROI或vxCreateImageFromChannel创建的图像及其子图像,或相同图像的重叠子图像,或从外部分配的缓冲区创建的具有重叠的对象。如果图使用从外部分配的具有重叠的缓冲区创建的对象,则图验证和/或图执行的行为由实现定义。图2-2显示了这种依赖关系的示例。为了简化随后的定义和要求,施加了一个限制,即如果子图像I'是从图像I创建的,并且子图像I''是从I'创建的,则I''仍然被视为I的子图像,而不是I'的子图像。在这些情况下,尽管两个节点引用了两个不同的数据对象,但对一个数据对象的任何更改,都可能反映在另一个数据对象中。因此,在图的拓扑顺序中, 在 前。为了确保这一点,导入了节点与引用示例,分别是如图2-2与图2-3所示。
图2-2 金字塔节点与引用示例
图2-3 图像节点与引用示例
1)包含集-C(d),d的递归包含的数据对象集,命名为包含集,定义如下:
② 是由d直接包含的所有数据对象的集合:
如果d是图像,则从d的ROI或通道创建的所有图像,都直接包含在d中。
如果d是一个金字塔,则d的所有金字塔级别都直接包含在d中。
如果d是一个对象数组,则d的所有元素都直接包含在d中。
如果d是延迟对象,则d的所有槽都直接包含在d中。
③对于i>1, 是d以第 阶包含的所有数据对象的集合。
④ 是包含d本身的集合,d所包含的数据对象,d所含的数据对象所包含的这些数据对象,依此类推。
2) 是一个等于真值的谓词,当且仅当d是一个映象。
3)重叠关系。
重叠关系 是为图像定义的关系,如果 中的 和 , 是图像,则
为真,当且仅当 和 重叠,即 和 中都包含 的点 。这个关系是自反的和对称的,但不是传递的: 与 重叠, 与 重叠并不一定表示 与 重合,如图2-4所示。
图2-4 重叠关系示例
4)依赖关系
依赖关系 是为节点定义的关系。 意味着 取决于 ,然后意味着 必须在 完成后执行。
5) ,如果 写入数据对象 并且 从数据对象 读取。
如果输出边缘 的数据对象 与数据对象 重叠,则结果是实现定义的。
vxMagnitudeNode和vxPhaseNode是独立计算的,因为它们不依赖于另一个的输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenVX参数节点执行独立性

8.节点执行独立性 在如图2-5所示例中,客户端根据输入图像、梯度幅度和梯度相位。OpenVX并不要求并行运行,但可以由OpenVX供应商实现。 图2-5 具有一些独立节点的简单图形。 构造这种图形的代码,如下所示。 vx_context context = vxCreateContext(); vx_image images[] = {…

4书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

BOF编写-修改时间戳

模板配置 跟着网上的教程使用evilashz师傅的模板,下载模板解压至vs的模板目录: %UserProfile%\Documents\Visual Studio 2022\Templates\ProjectTemplates​​ 创建新项目选择刚刚新增的类型:Beacon Object File​。 ​​ ‍ 环境适配 生成时报错,我使用的是2022版本的,模…

【分布式系统】 分布式调度 设计,要考虑 哪些问题?

一、分布式调度框架的核心功能二、什么是 任务调度 ?三、什么是分布式 任务调度 ?四、分布式调度框架的主要功能五、分布式调度框架的核心业务场景六、分布式任务调度的核心组件七、分布式任务调度的架构模式八、常见的分布式调度框架包括九、XXL-Job的工作流程十、 Quartz 的…

一文搞懂L1-L3业务流程体系分析,价值流、端到端流程、职能流程

今天我们聊聊业务流程体系分析这个话题。 业务流程的概念 业务流程是企业为实现目标而制定的一套系统化的工作方法。它由一系列有序的业务活动组成,按照既定规则将资源(输入)转化为有价值的结果(输出)。 在业务架构分析阶段,业务流程发挥着关键作用: • 明确业务运作的方…

[SSL/TLS/PKI] 基于`Let’s Encrypt`,获取免费SSL证书

缘起:云厂商卖的SSL证书太贵 概述:Let’s Encrypt 支持申请免费SSL证书的CA机构支持提供免费SSL证书的CA机构有:Let’s Encrypt ZeroSSL SSL For Free Cloudflare BuyPass AWS本文我们来试试 Let’s Encrypt 怎么用。https://letsencrypt.org/zh-cn/getting-started/Let’s …

.NET 响应式编程 System.Reactive 系列文章(二):深入理解 IObservableT 和 IObserverT

在 Rx 中,数据流的生产和消费是通过 观察者模式(Observer Pattern) 实现的。这种模式定义了两种角色: - IObservable.NET 响应式编程 System.Reactive 系列文章(二):深入理解 IObservable<T> 和 IObserver<T>引言:为什么我们调整了学习顺序? 在上一篇文章…

WebPack站点实战(一)

以下文章来源于一位不愿透露姓名的热心网友 ,作者不愿透露姓名的热心网友 文章配套B站视频,很多话语简略了,建议配着视频看。 地址:https://www.bilibili.com/video/BV13F411P7XB/ 开始之前了,简单过一下下面几个方法加深印象,便于更好理解加载器。也可以直接从webpack标…

CUDA概念

1.1.0f加个f,成单精度计算,不加会默认成double 2.快速指令:__add()加两个下划线 3.CUDA计算能力1.3以上才支持双精度,4.0往后支持双精度浮点计算 单精度浮点型(float )专指占用32位存储空间的单精度(single-precision )值。单精度在一些处理器上比双精度更快而且只占用…

12.09百度机器翻译SDK实验

一、实验要求百度机器翻译SDK实验(2024.11.15日完成) 任务一:下载配置百度翻译Java相关库及环境(占10%)。 任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。 任务三:完成百度翻译相关功能代码并测试调用,要求可以实现…

弹性波动力学笔记(十)罗格里德斯公式推导

在应力计算中大量需要轴旋转公式计算,因此本笔记给出了罗格里德斯轴旋转公式Note: Derivation of the Rodriguez Formula In this Note, we will derive a formula for \(\mathbf{R}(\widehat{\mathbf{n}},\theta)\) . Consider the three dimensional rotation of a vecto…

【Java编程】JDK 源码好用的类方法

Java JDK 提供了丰富的工具类和方法,涵盖了字符串处理、集合操作、日期时间处理、文件操作等多个方面。熟练掌握这些工具类和方法,可以显著提高开发效率和代码质量。如果你有特定的需求或问题,欢迎随时提问