当前位置: 首页 > news >正文

计时函数与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…...

自身免疫疾病诊断原料——博迈伦

自身免疫疾病是一类由免疫系统攻击正常组织和器官而引起的疾病。为了准确地诊断和监测自身免疫疾病&#xff0c;需要使用特定的诊断原料来进行实验室检测。这些诊断原料主要包括抗体试剂、抗原试剂和试剂盒等。 抗体试剂是用于检测和定量分析体内免疫系统产生的抗体的化学试剂。…...

cpu温度监测 Turbo Boost Switcher Pro for mac最新

Turbo Boost Switcher Pro是一款Mac电脑上的应用程序&#xff0c;旨在帮助用户控制和管理CPU的Turbo Boost功能。Turbo Boost是Intel处理器中的一项技术&#xff0c;可以在需要更高性能时自动提高处理器的频率。然而&#xff0c;这可能会导致电池消耗更快和温度升高。 以下是T…...

spring 请求 出现实体类大小写不一致 出现的问题

目录 1.问题背景 2.解决方法 但是会存在返回的既有大写也有小写的问题&#xff0c;需要在get方法也添加对应的注解 3.相关资料 1.问题背景 因数据库某字段存储的为json 格式&#xff0c;且数据库字段要求都有客户指定&#xff0c;因为该功能需要和其他项目进行对接。然后出现…...

zaabix实现对nginx监控

本文使用监控模板net.tcp.listen[port]实现监听端口 实验环境&#xff1a; 首先搭建好zabbix-server &#xff0c;zabbix-agenthttps://mp.csdn.net/mp_blog/creation/editor/132622769?spm1001.2014.3001.9457 而后在zabbix-agent主机上下载一个nginx 登录zabbix网站创建主…...

基于AI视觉的表面缺陷检测设备优势显著,加速制造业数智化转型

作为生产制造过程中不可缺少的一步&#xff0c;表面缺陷检测广泛应用于工业领域&#xff0c;包括3C电子、芯片半导体、食品医药、木材等行业。但随着智能化进程加快&#xff0c;制造工厂生产线的质量检测压力加剧&#xff0c;传统人工表面缺陷检测已经无法满足当前社会较高的检…...

操作系统权限提升(二十六)之数据库提权-MySQL UDF提权

MySQL UDF提权 MySQL介绍 MySQL是最流行的开放源码SQL数据库管理系统&#xff0c;相对于Oracle&#xff0c;DB2等大型数据库系统&#xff0c;MySQL由于其开源性、易用性、稳定性等特点&#xff0c;受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎&#xff0c;MySQL具有…...

基于 IntelliJ 的 IDE 将提供 Wayland 支持

导读对于使用 IntelliJ 开发环境的用户&#xff0c;JetBrains 一直致力于提供原生 Wayland 支持。 JetBrains 正在致力于为基于 IntelliJ 的 IDE 提供 Wayland 支持&#xff0c;以增强 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 基本构建块的事件 通用块&#xff08;Chunk&#xff09;功能 段落&#xff08;Paragraph&#xff09;事件 章节&#xff08;Chapter&#xff09;和 区域&#xff08;…...

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 集成安装环境&#xff0c;是一组常用来…...

Elasticsearch 入门 索引、分词器

term, match_phrase, match查询 参考 ElasticSearch match, match_phrase, term的区别 term是对输入不分词&#xff0c;进行全文索引查询。存储时是否启用分词器&#xff0c;会影响查询效果match_phase对输入分词&#xff0c;但要求查询时将每个term都搜到&#xff0c;且顺序…...

Android NDK 中有导出 sp智能指针吗?如果没有,可以用什么方法代替 android::sp 智能指针

Android NDK 中有导出 sp智能指针吗&#xff1f;如果没有&#xff0c;可以用什么方法代替 android::sp 智能指针 Author: Lycan Note: 以下问题解答通过大模型生成&#xff0c;主要用于个人学习和备忘&#xff0c;仅供参考&#xff0c;若有错误或者侵权&#xff0c;请联系我修…...

网络爬虫-----爬虫的分类及原理

目录 爬虫的分类 1.通用网络爬虫&#xff1a;搜索引擎的爬虫 2.聚焦网络爬虫&#xff1a;针对特定网页的爬虫 3.增量式网络爬虫 4.深层网络爬虫 通用爬虫与聚焦爬虫的原理 通用爬虫&#xff1a; 聚焦爬虫&#xff1a; 爬虫的分类 网络爬虫按照系统结构和实现技术&#…...

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题–回文子串 ​ 逻辑梳理清楚了&#xff0c;就还行。没有想象中那么难。注意遍历顺序&#xff0c;i从大到小。 class Solution { public:int countSubstrings(string …...

dll文件找不到,微软官方地址

dll文件找不到&#xff0c;微软官方地址 文件地址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文件体 重点&#xff1a;Tag包数据 Tag结构详细说明 注意&#xff1a; 每个Tag的头字段DataSize只是该Tag下data部分的大小&#xff0c;不包括Tag的header部分的大小 音频 AudioTag Data 所在…...

