Universal Numbers Library: 多格式可变精度算术库

RayRay
Universal Numbers LibraryC++数值计算混合精度算术库Github开源项目

Universal Numbers Library简介

Universal Numbers Library是一个强大的C++模板库,提供了丰富的自定义算术类型,旨在支持混合精度算法的开发和优化。该库特别适用于人工智能、机器学习、计算机视觉、信号处理等领域,可以帮助开发者根据应用需求定制精度和动态范围,从而提高性能和能源效率。

Universal Library Logo

主要特点

  1. 提供多种数字系统:包括整数、小数、定点数、浮点数、对数数等。

  2. 即插即用:可以作为原生类型的替代品,方便探索IEEE-754浮点数的替代方案。

  3. 纯头文件库:无需额外依赖,易于集成到现有项目中。

  4. 灵活配置:支持静态和弹性整数、小数、定点数、有理数、线性浮点数等多种格式。

  5. 性能优化:针对嵌入式应用进行了优化,可显著提升AI算法的性能。

使用示例

#include <universal/number/cfloat/cfloat.hpp> // 定义计算内核 template<typename Real> Real MyKernel(const Real& a, const Real& b) { return a * b; } constexpr double pi = 3.14159265358979323846; int main() { using Real = sw::universal::half; // 半精度IEEE-754浮点数 Real a = sqrt(2); Real b = pi; std::cout << "Result: " << MyKernel(a, b) << std::endl; }

如何构建和安装

Universal Numbers Library使用CMake构建系统。推荐使用CMake 3.23或更高版本。

基本构建步骤:

git clone https://github.com/stillwater-sc/universal cd universal mkdir build && cd build cmake .. make -j $(nproc) make test

对于Windows和Visual Studio用户,可以使用CMakePredefinedTargets:

  • ALL_BUILD: 编译所有项目
  • INSTALL: 安装Universal库
  • RUN_TESTS: 运行所有测试

构建选项

可以通过CMake选项控制构建内容,例如:

cmake -DBUILD_EDUCATION=OFF -DBUILD_NUMBER_POSITS=ON ..

常用选项包括:

  • BUILD_ALL: 构建所有组件
  • BUILD_EDUCATION: 构建教育示例
  • BUILD_NUMBER_XXX: 构建特定数字系统(如POSITS)
  • USE_AVX2: 启用AVX2指令集优化

命令行工具

Universal库提供了一系列有用的命令行工具,用于检查原生IEEE浮点类型和自定义数字系统:

  • ieee: 显示IEEE浮点值的组成部分
  • quarter/half/single/double/longdouble/quad: 显示不同精度IEEE-754值的组件和特征
  • signedint/unsignedint: 显示有符号/无符号整数的组件和特征
  • fixpnt/posit/lns: 显示定点数/posit/对数数系统值的组件和特征

例如:

$ ieee 1.234567890123456789012 compiler : 7.5.0 float precision : 23 bits double precision : 52 bits long double precision : 63 bits Decimal representations input value: 1.23456789012 float: 1.23456788 double: 1.2345678901199999 long double: 1.23456789011999999999 ...``` 这些工具可以帮助开发者快速了解不同数字系统的特性和表示方式。 ## 在混合精度算法研究中应用Universal库 为了快速启动混合精度算法开发和优化项目,Universal提供了一个GitHub模板仓库[mpadao-template](https://github.com/stillwater-sc/mpadao-template)。该模板包含完整的开发环境设置,包括依赖库、开发容器、VS Code集成和GitHub CI工作流。 使用这个模板是开始使用Universal进行混合精度算法开发的最简单方法。 ## Universal库的动机 现代深度学习AI应用对性能和功耗提出了极高的要求。传统的IEEE-754浮点格式在满足AI应用的性能和功耗需求方面已经显得力不从心。Google和Microsoft等公司已经放弃使用传统浮点格式,转而采用更适合AI的数字系统,以获得两个数量级的性能提升。 除AI外,云计算、物联网、嵌入式系统和高性能计算等领域也面临着类似的挑战。采用新的数字系统可能会使这些应用的规模和成本得到数量级的改善。 IEEE-754浮点格式存在以下问题: 1. 浪费的位模式:32位浮点数有约800万种表示NaN的方式,64位浮点数更是有2千兆种。 2. 数学不正确:规定了正零和负零,导致结合律和分配律的丢失。 3. 溢出和下溢:溢出到±∞会导致相对误差无限增大,下溢到0会丢失符号信息。 4. 未使用的动态范围:双精度浮点的动态范围高达2^2047,而大多数数值软件都围绕1.0工作。 5. 复杂的电路:非规格化浮点数需要特殊处理,增加了硬件实现的复杂性。 6. 缺乏渐进溢出和固定精度:IEEE浮点数除非规格化数外,精度是固定的。 相比之下,posit数字系统克服了这些缺点: 1. 经济:没有冗余的位模式,只有一种表示∞和0的方式。 2. 保留数学特性:只有一种表示零的方式,编码围绕1.0对称。通过quire支持结合律和分配律。 3. 渐进溢出和下溢:在整个数值范围内提供渐进的精度变化。 4. 简化的硬件:不需要特殊处理非规格化数,简化了硬件实现。 5. 可调节的动态范围:可以根据应用需求调整动态范围。 Universal库提供了包括posit在内的多种数字系统的实现,让开发者可以根据应用需求选择最合适的数字表示方式,从而获得更好的性能、精度和能效。 ## 结论 Universal Numbers Library为混合精度算法开发提供了强大而灵活的工具集。通过支持多种数字系统和精度,它使开发者能够根据特定应用的需求定制算术类型,从而在性能、精度和能效之间取得最佳平衡。无论是在AI、信号处理、科学计算还是嵌入式系统领域,Universal库都为创新和优化打开了新的可能性。 随着计算需求的不断增长和对能效的日益关注,像Universal这样的库将在未来的计算架构中扮演越来越重要的角色。它不仅提供了替代传统IEEE-754浮点数的选择,更为数值计算的未来发展指明了方向。 对于希望深入探索数字系统或优化算法性能的研究人员和开发者来说,Universal Numbers Library无疑是一个值得关注和使用的强大工具。通过其丰富的文档、示例和工具,开发者可以快速上手并在自己的项目中应用这些先进的数字系统概念。 Universal Numbers Library的开源性质也为社区贡献和协作创造了条件。随着更多开发者的参与,我们可以期待看到更多创新的数字系统和优化技术的出现,进一步推动计算技术的发展。 总之,Universal Numbers Library代表了数值计算的未来趋势,为追求极致性能和精度的应用开辟了新的可能性。无论是在学术研究还是工业应用中,它都将是一个不可或缺的工具,值得每一个对数值计算感兴趣的开发者深入探索和使用。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多