OpenVX用户内核与功能参数

用户内核
OpenVX支持客户端定义函数的概念,这些函数应作为节点,从图形内部或图形内部执行。这种模式的目的是:
1)进一步利用OpenVX平台内节点的独立操作。
2)允许在OpenVX的其他地方重用组件化功能。
3)将严格的验证要求正式化(即合同编程)。
如图2-6所示,要执行客户端提供的函数,图形不必先暂停,然后再恢复。这些节点应相对于OpenVX中的独立基础节点,以独立的方式执行。如果存在利用此属性的硬件,能实现进一步最小化执行时间。
 
图2-6 具有用户内核节点的基本图
1.参数验证
用户内核必须通过为其实现的每个视觉功能,提供明确的验证功能来帮助图形验证工作。传递给用户内核的实例化节点的每个参数,都使用客户端提供的验证函数进行验证。客户端必须检查以下属性和/或每个参数的值:
1)必须检查参数的每个属性或值。例如,数组的大小,或在一个范围内的标量的值,或图像的维度约束,如宽度可分割性。一些实现可能有限制,例如图像宽度可以被某个固定数字整除。
2)如果输出参数依赖于输入参数的属性或值,则必须检查这些关系。
3)元格式对象是一个不透明的对象,用于收集有关输出参数的要求,然后OpenVX实现将对其进行检查。客户端必须手动设置要根据输出参数检查的相关对象属性,如维度、格式、缩放等。
2.用户内核命名约定
用户内核必须使用唯一名称和唯一枚举导出。OpenVX的客户端可能使用名称或枚举来检索内核,因此,非唯一名称引起的冲突将导致问题。内核枚举可以通过以下示例进行扩展。
#define VX_KERNEL_NAME_KHR_XYZ "org.khronos.example.xyz"
/*! \简要介绍XYZ示例库集
 * \ingroup group_xyz_ext
 */
#define VX_LIBRARY_XYZ (0x3) // 由Khronos分配,供应商控制的
 
/*! \简要介绍XYZ内核列表
 * \ingroup group_xyz_ext
 */
enum vx_kernel_xyz_ext_e {
    /*! \简要介绍用户定义内核示例 */
    VX_KERNEL_KHR_XYZ = VX_KERNEL_BASE(VX_ID_DEFAULT, VX_LIBRARY_XYZ) + 0x0,
    // 最多可以创建0xFFF内核枚举
};
愿景功能或实现的每个供应商,都必须向Khronos申请一个唯一的标识符。在获得唯一ID前,供应商必须使用VX_ID_DEFAULT。
要构造内核枚举,供应商必须同时具有其ID和库ID。库ID完全由供应商定义(但是,当使用VX_ID_DEFAULT ID时,许多库可能会在命名空间中发生冲突)。
一旦定义了两者,就可以使用VX_kernel_BASE宏和偏移量来构建内核枚举。偏移量是可选的,但对于长枚举非常有用。
2.2.11即时模式函数
OpenVX还包含<VX/vxu.h>中定义的接口,允许立即执行视觉功能。这些接口以vxu为前缀,以将它们与Node接口区分开来,Node接口的形式为vx<Name>Node。除了一些例外,这些接口中的每一个都复制一个Node接口。立即模式函数被定义为表现为单节点图,在函数返回后,在图框架内没有泄漏的副作用(例如,没有日志条目)。
2.2.12目标设备
目标指定执行节点或即时模式功能的物理或逻辑设备。这允许在不同的目标上使用视觉功能的不同实现。通过使用定义的API向应用程序共享目标。目标的选择允许对节点的执行位置,进行不同级别的控制。OpenVX实现必须至少支持一个目标。使用适当的枚举指定其他支持的目标。参阅vxSetNodeTarget、vxSetImmediateModeTarget和vx_target_e。OpenVX实现必须至少支持一个目标vx_target_ANY以及vx_target_STRING枚举数。OpenVX实现也可能支持这两个以上的功能,以指示特定设备的使用。例如,一种实现方式可以添加VX_TARGET_CPU和VX_TARGET _GPU枚举,以指示对两个可能的目标的支持,从而将节点分配(或执行即时模式功能)。
可以指示多个目标(例如CPU和GPU)存在的另一种方式,将目标指定为VX_target_STRING并使用字符串CPU和GPU。因此,使用名称而不是枚举数来定义目标。字符串或枚举数的特定命名不受规范强制执行,由供应商记录和传达目标命名。一旦在给定的实现中可用,应用程序可以将目标分配给节点,以指定必须使用API vxSetNodeTarget执行该节点的目标。对于即时模式功能,目标指定将来尝试执行该功能的物理或逻辑设备。当所选目标不支持立即模式功能时,执行将回退到VX_target_ANY。

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

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

