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

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.mzph.cn/pingmian/50140.shtml

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

相关文章

《Cross-Modal Dynamic Transfer Learning for Multimodal Emotion Recognition》

Multi-modal系列论文研读目录 文章目录 Multi-modal系列论文研读目录1.ABSTRACT2.INDEX TERMS3.INTRODUCTION4.RELATED WORKSA. MULTIMODAL EMOTION RECOGNITION 多模态情感识别1) CONVENTIONAL FUSION METHODS 常规融合方法2) TRANSFORMER-BASED FUSION METHODS 基于变压器的融…

2023河南萌新联赛第(二)场 南阳理工学院

A. 国际旅行Ⅰ 题目&#xff1a; 思路&#xff1a; 因为题意上每个国家可以相互到达&#xff0c;所以只需要排序&#xff0c;输出第k小的值就可以了。 AC代码&#xff1a; #include<bits/stdc.h> #define int long long #define IOS ios::sync_with_stdio(0);cin.tie…

2024 微信小程序 学习笔记 第二天

1. WXML 模板语法 数据绑定 事件绑定 条件渲染 列表渲染 2. WXSS 模板样式 rpx 样式导入 全局和局部样式 3. 全局配置 window tabBar 配置tabBar案例 4. 网络数据请求 Get请求 Post 请求 加载时请求 5. 案例 -本地生活&#xff08;首页&#xff09; 导航栏 轮播图 九宫格效果…

webpack插件给所有的:src文件目录增加前缀

1.webpack4的版本写法 class AddPrefixPlugin {apply(compiler) {compiler.hooks.compilation.tap(AddPrefixPlugin, (compilation) > {HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tapAsync(AddPrefixPlugin,(data, cb) > {// 使用正则表达式替换所有包含 /st…

无人机之环保监控篇

随着科技的不断进步&#xff0c;无人机作为一种创新的技术手段&#xff0c;在环保监控领域发挥着越来越重要的作用。 一、覆盖范围广 无人机能够轻松覆盖广阔的地理区域&#xff0c;无论是偏远的山区、广袤的森林还是大型的工业园区。相比传统的地面检测方式&#xff0c;其不…

关于promise的一些例题(运行步骤详细说明)

关于promise的一些例题(详细说明) 基本例题 // 直接运行 输出 1 2 const promise new Promise((resolve, reject) > {console.log(1);resolve();console.log(2); });// then后面放入微队列 promise.then(() > {console.log(3); });// 输出4 之后没有代码了所以运行为队…

17 敏捷开发—Scrum(2)

从上一篇 「16 敏捷开发实践&#xff08;1&#xff09;」中了解了Scrum是一个用于开发和维护复杂产品的框架&#xff0c;是一个增量的、迭代的开发过程。一般由多个Sprint&#xff08;迭代冲刺&#xff09;组成&#xff0c;每个Sprint长度一般为2-4周。下面全面介绍Scrumde 角色…

PostgreSQL 数据库 安装

1、官网下载 起源与发展&#xff1a;PostgreSQL最初起源于加州大学伯克利分校的Postgres项目&#xff0c;该项目始于1986年&#xff0c;并一直演进到1994年。在1995年&#xff0c;Postgres项目增加了SQL翻译程序&#xff0c;并更名为Postgres95。随后&#xff0c;在1996年&…

Linux:core文件无法生成排查步骤

1、进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0。使用getrlimit和ulimit检查修改。 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果是0&#xff0c;就临时添加环境变量ulimit -c unlimited&#xff0c;之后在启动程序观察是否有core生成&#xff0c;如果…

Linux网络:传输层协议TCP(一)

目录 一、TCP协议的定义 二、确认应答机制ACK 三、序号、确认序号 四、超时重传机制 一、TCP协议的定义 TCP 全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传 输进行一个详细的控制; TCP 协议段格式 • 源/目的端口号: 表示数据…

解决Windows 11更新错误0x800f081f的详细指南

在尝试更新Windows 11时&#xff0c;用户可能会遇到各种错误代码&#xff0c;其中之一是0x800f081f。这个错误通常与Windows更新组件或系统文件的损坏有关。本文将提供解决这一特定错误的详细步骤&#xff0c;并解释可能的原因。 错误代码0x800f081f概述 错误代码0x800f081f指…

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数&#xff1a; import pygame import time import random 游戏源码&#xff1a; import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

新版海螺影视主题模板M3.1全解密版本多功能苹果CMSv10后台自适应主题

苹果CMS2022新版海螺影视主题M3.1版本&#xff0c;这个主题我挺喜欢的&#xff0c;之前也有朋友给我提供过原版主题&#xff0c;一直想要破解但是后来找了几个SG11解密的大哥都表示解密需要大几百大洋&#xff0c;所以一直被搁置了。这个版本是完全解密的&#xff0c;无需SG11加…

学习日记:数据类型2

目录 1.转义字符 2.隐式类型转换 2.1 强制类型转换 2.2 不同类型间赋值 3.运算符 表达式 3.1 算术运算符 3.2 算术运算优先级 3.3 赋值运算 3.3.1 不同类型间混合赋值 3.4 逗号运算 4.生成随机数 5. 每日一练 1.转义字符 \n 表示换行 \t …

基于JSP、java、Tomcat三者的项目实战--校园交易网(1)-项目搭建(前期准备工作)

这是项目的初始页面 接下来我先写下我的初始项目搭建 技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 首先我们打开页面&#xff0c;准备搭建项目的初始准备 1.New Project 2.随后点击Next&#xff0c;勾…

Easy es问题总结

官网教程&#xff1a;https://www.easy-es.cn/pages/ac41f0/#settings 一 测试项目 1 pom <dependencies><!-- 排除springboot中内置的es依赖,以防和easy-es中的依赖冲突--><dependency><groupId>org.springframework.boot</groupId><artifa…

【Golang 面试基础题】每日 5 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

脊髓小伙伴必看!超全维生素补给站,助力你的每一天活力满满✨

今天咱们来聊聊一个既严肃又暖心的话题——脊髓损伤后的维生素大补帖&#xff01;&#x1f31f; 记住&#xff0c;身体是革命的本钱&#xff0c;补充对的维生素&#xff0c;就是给自己的小宇宙加油哦&#xff01;&#x1f680; 首先&#xff0c;维生素D小太阳&#x1f31e;来啦…

Nestjs使用Redis的最佳实践

前几天在项目中有用到Redis JWT实现服务端对token的主动删除(退出登录功能)。故此介绍下如何在Nestjs中使用Redis&#xff0c;并做下总结。 知识准备 了解Redis - 网上很多简介。了解Nestjs如何使用jwt生成token - 可移步看下我之前的文章 效果展示 一、mac安装与使用 示…

php--序列化与反序列化

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…