All Projects → aws → Aws Graviton Getting Started

aws / Aws Graviton Getting Started

Licence: other
This document is meant to help new users start using the Arm-based AWS Graviton and Graviton2 processors which power the 6th generation of Amazon EC2 instances (C6g[d], M6g[d], R6g[d], T4g, X2gd, C6gn)

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Aws Graviton Getting Started

Libfacedetection
An open source library for face detection in images. The face detection speed can reach 1000FPS.
Stars: ✭ 10,852 (+6992.81%)
Mutual labels:  arm
Amie
A Minimalist Instruction Extender for the ARM architecture and IDA Pro
Stars: ✭ 136 (-11.11%)
Mutual labels:  arm
Aros
Main AROS repository for active development. Contains the main Operating System components and Build System.
Stars: ✭ 146 (-4.58%)
Mutual labels:  arm
Phantomjs On Raspberry
Phantomjs for raspberry pi (armv6/armv7) and aarch64/arm64
Stars: ✭ 128 (-16.34%)
Mutual labels:  arm
Ipfs Rpi
IPFS installer for the Raspberry Pi and other ARM-based devices.
Stars: ✭ 130 (-15.03%)
Mutual labels:  arm
Arm exploitation
Exploitation on ARM-based Systems (Troopers18)
Stars: ✭ 139 (-9.15%)
Mutual labels:  arm
Awesome Arm Exploitation
A collection of awesome videos, articles, books and resources about ARM exploitation.
Stars: ✭ 125 (-18.3%)
Mutual labels:  arm
Silicon Info
Mac menu bar tool to view the architecture of the running application
Stars: ✭ 153 (+0%)
Mutual labels:  arm
Cargo Flash
a cargo extension for programming microcontrollers
Stars: ✭ 134 (-12.42%)
Mutual labels:  arm
Docker Unms
This image is no longer maintained: https://github.com/oznu/docker-unms/issues/53
Stars: ✭ 145 (-5.23%)
Mutual labels:  arm
Build
Armbian Linux build framework
Stars: ✭ 1,827 (+1094.12%)
Mutual labels:  arm
Msm8994 8992 Nt Arm64 Drivers
Desktop Windows (ARM64) driver collection for MSM8992/8994 SoCs.
Stars: ✭ 132 (-13.73%)
Mutual labels:  arm
Deobf
An arm32 ollvm like deofuscator,aim to remove obfuscation made by ollvm like compiler
Stars: ✭ 138 (-9.8%)
Mutual labels:  arm
Jevois
JeVois smart machine vision framework
Stars: ✭ 128 (-16.34%)
Mutual labels:  arm
Arm Cmake Toolchains
CMake toolchain configurations for ARM
Stars: ✭ 148 (-3.27%)
Mutual labels:  arm
Qpcpp
QP/C++ real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 124 (-18.95%)
Mutual labels:  arm
Openfpgaduino
All open source file and project for OpenFPGAduino project
Stars: ✭ 137 (-10.46%)
Mutual labels:  arm
Cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 2,461 (+1508.5%)
Mutual labels:  arm
Stm32 graphics display drivers
STM32 LCD drivers (currently: spi(dma), gpio, fsmc(dma), st7735, st7783, ili9325, ili9328, ili9341, ili9486, ili9488, hx8347g)
Stars: ✭ 151 (-1.31%)
Mutual labels:  arm
Homebrew Install
homebrew安装使用中科大镜像
Stars: ✭ 143 (-6.54%)
Mutual labels:  arm

Getting started with AWS Graviton

This repository is meant to help new users start using the Arm-based AWS Graviton and Graviton2 processors which power the latest generation of Amazon EC2 instances. While it calls out specific features of the Graviton processors themselves, this repository is also generically useful for anyone running code on Arm.

Contents

Building for Graviton and Graviton2

The Graviton CPU (powering A1 instances) supports Arm V8.0 and includes support for CRC and crypto extensions.

The Graviton2 CPU (powering M6g/M6gd, C6g/C6gd/C6gn, R6g/R6gd, T4g, and X2gd instances) uses the Neoverse-N1 core and supports Arm V8.2 (include CRC and crypto extensions) plus several other architectural extensions. In particular, Graviton2 supports the Large System Extensions (LSE) which improve locking and synchronization performance across large systems. In addition, it has support for fp16 and 8-bit dot productions for machine learning, and relaxed consistency-processor consistent (RCpc) memory ordering.

