Table of Contents
背景
AWS Graviton是AWS推出的ARM架构处理器,目前已经在AWS中国区域、全球区域大规模可用。使用Graviton处理器的EC2机型,以及基于Graviton处理器的托管服务包括RDS、Redis、OpenSearch,可获得比同配置的Intel处理器机型更高的性能,且同配置对比成本更低。
2021年12月1日,亚马逊云科技推出新一代自研CPU服务器芯片Graviton3,这也是亚马逊云科技自2018年推出Graviton、2019年推出Graviton2之后,自研设计的第三颗CPU处理器。Graviton3 集成了550亿个晶体管,与Graviton2 相比,计算性能提高25%,浮点和加密性能将提高两倍。在机器学习方面,Graviton3 支持 bfloat 16数据格式,相比上一代产品能够提供高达3倍的性能提升,能耗下降了60%。基于Graviton3 处理器,亚马逊云科技还推出了 C7g 实例,与基于Graviton2 的实例相比,网络带宽也高出20%,内存带宽提高50%,大幅提高了科学计算等内存密集型应用的性能。
Protobuf介绍
Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的数据交换格式,它被用于结构化数据的序列化、反序列化和传输。相比于 XML 和 JSON 等文本格式,Protobuf 具有更小的数据体积、更快的解析速度和更强的可扩展性。目前各大公司都有基于Protobuf开发的基础服务。
Protobuf 的核心思想是使用协议(Protocol)来定义数据的结构和编码方式。使用 Protobuf,可以先定义数据的结构和各字段的类型、字段等信息,然后使用 Protobuf 提供的编译器生成对应的代码,用于序列化和反序列化数据。由于 Protobuf 是基于二进制编码的,因此可以在数据传输和存储中实现更高效的数据交换,同时也可以跨语言使用。
proto2提供一个程序产生器,支持C++、Java和Python,第三方实现支持JavaScript。proto3支持的变更语言更加广泛,包括C++、Java (包含JavaNano)、Python、Go、Ruby、Objective-C和C#,从 3.0.0 Beta 2 版开始支持JavaScript。第三方实现则支持Perl、PHP、Dart、Scala和Julia。
由于protobuf-2.5.0在release的时候并没有支持ARM架构平台,因此在使用Graviton系列处理器平台时需要对protobuf-2.5.0进行调整以实现对ARM64架构的支持。
资源包说明
protobuf-2.5.0.tar.bz2
官方源码包,详细信息可以参考:https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0
protobuf-2.5.0-8.amazon.aarch64.tar.gz
支持Graviton架构的源码包和补丁,包含各Graviton CPU支持补丁和安全更新补丁,其中包含了官方源码包,需要注意的是必须打完补丁后才可以直接编译。
protobuf-2.5.0-8.amazon.aarch64.rpm
已经编译好的rpm包,里面并不包含静态库文件和include文件夹:
[root@workstation usr]$ tree -L 3 . ├── lib64 │ ├── libprotobuf.so.8 -> libprotobuf.so.8.0.0 │ └── libprotobuf.so.8.0.0 └── share └── doc └── protobuf-2.5.0
protobuf-2.5.0-8.amazon.aarch64.patched.tar.gz
为了节省大家时间,这个包已经把所有补丁都打好了,直接编译即可。
评论(0)