Skip to content

Ampere Altra Developer Platform #19

Description

@geerlingguy

ampere-altra-radiator-water-cooling-cpu

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 

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions