Converting binary integers to variable-length decimal strings is a fundamental operation in computing. Conventional fast approaches rely on recursive division and small lookup tables. We propose a SIMD-based algorithm that leverages integer multiply-add instructions available on recent AMD and Intel processors. Our method eliminates lookup tables entirely and computes multiple quotients and remainders in parallel. Additionally, we introduce a dual-variant design with dynamic selection that adapts to input characteristics: a branch-heavy variant optimized for homogeneous digit-length distributions and a branch-light variant for heterogeneous datasets. Our single-core algorithm consistently outperforms all competing methods across the full range of integer sizes, running 1.4-2x faster than the closest competitor and 2-4x faster than the C++ standard library function std::to_chars across tested workloads.


翻译:将二进制整数转换为可变长度的十进制字符串是计算中的基本操作。传统快速方法依赖于递归除法和小型查找表。我们提出一种基于SIMD的算法,利用近期AMD和Intel处理器上可用的整数乘加指令。我们的方法完全消除了查找表,并并行计算多个商和余数。此外,我们引入了一种具有动态选择的双变体设计,可根据输入特征自适应调整:针对同质数字长度分布优化的一种重分支变体,以及针对异质数据集的一种轻分支变体。我们的单核算法在全部整数大小范围内始终优于所有竞争方法,在测试工作负载中运行速度比最接近的竞争者快1.4-2倍,比C++标准库函数std::to_chars快2-4倍。

0
下载
关闭预览

相关内容

在计算机科学中,查找表是一个用更简单的数组索引操作代替运行时计算的数组。 在处理时间方面的节省是可观的,因为从存储器中检索值通常比进行“昂贵”的计算或输入/输出操作要快。 这些表可以预先计算并存储在静态程序存储中,作为程序初始化阶段(内存化)的一部分进行计算(或“预取”),甚至可以存储在特定于应用程序平台中的硬件中。 查找表还广泛用于通过与数组中的有效(或无效)项列表进行匹配来验证输入值,并且在某些编程语言中,查找表可能包含指针函数(或标签偏移量)以处理匹配的输入。 FPGA还广泛使用可重新配置的,硬件实现的查找表,以提供可编程的硬件功能。
【干货书】数值计算C编程,319页pdf,Numerical C
专知会员服务
72+阅读 · 2020年4月7日
百闻不如一码!手把手教你用Python搭一个Transformer
大数据文摘
18+阅读 · 2019年4月22日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
可视化理解四元数,愿你不再掉头发
计算机视觉life
31+阅读 · 2019年1月2日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
用于数学的 10 个优秀编程语言
算法与数据结构
13+阅读 · 2018年1月5日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
VIP会员
最新内容
锻造未来士兵:外骨骼、基因工程与赛博格
专知会员服务
0+阅读 · 7分钟前
《无人机蜂群通信技术研究》50页
专知会员服务
0+阅读 · 24分钟前
战力倍增器:自主武器系统与乌克兰及加沙冲突
人工智能赋能战场情报:提速决策进程
专知会员服务
3+阅读 · 7月17日
《拥抱新兴技术:面向未来军官的教育革新》
专知会员服务
7+阅读 · 7月17日
相关VIP内容
【干货书】数值计算C编程,319页pdf,Numerical C
专知会员服务
72+阅读 · 2020年4月7日
相关资讯
百闻不如一码!手把手教你用Python搭一个Transformer
大数据文摘
18+阅读 · 2019年4月22日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
可视化理解四元数,愿你不再掉头发
计算机视觉life
31+阅读 · 2019年1月2日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
用于数学的 10 个优秀编程语言
算法与数据结构
13+阅读 · 2018年1月5日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
Top
微信扫码咨询专知VIP会员