别再纠结线程池池大小、线程数量了,哪有什么固定公式 | 京东云技术团队

可能很多人都看到过一个线程数设置的理论&#xff1a; CPU 密集型的程序 - 核心数 1 I/O 密集型的程序 - 核心数 * 2 不会吧&#xff0c;不会吧&#xff0c;真的有人按照这个理论规划线程数&#xff1f; 线程数和CPU利用率的小测试 抛开一些操作系统&#xff0c;计算机原…...

短效与动态代理IP区别,时效特性是关键

短效代理IP和动态代理IP最直观、最核心的区别&#xff0c;在于IP存活时长的时效特性&#xff0c;这也是两者适配不同场景的关键的原因。很多用户选型失误&#xff0c;本质是没有吃透两者的时效差异&#xff0c;导致所选代理无法匹配自身业务需求&#xff0c;出现IP失效快、资源…...

Ubuntu24.04上快速部署Odoo18开发环境的完整指南

1. 为什么选择Ubuntu24.04作为Odoo18开发环境 作为一个在ERP领域摸爬滚打多年的开发者&#xff0c;我强烈推荐使用Ubuntu24.04作为Odoo18的开发平台。这不仅仅是因为官方文档的建议&#xff0c;更是来自实际项目中的血泪教训。记得去年接手一个企业ERP项目时&#xff0c;客户坚…...

如何从零构建6GHz开源矢量网络分析仪:3个核心模块详解

如何从零构建6GHz开源矢量网络分析仪&#xff1a;3个核心模块详解 【免费下载链接】LibreVNA 100kHz to 6GHz 2 port USB based VNA 项目地址: https://gitcode.com/gh_mirrors/li/LibreVNA LibreVNA是一款功能强大的开源USB矢量网络分析仪&#xff0c;工作频率覆盖100k…...

Python AI推理卡顿元凶锁定:Cuvil IR图层分析法,3分钟定位动态shape引发的kernel重编译瓶颈

第一章&#xff1a;Cuvil编译器在Python AI推理中的核心定位与价值Cuvil编译器并非传统意义上的通用语言编译器&#xff0c;而是专为Python生态中AI模型推理阶段深度优化的静态编译基础设施。它直接作用于PyTorch/TensorFlow导出的TorchScript或ONNX中间表示&#xff0c;将高层…...

【声纳与人工智能融合——从理论前沿到自主系统实战】第四章 认知声纳与自适应信号处理(AI+SP深度融合)

目录 第四章 认知声纳与自适应信号处理(AI+SP深度融合) 4.1 认知声纳系统架构与感知循环 4.1.1 感知-规划-行动闭环设计 4.1.1.1 动态环境感知与反馈机制 4.1.1.2 基于强化学习的波形自适应选择 4.1.2 开放式认知声纳体系结构 4.1.2.1 硬件可重配置架构(SDR) 4.1.2…...

用Neural Renderer和PyTorch搞定3D车辆模型渲染:从.obj文件到Carla数据集实战

3D车辆模型渲染实战&#xff1a;Neural Renderer与Carla数据集深度整合指南 在自动驾驶和计算机视觉领域&#xff0c;逼真的3D车辆模型渲染技术正成为算法开发和测试的关键环节。传统渲染方法往往难以平衡效率与真实感&#xff0c;而基于神经网络的渲染技术为解决这一难题提供了…...

GMSL GUI实战:利用EOM眼图与Link Margin优化高速链路设计

1. GMSL高速链路设计的核心挑战 在车载摄像头、工业视觉等需要长距离传输高清视频的场景中&#xff0c;GMSL&#xff08;千兆多媒体串行链路&#xff09;技术凭借其高带宽和抗干扰能力成为首选方案。但当我第一次尝试设计6Gbps的GMSL3链路时&#xff0c;信号完整性问题就像个隐…...

BilibiliDown高效获取B站视频完整指南

BilibiliDown高效获取B站视频完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDown 你是否…...

腾讯云GPU服务器上,手把手教你5分钟搞定Isaac Sim 5.0环境(附VNC黑屏自救指南)

腾讯云GPU服务器5分钟极速部署Isaac Sim 5.0全攻略 在机器人仿真与AI训练领域&#xff0c;NVIDIA Isaac Sim已成为行业标杆工具。但许多开发者在云端部署时&#xff0c;往往耗费数小时甚至数天时间卡在环境配置环节。本文将基于腾讯云GPU服务器&#xff0c;分享一套经过实战验证…...

R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错(附本地安装包)

R语言孟德尔随机化环境搭建&#xff1a;从报错到成功的全流程指南 第一次在R中安装孟德尔随机化相关工具包时&#xff0c;那种挫败感我至今记忆犹新。明明按照教程一步步操作&#xff0c;却不断遭遇各种报错——网络超时、依赖缺失、API限制...这些看似简单的问题足以让一个生物…...