
Basic information
(This thing is... kinda more than a 'board' — but I still want data somewhere, and this is as good a place as any!)
Linux/system information
# output of `neofetch`
jgeerling@ampere-altra:~$ neofetch
.-/+oossssoo+/-. jgeerling@ampere-altra
`:+ssssssssssssssssss+:` ----------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.2 LTS aarch64
.ossssssssssssssssssdMMMNysssso. Host: Ampere Altra Developer Platform ES2
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.19.0-40-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 5 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 1565 (dpkg), 11 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.1.16
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1920x1080
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: (96) @ 2.800GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ GPU: 0004:02:00.0 ASPEED Technology, Inc. ASPEED Graphics Family
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Memory: 2102MiB / 63897MiB
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
# output of `uname -a`
Linux ampere-altra 5.19.0-40-generic #41~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 31 16:02:33 UTC 2 aarch64 aarch64 aarch64 GNU/Linux
Benchmark results
CPU
Configured with 96 GB RAM (6 x 16GB DDR4 ECC Registered DIMMs):
Power
- Idle power draw (at wall): 64.5 W (85W with 96 GB RAM)
- Maximum simulated power draw (
stress-ng --matrix 0): 220 W (242W with 96 GB RAM)
- During Geekbench multicore benchmark: 156 W (178W with 96 GB RAM)
- During
top500 HPL benchmark: 296 W (4.01 Gflops/W)
Disk
Transcend 128GB PCIe Gen 3 x4 NVMe SSD (TS128GMTE652T)
| Benchmark |
Result |
| fio 1M sequential read |
1245 MB/s |
| iozone 1M random read |
1058 MB/s |
| iozone 1M random write |
665 MB/s |
| iozone 4K random read |
72.99 MB/s |
| iozone 4K random write |
246.88 MB/s |
curl https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh | sudo bash
Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading. Download the script with curl -o disk-benchmark.sh [URL_HERE] and run sudo DEVICE_UNDER_TEST=/dev/sda DEVICE_MOUNT_PATH=/mnt/sda1 ./disk-benchmark.sh (assuming the device is sda).
Also consider running PiBenchmarks.com script.
PiBenchmarks.com result: TODO - should be on https://pibenchmarks.com/latest/ soon
Category Test Result
HDParm Disk Read 1533.06 MB/s
HDParm Cached Disk Read 776.86 MB/s
DD Disk Write 407 MB/s
FIO 4k random read 94377 IOPS (377511 KB/s)
FIO 4k random write 74202 IOPS (296811 KB/s)
IOZone 4k read 243709 KB/s
IOZone 4k write 198612 KB/s
IOZone 4k random read 70575 KB/s
IOZone 4k random write 231884 KB/s
Score: 45797
Network
(Everything runs as expected... this thing's a bonafide server!)
GPU
- TODO: Haven't determined standardized benchmark yet. See Issue #2.
Memory
tinymembench results:
Click to expand memory benchmark result
tinymembench v0.4.10 (simple benchmark for memory throughput and latency)
==========================================================================
== Memory bandwidth tests ==
== ==
== Note 1: 1MB = 1000000 bytes ==
== Note 2: Results for 'copy' tests show how many bytes can be ==
== copied per second (adding together read and writen ==
== bytes would have provided twice higher numbers) ==
== Note 3: 2-pass copy means that we are using a small temporary buffer ==
== to first fetch data into it, and only then write it to the ==
== destination (source -> L1 cache, L1 cache -> destination) ==
== Note 4: If sample standard deviation exceeds 0.1%, it is shown in ==
== brackets ==
==========================================================================
C copy backwards : 9424.0 MB/s
C copy backwards (32 byte blocks) : 9387.8 MB/s
C copy backwards (64 byte blocks) : 9390.8 MB/s
C copy : 9366.1 MB/s
C copy prefetched (32 bytes step) : 9984.4 MB/s
C copy prefetched (64 bytes step) : 9984.1 MB/s
C 2-pass copy : 6391.4 MB/s
C 2-pass copy prefetched (32 bytes step) : 7237.8 MB/s
C 2-pass copy prefetched (64 bytes step) : 7489.6 MB/s
C fill : 43884.4 MB/s
C fill (shuffle within 16 byte blocks) : 43885.4 MB/s
C fill (shuffle within 32 byte blocks) : 43884.2 MB/s
C fill (shuffle within 64 byte blocks) : 43877.5 MB/s
NEON 64x2 COPY : 9961.9 MB/s
NEON 64x2x4 COPY : 10091.6 MB/s
NEON 64x1x4_x2 COPY : 8171.5 MB/s
NEON 64x2 COPY prefetch x2 : 11822.9 MB/s
NEON 64x2x4 COPY prefetch x1 : 12123.8 MB/s
NEON 64x2 COPY prefetch x1 : 11836.5 MB/s
NEON 64x2x4 COPY prefetch x1 : 12122.3 MB/s
---
standard memcpy : 9894.0 MB/s
standard memset : 44745.2 MB/s
---
NEON LDP/STP copy : 9958.0 MB/s
NEON LDP/STP copy pldl2strm (32 bytes step) : 11415.6 MB/s
NEON LDP/STP copy pldl2strm (64 bytes step) : 11420.5 MB/s
NEON LDP/STP copy pldl1keep (32 bytes step) : 11475.2 MB/s
NEON LDP/STP copy pldl1keep (64 bytes step) : 11452.9 MB/s
NEON LD1/ST1 copy : 10094.8 MB/s
NEON STP fill : 44744.7 MB/s
NEON STNP fill : 44745.2 MB/s
ARM LDP/STP copy : 10136.4 MB/s
ARM STP fill : 44731.7 MB/s
ARM STNP fill : 44730.0 MB/s
==========================================================================
== Memory latency test ==
== ==
== Average time is measured for random memory accesses in the buffers ==
== of different sizes. The larger is the buffer, the more significant ==
== are relative contributions of TLB, L1/L2 cache misses and SDRAM ==
== accesses. For extremely large buffer sizes we are expecting to see ==
== page table walk with several requests to SDRAM for almost every ==
== memory access (though 64MiB is not nearly large enough to experience ==
== this effect to its fullest). ==
== ==
== Note 1: All the numbers are representing extra time, which needs to ==
== be added to L1 cache latency. The cycle timings for L1 cache ==
== latency can be usually found in the processor documentation. ==
== Note 2: Dual random read means that we are simultaneously performing ==
== two independent memory accesses at a time. In the case if ==
== the memory subsystem can't handle multiple outstanding ==
== requests, dual random read has the same timings as two ==
== single reads performed one after another. ==
==========================================================================
block size : single random read / dual random read, [MADV_NOHUGEPAGE]
1024 : 0.0 ns / 0.0 ns
2048 : 0.0 ns / 0.0 ns
4096 : 0.0 ns / 0.0 ns
8192 : 0.0 ns / 0.0 ns
16384 : 0.0 ns / 0.0 ns
32768 : 0.0 ns / 0.0 ns
65536 : 0.0 ns / 0.0 ns
131072 : 1.3 ns / 1.8 ns
262144 : 2.3 ns / 2.9 ns
524288 : 3.2 ns / 3.9 ns
1048576 : 3.6 ns / 4.2 ns
2097152 : 22.9 ns / 33.0 ns
4194304 : 32.6 ns / 40.9 ns
8388608 : 38.1 ns / 43.5 ns
16777216 : 43.2 ns / 48.6 ns
33554432 : 86.2 ns / 112.2 ns
67108864 : 109.3 ns / 135.2 ns
block size : single random read / dual random read, [MADV_HUGEPAGE]
1024 : 0.0 ns / 0.0 ns
2048 : 0.0 ns / 0.0 ns
4096 : 0.0 ns / 0.0 ns
8192 : 0.0 ns / 0.0 ns
16384 : 0.0 ns / 0.0 ns
32768 : 0.0 ns / 0.0 ns
65536 : 0.0 ns / 0.0 ns
131072 : 1.3 ns / 1.8 ns
262144 : 1.9 ns / 2.3 ns
524288 : 2.2 ns / 2.5 ns
1048576 : 2.6 ns / 2.8 ns
2097152 : 21.6 ns / 31.6 ns
4194304 : 31.1 ns / 39.4 ns
8388608 : 35.8 ns / 41.7 ns
16777216 : 38.5 ns / 43.0 ns
33554432 : 79.9 ns / 104.9 ns
67108864 : 101.1 ns / 125.4 ns
Basic information
(This thing is... kinda more than a 'board' — but I still want data somewhere, and this is as good a place as any!)
Linux/system information
Benchmark results
CPU
Configured with 96 GB RAM (6 x 16GB DDR4 ECC Registered DIMMs):
Power
stress-ng --matrix 0): 220 W (242W with 96 GB RAM)top500HPL benchmark: 296 W (4.01 Gflops/W)Disk
Transcend 128GB PCIe Gen 3 x4 NVMe SSD (TS128GMTE652T)
curl https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh | sudo bashRun benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading. Download the script with
curl -o disk-benchmark.sh [URL_HERE]and runsudo DEVICE_UNDER_TEST=/dev/sda DEVICE_MOUNT_PATH=/mnt/sda1 ./disk-benchmark.sh(assuming the device issda).Also consider running PiBenchmarks.com script.
PiBenchmarks.com result: TODO - should be on https://pibenchmarks.com/latest/ soon
Network
(Everything runs as expected... this thing's a bonafide server!)
GPU
Memory
tinymembenchresults:Click to expand memory benchmark result