In addition, to make it easier to develop, test, and run your applications on T4g instances, all AWS customers are automatically enrolled in a free trial on the t4g.micro size. Starting September 2020 until June 30th 2021, you can run a t4g.micro instance and automatically get 750 free hours per month deducted from your bill, including any CPU credits during the free 750 hours of usage. The 750 hours are calculated in aggregate across all regions. For details on terms and conditions of the free trial, please refer to the EC2 FAQs.

Optimizing for Graviton

Please refer here for debugging and profiling information.

Recent software updates relevant to Graviton

There is a huge amount of activity in the Arm software ecosystem and improvements are being made on a daily basis. As a general rule later versions of compilers and language runtimes should be used whenever possible. The table below includes known recent changes to popular packages that improve performance (if you know of others please let us know).

Package Version Improvements
bazel 3.4.1+ Pre-built bazel binary for Graviton/Arm64. See below for installation.
ffmpeg 4.3+ Improved performance of libswscale by 50% with better NEON vectorization which improves the performance and scalability of ffmpeg multi-thread encoders. The changes are available in FFMPEG version 4.3.
HAProxy 2.4+ A serious bug was fixed. Additionally, building with -march=armv8.2-a improves HAProxy performance by 4x so please rebuild your code with this flag.
OpenH264 2.1.1+ Pre-built Cisco OpenH264 binary for Graviton/Arm64.
PCRE2 10.34+ Added NEON vectorization to PCRE's JIT to match first and pairs of characters. This may improve performance of matching by up to 8x. This fixed version of the library now is shipping with Ubuntu 20.04 and PHP 8.
PHP 7.4+ PHP 7.4 includes a number of performance improvements that increase perf by up to 30%
pip 19.3+ Enable installation of python wheel binaries on Graviton
PyTorch 1.7+ Enable Arm64 compilation, Neon optimization for fp32. Install from source. Note: Requires GCC9 or later for now. recommend to use Ubuntu 20.xx
ruby 3.0+ Enable arm64 optimizations that improve performance by as much as 40%. These changes have also been back-ported to the Ruby shipping with AmazonLinux2, Fedora, and Ubuntu 20.04.
zlib 1.2.8+ For the best performance on Graviton2 please use zlib-cloudflare.
mongodb 4.2.13+ / 4.4.5+ / 4.9.0+ Improved performance on graviton, especially for internal JS engine. Consider compiling from source with an up-to-date compiler to use LSE locks. See C/C++ for compiler support.

Containers on Graviton

You can run Docker, Kubernetes, Amazon ECS, and Amazon EKS on Graviton. Amazon ECR supports multi-arch containers. Please refer here for information about running container-based workloads on Graviton.

Operating Systems

Please check here for more information about which operating system to run on Graviton based instances.

Known issues and workarounds

Python installation on some Linux distros

The default installation of pip on some Linux distributions is old (<19.3) to install binary wheel packages released for Graviton. To work around this, it is recommended to upgrade your pip installation using:

sudo python3 -m pip install --upgrade pip

Bazel on Linux

The Bazel build tool now releases a pre-built binary for arm64. As of October 2020, this is not available in their custom Debian repo, and Bazel does not officially provide an RPM. Instead, we recommend using the Bazelisk installer, which will replace your bazel command and keep bazel up to date.

Below is an example using the latest Arm binary release of Bazelisk as of October 2020:

wget https://github.com/bazelbuild/bazelisk/releases/download/v1.7.1/bazelisk-linux-arm64
chmod +x bazelisk-linux-arm64
sudo mv bazelisk-linux-arm64 /usr/local/bin/bazel
bazel

Bazelisk itself should not require further updates, as its only purpose is to keep Bazel updated.

zlib on Linux

Linux distributions, in general, use the original zlib without any optimizations. zlib-cloudflare has been updated to provide better and faster compression on Arm and x86. To use zlib-cloudflare:

git clone https://github.com/cloudflare/zlib.git
cd zlib
./configure --prefix=$HOME
make
make install

Make sure to have the full path to your lib at $HOME/lib in /etc/ld.so.conf and run ldconfig.

For users of Amazon Corretto, you can specify the library to be used for compression and decompression as:

-XX:ZlibImplementationDeflate=cloudflare
-XX:ZlibImplementationInflate=cloudflare

Additional resources

Linaro and Arm maintain a tool (Sandpiper) to search for packages across multiple OSes and Docker official images. This can be useful to see which versions of a package exist in distributions -- especially when there is a performance improvement in a particular version.

Some specific resources:

Feedback? [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].