在 MinIO 使用 SVE 将 ARM 带入人工智能数据基础设施领域

news2024/11/16 18:55:51

MinIO 性能如此之高的原因之一是,我们做了其他人不会或不能做的细粒度工作。从 SIMD 加速到 AVX-512 优化,我们已经完成了艰巨的任务。ARM CPU 架构的最新发展,特别是可扩展矢量扩展 (SVE),为我们提供了比前几代产品显著提高性能和效率的机会,并使 ARM 成为 AI 数据基础设施生态系统中的一流公民。

这篇博文将概述什么是 ARM SVE,以及为什么它对 MinIO 服务器很重要,以及我们如何启用它。

ARM 的粉丝

长期以来,我们一直是 ARM CPU 架构的粉丝,因此我们从 MinIO 的早期就支持 ARM。由于当时没有配备 ARM CPU 的云实例,因此最初的开发实际上是在 Pine64 板上完成的。这项工作的很大一部分包括添加 128 位 NEON 向量指令,以加速 MinIO 的一些核心算法,最引人注目的是纠删码部分、比特腐烂检测(Highway Hash)和各种哈希技术,如 Blake2b 和 SHA256。

我们发表了一些关于这些主题的博客文章,例如在 ARM 上的 Golang 中将 SHA256 加速 100 倍。此外,我们在 2020 年对 Intel (amd64) 和 ARM (arm64) 平台进行了一些基准测试,请参阅英特尔与 ARM CPU 性能对对象存储的影响。我们鼓励您接受这项工作,因为它在该领域具有开创性意义。

云开发:从 AWS 到 GCP 和 Azure

随着 2019 年 Graviton 1 的推出,AWS 成为第一家开始基于 ARM 架构设计自己的 CPU 的云供应商。从那时起,又推出了三个版本,其中 Graviton 4 是最新的化身,提供 96 核。

最近,谷歌和 Microsoft 都紧随其后,发布了谷歌的 Axion 处理器以及 AzureCobalt 100 处理器。对于这两家供应商来说,实现这一目标的主要驱动力是提供更好的性能和更高的能源效率。

最后但并非最不重要的一点是,NVIDIA 正在与 ARM 密切合作,首先是 GH200 Grace Hopper,现在是 GB200 Grace Blackwell 超级芯片。这两款超级芯片都结合了双 GPU 和支持 SVE2 的 72 核 ARM CPU。

NVIDIA正在投资的另一个领域是“智能”网络控制器或DPU(数据处理单元)方面,鉴于计算和存储的分解性质,这是一个关键组件。最新一代的BlueField3 NIC提供集成的16核ARM CPU作为网络控制器卡本身的一部分。通过将 NVMe 驱动器直接连接到网卡并完全绕过任何(主服务器)CPU,这有可能简化服务器设计。

SVE简介