相关文章

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

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

ubuntu下使用宝塔计划任务检测apache是否停止

ubuntu下使用宝塔计划任务检测apache是否停止,如果停止则启动apache,如果没停止则正常返回。 首先再宝塔计划任务里面新建一个任务: 然后检测代码为:#!/bin/bash# 检查Apache服务状态 if systemctl status httpd &> /dev/null; thenecho "Apache is running.&q…

【vulnhub靶场】隐蔽的计划任务提权 Funbox1

1. 侦查1.1 收集目标网络信息:IP地址1.2 主动扫描:扫描IP地址段1.3 搜索目标网站 2. 初始访问2.1 有效账户:默认账户2.2 利用面向公众的应用2.3 有效账户:默认账户 3. 权限提升3.1 计划任务/作业:Cron靶场下载地址: https://www.vulnhub.com/entry/funbox-1,518/1. 侦查 …

Snmpwalk工具如何在Windows和Linux的使用方法

一、什么是SNMP协议 SNMP(简单网络管理协议),顾名思义是一种网络管理的协议。SNMP是网络设备一个日常网络运维同行经常接触到的一个协议,不管是设备硬件系统的监控还是软件发出的告警,通通都能通过SNMP协议进行监控。SNMP总共有三个版本可以选择,通常选择的版本为v2c,因为…

万字长文,让你一文轻松掌握卡尔曼滤波!

万字长文,让你一文轻松掌握卡尔曼滤波!!!最近由于有个项目需要使用到目标追踪,于是便想着来复习一下卡尔曼滤波器,但是我发现目前网路上对卡尔曼滤波的教学大致呈现出了两家分化的趋势,即要么通篇都是理论,要么就是直接给一长串代码让你看,因此我打算参考这篇博客深入…

【流量分析】通过流量查看主机关键信息

主机信息包括:Host信息;操作系统信息;账户信息(域环境);一、如何找到Host信息? 一般通过DHCP或者NBNS两种协议,找到Host信息。NBNS是网络基本输入/输出系统(NetBIOS)名称服务器协议,是TCP/IP上的NetBIOS(NetBT)协议族的一部分,它在基于NetBIOS名称访问的网络上提…

进阶markdown语法

系统复习markdown进阶语法 目录系统复习markdown进阶语法1.文字颜色,字体,大小,文字高亮1.1 文字颜色1.2 文字字体1.3 文字高亮1.4 文字字号2.转义字符3. 表格3.1 基础表格3.2 带有对齐方式表格3.3 复杂表格4.脚注4.1 语法4.2 运用场景5.上下标5.1 上标5.2下标6. Tolist7. 锚…

基础markdown语法

系统复习markdown基础语法 1.分级标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题2.段落 直接回车即为分段 这是第一段 这是第二段这是换行这是第一段 这是第二段 这是换行 3.换行符 如果你需要换>=2行,那么只用回车是不可以的,我…

.NET 响应式编程 System.Reactive 系列文章(三):Subscribe 和 IDisposable 的深入理解

在 Rx 中,Subscribe() 方法返回一个 IDisposable 接口对象,用于手动取消订阅和释放资源。另外,System.Reactive 还提供了不返回 IDisposable 的 Subscribe 重载,这些重载方法通过 CancellationToken 管理订阅的生命周期。在本篇文章中,我们将深入探讨 Subscribe 和 IDispo…

【关节电机专栏】ESP32-S3控制大然电机

如何进行CAN初始化? 以下是ESP32-TWAI-CAN库的CAN总线初始化函数(begin()) bool begin(TwaiSpeed twaiSpeed = TWAI_SPEED_500KBPS, int8_t txPin = -1, int8_t rxPin = -1,uint16_t txQueue = 0xFFFF, uint16_t rxQueue = 0xFFFF,twai_filter_config_t* fConfig = nullptr,…

1.2.7 PMU设计中常见问题的分析解答

PMU设计中常见问题的分析解答 在 PMU(电源管理单元)设计中,常见的问题通常涉及电源性能、热管理、效率、安全性等多个方面。以下是一些常见问题及其分析与解答: 1. 输出电压不稳定 问题:PMU 的输出电压无法达到预期,存在较大的波动。 原因分析:负载变化:当负载发生变化…

1.2.6 PMU电源的散热处理及主要事项

PMU电源的散热处理及主要事项 PMU(Power Management Unit,电源管理单元)作为电子设备中实现电源调节和转换的重要组件,其散热处理至关重要,因为过高的温度会影响性能、可靠性和寿命。以下是 PMU 电源的散热处理方法及主要事项。 一、PMU 电源的散热处理方法选择合适的封装…