在 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…

接口自动化测试如何灵活地验证动态变化的response返回数据

嗨&#xff0c;我是兰若&#xff0c;很多小伙伴在针对动态返回的response&#xff0c;不知道怎么断言&#xff0c;今天教给大家几种方式&#xff0c;可以在接口自动化测试时确保测试的有效性和灵活性&#xff1a; 1. 断言静态字段 首先&#xff0c;您可以断言一些静态字段的值…

JS中map()使用记录

优点和缺点 总的来说&#xff0c;map() 方法是一个强大的工具&#xff0c;适合于需要将数组中的每个元素转换为新形式的情况。然而&#xff0c;对于性能敏感的应用或需要更复杂控制逻辑的场景&#xff0c;可能需要考虑其他方法。 优点&#xff1a; 函数式编程风格&#xff1a…

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…

【C语言】用队列实现栈

用两个队列&#xff08;先进先出&#xff09;实现一个栈&#xff08;后进先出&#xff09; 题目链接&#xff1a;https://leetcode.cn/problems/implement-stack-using-queues/description/ 1.C语言首先要造一个队列出来 2.两个队列实现栈&#xff0c;始终保持一个队列为空&…

无人机之环保监控篇

随着科技的不断进步&#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 之后没有代码了所以运行为队…

vue中无法调试

vue.config.js中增加 devtool configureWebpack: {name: name,resolve: {alias: {: resolve(src)}},devtool: "cheap-module-source-map" // add},然后重启即可。 顺便招聘&#xff1a;1.需要会日语。2.Java&#xff0c;JS&#xff0c;Vue&#xff0c;DB任一会者皆…

Greenplum数据库中常用的赋予和回收权限

一 赋予表级权限&#xff1a; 使用GRANT语句可以向用户或角色赋予对指定表的权限。以下是一些常见的表级权限及其示例语句&#xff1a; 1 SELECT权限&#xff1a; 允许用户查询表中的数据。 GRANT SELECT ON table_name TO user_name; 2 INSERT权限&#xff1a; 允许用户向表中…

SpringBoot结合easypoi.excel,实现数据导出Excel

大多数业务项目中必然会遇到的一个需求&#xff0c;导出数据文件---Excel。 这里简单贴一下自己开发使用的方式方法&#xff0c;抛砖引玉。 也可小白直接大胆食用。 功能Maven依赖&#xff1a; <dependency><groupId>cn.afterturn</groupId><artifact…

mysql8.x 新增一个端口映射到当前服务(Windows)

1. 查看当前端口是否被占用。 netstat ano | findstr 33061 2.端口映射. netsh interface portproxy add v4tov4 listenport33061 listenaddress0.0.0.0 connectport3306 connectaddress192.168.1.xx 3. 创建一个用户&#xff08; myuser% %指的是所有IP都能访问&#xf…

17 敏捷开发—Scrum(2)

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

使用umi作为模板如何实现权限管理

三种权限管理的方法&#xff1a; 在做后台管理系统时&#xff0c;难免会使用到权限管理&#xff0c;权限管理方式有三种&#xff0c;分别是&#xff1a;路由、守卫、后端配合。 路由&#xff1a;通过动态路由&#xff0c;根据登录人员不同注册不同的路由&#xff0c;直接让没…

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 协议段格式 • 源/目的端口号: 表示数据…

GO发票真伪批量查验方法、数电票查验接口

“教”给机器标注数据的正确率就决定了人工智能判断的正确率。翔云人工智能开放平台的OCR产品经过我们的开发人员精心调“教”&#xff0c;识别率高、识别速度快。 发票&#xff0c;是发生的成本、费用或收入的原始凭证。于公司来说&#xff0c;发票主要是公司做账的依据&…