虽然 NEON 已经存在了 10 多年,并且“仅”支持 128 位宽矢量指令(仅比常规 64 位指令宽 2 倍),但第一个 SVE 和最近的 SVE2 提供了更广泛的功能。最有趣的是(与 Intel/amd64 SIMD 架构相比,SVE/SVE2 是一种与长度无关的 SIMD 架构。这意味着相同的机器代码指令在具有不同大小的向量单元的硬件实现上运行。例如,AWS 上的 Graviton 3 实现是 256 位宽,而富士通 A64FX 处理器是 512 位宽的实现。除此之外,SVE还通过预测执行支持通道掩码,从而可以更有效地利用矢量单元。对分散和收集指令的广泛支持使得以灵活的方式有效地访问内存成为可能。与NEON相比,SVE和现在的SVE2具有更宽的指令集和类型系统,使其可以用于更广泛的应用。另请注意,SVE 不是 NEON 的超集,而是全新的 ISA(指令集架构)。

对 MinIO 的 ARM SVE 支持

我们很高兴地宣布,我们通过添加对两种关键算法的 SVE 支持,即纠缠编码和位腐蚀检测,扩展了对 ARM CPU 架构的支持,如下所述。

里德·所罗门

对于 releasev1.12.2,我们为 MinIO 对象存储服务器使用的纠缠编码库提供了广泛的 ARM SVE 支持。通过“模仿”AVX2 实现,我们现在能够利用 ARM SVE 库中的所有优化工作。一般来说,与以前的实现相比,新的 SVE 实现速度快了大约 2 倍,如下图所示:

可以看出,在大约只使用四分之一的可用内核(大约 16 个)时,内存带宽已经消耗了一半(大约占用了之前内核数量的一半)。性能继续扩展,并开始使用总共 64 个内核中的 32 个左右。

高速公路哈希

MinIO 使用 Highway Hash 算法进行位腐检测,该算法在 GET(读取)和 PUT(写入)操作期间都非常频繁地运行。在这里,我们也添加了对核心哈希更新函数的 SVE 支持,结果如下:

从图表中可以明显看出,随着内核数量的增加,性能完全线性扩展,并开始达到内存带宽限制,大约在 50 到 52 个内核之间,对于较大的块大小。请注意,有一个稍微快一点的 SVE2 算法,我们还没有能够在硬件中测试(只能通过 armie 指令仿真器)。因此,这应该将性能再提高 10% 左右。

更多内容即将推出

我们正在研究一些进一步的优化,例如最近登陆 Linux 内核的一些优化,所以请继续关注。

结论

ARM SVE 标志着一项重大的技术改进,它使对象存储和 AI 数据基础设施的实际性能提升成为可能。随着越来越多的基于 ARM SVE 的解决方案进入市场,我们很高兴看到这项技术将如何继续发展和改进。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网页秒表小工具

网页秒表小工具 效果展示 HTML代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>简洁秒表</title><style>body {font-family: Arial, sans-serif;display: flex;justify-content:…

现货白银交易中spring形态的应用

在现货白银市场中交易想取得成功并从市场中获利&#xff0c;掌握一些工具是必不可少的&#xff0c;而今天我们要介绍的现货白银的交易工具就是spring形态。 对于spring这个英文&#xff0c;我们都很熟悉&#xff0c;它有春天的意思&#xff0c;但这里所说的spring形态并不是指春…

重塑生态体系 深挖应用场景 萤石诠释AI时代智慧生活新图景

7月24日&#xff0c;“智动新生&#xff0c;尽在掌控”2024萤石夏季新品发布会在杭州举办。来自全国各地的萤石合作伙伴、行业从业者及相关媒体&#xff0c;共聚杭州&#xff0c;共同见证拥抱AI的萤石&#xff0c;将如何全新升级&#xff0c;AI加持下的智慧生活又有何不同。 发…

架构设计面试经验总结

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 学习架构设计知识的思路总结为以下几点&#xff1a; 想要学习架构…

Python + PyQt 搭建可视化页面(PyCharm)

Python PyQt 搭建可视化页面&#xff08;PyCharm&#xff09; 配置PyQt5环境 1.1 安装PyQt5和PyQt5-tools pip install PyQt5pip install PyQt5-tools1.2 QtDesigner和PyUIC环境的配置 配置QTDesigner&#xff0c;用来打开QT可视化开发工具 在PyCharm中依次打开&#xff1a…

经典文献阅读之--World Models for Autonomous Driving(自动驾驶的世界模型:综述)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

2024-07-24 Linux C語言使用inotify进行文件变化检测

一、在Linux中&#xff0c;用C语言检测文件内容变化的方法有几种&#xff0c;最常用的包括以下几种&#xff1a; 轮询&#xff08;Polling&#xff09;&#xff1a;周期性地读取文件并检查内容是否变化。inotify&#xff1a;使用Linux内核提供的inotify接口&#xff0c;这是一…

【AIGC】构建自己的谷歌搜索引擎服务并使用

一、谷歌 谷歌的搜索引擎需要自己创建服务才能启用检索api。&#xff08;需自行翻墙和创建自己的谷歌账号&#xff09; 1.1 API服务创建 1&#xff09;登陆https://console.cloud.google.com/: 2&#xff09; 选择新建项目&#xff0c;取号项目名即可&#xff08;比如:Olin…

scrapy爬取城市天气数据

scrapy爬取城市天气数据 一、创建scrapy项目二、修改settings,设置UA,开启管道三、编写爬虫文件四、编写items.py五、在weather.py中导入WeatherSpiderItem类六、管道中存入数据,保存至csv文件七、完整代码一、创建scrapy项目 先来看一下爬取的字段情况: 本次爬取城市天…

谷粒商城实战笔记-60-商品服务-API-品牌管理-效果优化与快速显示开关

文章目录 一&#xff0c;显示状态列改为switch开关二&#xff0c;监听状态改变 首先&#xff0c;把ESLint语法检查关掉&#xff0c;因为这个语法检查过于严格&#xff0c;在控制台输出很多错误信息&#xff0c;干扰开发。 在build目录下下webpack.base.conf.js中&#xff0c;把…

类、名称空间和类库

类(class)构成程序的主体 名称空间(namespace)以树型结构组织类&#xff0c;例如Button和Path类 如何知道类属于哪个名称空间呢&#xff1a; 点击帮助-查看帮助 在该界面下搜索&#xff1a; 查看名称空间 搜索System 名称空间&#xff0c;可以查找与操作系统打交道的重要的名…

使用kali进行端口扫描

目录 一、使用nping工具向目标主机的指定端口发送自定义数据包 二、使用Nmap工具进行端口扫描 三、使用Zenmap工具进行扫描 一、使用nping工具向目标主机的指定端口发送自定义数据包 nping工具允许用户产生各种网络数据包&#xff08;TCP&#xff0c;UDP&#xff0c;ICMP&am…

【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题

问题现象 问题单&#xff1a;22.2.12.100升级到22.2.13.100失败 现象&#xff1a;如下图&#xff0c;从22.2.12.100升级到22.2.13.100失败&#xff0c;报错。 问题风险及影响 版本升级失败&#xff0c;影响上线 问题发生版本 客户版本&#xff1a;22.2.12.100 现在版本已…

深度学习系列70:模型部署torchserve

1. 流程说明 ts文件夹下&#xff0c; 从launcher.py进入&#xff0c;执行jar文件。 入口为model_server.py的start()函数。内容包含&#xff1a; 读取args&#xff0c;创建pid文件 找到java&#xff0c;启动model-server.jar程序&#xff0c;同时读取log-config文件&#xff…

服务器数据恢复—raid信息丢失导致RAID无法被识别的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某单位机房搬迁&#xff0c;将所有服务器和存储搬迁到新机房并重新连接线路&#xff0c;启动所有机器发现其中有一台服务器无法识别RAID&#xff0c;提示未做初始化操作。 发生故障的这台服务器安装LINUX操作系统&#xff0c;配置了NF…

Python 文件及目录操作指南

文章目录 前言一、常用标准库1. os 模块2. shutil 模块3. pathlib 模块4. io 模块 二、操作过程及内容步骤一&#xff1a;环境准备步骤二&#xff1a;文件操作步骤三&#xff1a;目录遍历步骤四&#xff1a;综合脚本操作结果 总结 前言 在日常开发中&#xff0c;文件和目录操作…

WAF+API安全代表厂商|瑞数信息入选IDC报告《生成式AI推动下的中国网络安全硬件市场现状及技术发展趋势》

近日&#xff0c;全球领先的权威资讯机构IDC正式发布《IDC Market Presentation&#xff1a;生成式AI推动下的中国网络安全硬件市场现状及技术发展趋势&#xff0c;2024》报告。报告中IDC 评估了众多厂商的安全硬件产品能力&#xff0c;并给出了产品对应的推荐厂商供最终用户参…

电脑屏幕录制软件哪个好?推荐3款,满足各种录制需求

大家好&#xff0c;今天和大家来聊一个既实用又有点神秘的话题——电脑屏幕录制软件哪个好&#xff1f;这是个让众多网友头疼的问题&#xff0c;毕竟谁不想拥有一款既好用又好玩的录制神器呢&#xff1f; 首先&#xff0c;我们得明确屏幕录制软件可不是简单地录屏而已&#xf…

IEC104转MQTT网关支持将IEC104数据转换为华为云平台可识别的格式

随着智能电网和物联网技术的深度融合&#xff0c;传统电力系统中的IEC104协议设备正逐步向更加开放、智能的物联网体系转型。华为云作为全球领先的云计算和AI服务提供商&#xff0c;其物联网平台为IEC104设备的接入与数据处理提供了强大的支撑。本文将探讨IEC104转MQTT网关在MQ…

WPF MVVM框架:CommunityToolkit.Mvvm包使用介绍

最近在需要使用MVVM框架的时候才发现MvvmLight作者宣布停止更新了&#xff0c;有点可惜。 原作者推荐使用CommunityToolkit.Mvvm包&#xff0c;所以这里做一个CommunityToolkit.Mvvm包使用的全面的总结。 开发环境&#xff1a; Visual Studio 2019Windows 10 1903CommunityTo…