计时函数与float32 float16 int8 数据转换
个人整理常用
部分来自 ncnn
计时函数
// window 平台
#include <windows.h>double get_current_time()
{LARGE_INTEGER freq; // 频率LARGE_INTEGER pc; // 计数QueryPerformanceFrequency(&freq);QueryPerformanceCounter(&pc);return pc.QuadPart * 1000.0 / freq.QuadPart; // us
}// android 平台 ios linux 等
#include <sys/time.h>double get_current_time()
{struct timeval tv;gettimeofday(&tv, NULL);return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0;
}
float32 float16 int8 数据转换
// convert float to half precision floating point
static unsigned short float32_to_float16(float value)
{// 1 : 8 : 23union{unsigned int u;float f;} tmp;tmp.f = value;// 1 : 8 : 23unsigned short sign = (tmp.u & 0x80000000) >> 31;unsigned short exponent = (tmp.u & 0x7F800000) >> 23;unsigned int significand = tmp.u & 0x7FFFFF;// fprintf(stderr, "%d %d %d\n", sign, exponent, significand);// 1 : 5 : 10unsigned short fp16;if (exponent == 0){// zero or denormal, always underflowfp16 = (sign << 15) | (0x00 << 10) | 0x00;}else if (exponent == 0xFF){// infinity or NaNfp16 = (sign << 15) | (0x1F << 10) | (significand ? 0x200 : 0x00);}else{// normalizedshort newexp = exponent + (- 127 + 15);if (newexp >= 31){// overflow, return infinityfp16 = (sign << 15) | (0x1F << 10) | 0x00;}else if (newexp <= 0){// underflowif (newexp >= -10){// denormal half-precisionunsigned short sig = (significand | 0x800000) >> (14 - newexp);fp16 = (sign << 15) | (0x00 << 10) | sig;}else{// underflowfp16 = (sign << 15) | (0x00 << 10) | 0x00;}}else{fp16 = (sign << 15) | (newexp << 10) | (significand >> 13);}}return fp16;
}// convert half precision floating point to float
static float float16_to_float32(unsigned short value)
{// 1 : 5 : 10unsigned short sign = (value & 0x8000) >> 15;unsigned short exponent = (value & 0x7c00) >> 10;unsigned short significand = value & 0x03FF;// fprintf(stderr, "%d %d %d\n", sign, exponent, significand);// 1 : 8 : 23union{unsigned int u;float f;} tmp;if (exponent == 0){if (significand == 0){// zerotmp.u = (sign << 31);}else{// denormalexponent = 0;// find non-zero bitwhile ((significand & 0x200) == 0){significand <<= 1;exponent++;}significand <<= 1;significand &= 0x3FF;tmp.u = (sign << 31) | ((-exponent + (-15 + 127)) << 23) | (significand << 13);}}else if (exponent == 0x1F){// infinity or NaNtmp.u = (sign << 31) | (0xFF << 23) | (significand << 13);}else{// normalizedtmp.u = (sign << 31) | ((exponent + (-15 + 127)) << 23) | (significand << 13);}return tmp.f;
}// round to nearest
static signed char float32_to_int8(float value)
{float tmp;if (value >= 0.f) tmp = value + 0.5;else tmp = value - 0.5;if (tmp > 127)return 127;if (tmp < -128)return -128;return tmp;
}相关文章:
计时函数与float32 float16 int8 数据转换
个人整理常用 部分来自 ncnn 计时函数 // window 平台 #include <windows.h>double get_current_time() {LARGE_INTEGER freq; // 频率LARGE_INTEGER pc; // 计数QueryPerformanceFrequency(&freq);QueryPerformanceCounter(&pc);return pc.QuadPart * 1000…...
自身免疫疾病诊断原料——博迈伦
自身免疫疾病是一类由免疫系统攻击正常组织和器官而引起的疾病。为了准确地诊断和监测自身免疫疾病,需要使用特定的诊断原料来进行实验室检测。这些诊断原料主要包括抗体试剂、抗原试剂和试剂盒等。 抗体试剂是用于检测和定量分析体内免疫系统产生的抗体的化学试剂。…...
cpu温度监测 Turbo Boost Switcher Pro for mac最新
Turbo Boost Switcher Pro是一款Mac电脑上的应用程序,旨在帮助用户控制和管理CPU的Turbo Boost功能。Turbo Boost是Intel处理器中的一项技术,可以在需要更高性能时自动提高处理器的频率。然而,这可能会导致电池消耗更快和温度升高。 以下是T…...
spring 请求 出现实体类大小写不一致 出现的问题
目录 1.问题背景 2.解决方法 但是会存在返回的既有大写也有小写的问题,需要在get方法也添加对应的注解 3.相关资料 1.问题背景 因数据库某字段存储的为json 格式,且数据库字段要求都有客户指定,因为该功能需要和其他项目进行对接。然后出现…...
zaabix实现对nginx监控
本文使用监控模板net.tcp.listen[port]实现监听端口 实验环境: 首先搭建好zabbix-server ,zabbix-agenthttps://mp.csdn.net/mp_blog/creation/editor/132622769?spm1001.2014.3001.9457 而后在zabbix-agent主机上下载一个nginx 登录zabbix网站创建主…...
基于AI视觉的表面缺陷检测设备优势显著,加速制造业数智化转型
作为生产制造过程中不可缺少的一步,表面缺陷检测广泛应用于工业领域,包括3C电子、芯片半导体、食品医药、木材等行业。但随着智能化进程加快,制造工厂生产线的质量检测压力加剧,传统人工表面缺陷检测已经无法满足当前社会较高的检…...
操作系统权限提升(二十六)之数据库提权-MySQL UDF提权
MySQL UDF提权 MySQL介绍 MySQL是最流行的开放源码SQL数据库管理系统,相对于Oracle,DB2等大型数据库系统,MySQL由于其开源性、易用性、稳定性等特点,受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎,MySQL具有…...
基于 IntelliJ 的 IDE 将提供 Wayland 支持
导读对于使用 IntelliJ 开发环境的用户,JetBrains 一直致力于提供原生 Wayland 支持。 JetBrains 正在致力于为基于 IntelliJ 的 IDE 提供 Wayland 支持,以增强 Linux 桌面体验以及在 Windows Subsystem for Linux 下运行。 Wayland 支持功能尚未完成&…...
誉天在线项目~ElementPlus Tag标签用法
效果图 页面展现 <el-form-item label"课程标签"><el-tagv-for"tag in dynamicTags":key"tag"class"mx-1"closable:disable-transitions"false"close"handleClose(tag)"style"margin:5px;">…...
iText实战--Table、cell 和 page event
5.1 使用表和单元格事件装饰表 实现PdfPTableEvent 接口 实现PdfPCellEvent 接口 合并表格和单元格事件 5.2 基本构建块的事件 通用块(Chunk)功能 段落(Paragraph)事件 章节(Chapter)和 区域(…...
WampServer下载安装+cpolar内网穿透实现公网访问本地服务【内网穿透】
文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…...
Elasticsearch 入门 索引、分词器
term, match_phrase, match查询 参考 ElasticSearch match, match_phrase, term的区别 term是对输入不分词,进行全文索引查询。存储时是否启用分词器,会影响查询效果match_phase对输入分词,但要求查询时将每个term都搜到,且顺序…...
Android NDK 中有导出 sp智能指针吗?如果没有,可以用什么方法代替 android::sp 智能指针
Android NDK 中有导出 sp智能指针吗?如果没有,可以用什么方法代替 android::sp 智能指针 Author: Lycan Note: 以下问题解答通过大模型生成,主要用于个人学习和备忘,仅供参考,若有错误或者侵权,请联系我修…...
网络爬虫-----爬虫的分类及原理
目录 爬虫的分类 1.通用网络爬虫:搜索引擎的爬虫 2.聚焦网络爬虫:针对特定网页的爬虫 3.增量式网络爬虫 4.深层网络爬虫 通用爬虫与聚焦爬虫的原理 通用爬虫: 聚焦爬虫: 爬虫的分类 网络爬虫按照系统结构和实现技术&#…...
uniapp级联菜单地点区域使用label值,web端el-cascader绑定的value
效果图 一、uniapp uniapp级联菜单地点区域使用label值 1.ui使用 <uni-forms-item label="地址" name="userArea" required><view class="" style="height: 100%;display: flex;align-items: center;">...
合肥先进光源国家重大科技基础设施项目及配套工程启动会纪念
合肥先进光源国家重大科技基础设施项目及配套工程启动会纪念 卡西莫多 合肥长丰岗集里 肥鸭从此别泥塘 先平场地设围栏 进而工地筑基忙 光阴似箭指日争 源流汇智山水长 国器西北扩新地 家校又添新区园 重器托举有群力 大步穿梭两地间 科教兴邦大国策 技术盈身坦荡行…...
力扣第47天--- 第647题、第516题
# 力扣第47天— 第647题、第516题 文章目录 一、第647题--回文子串二、第516题--最长回文子序列 一、第647题–回文子串 逻辑梳理清楚了,就还行。没有想象中那么难。注意遍历顺序,i从大到小。 class Solution { public:int countSubstrings(string …...
dll文件找不到,微软官方地址
dll文件找不到,微软官方地址 文件地址dllMicrosoft Visual C 2008 Redistributable Package ATL 安全更新https://www.microsoft.com/zh-cn/download/details.aspx?id10430Visual C Redistributable for Visual Studio 2012 Update 4https://www.microsoft.com/zh…...
【音视频】FLV封装格式
基本概念 文件头(Header)文件体(Body) flv文件头 主要是看signture和typeflags flv文件体 重点:Tag包数据 Tag结构详细说明 注意: 每个Tag的头字段DataSize只是该Tag下data部分的大小,不包括Tag的header部分的大小 音频 AudioTag Data 所在…...
别再纠结线程池池大小、线程数量了,哪有什么固定公式 | 京东云技术团队
可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 - 核心数 1 I/O 密集型的程序 - 核心数 * 2 不会吧,不会吧,真的有人按照这个理论规划线程数? 线程数和CPU利用率的小测试 抛开一些操作系统,计算机原…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
