Skip to content

Lichee Console 4A #39

Description

@geerlingguy

DSC05443

Basic information

  • Board URL (official): https://sipeed.com/licheepi4a
  • Board purchased from: Review sample provided by Sipeed
  • Board purchase date: January, 2024
  • Board specs (as tested): 16 GB RAM / 128 GB eMMC / TH1520 SoC (4x C910, clocked at 1.5 GHz)
  • Board price (as tested): $429

Linux/system information

# output of `neofetch`
       _,met$$$$$gg.          sipeed@lpi4a12d6 
    ,g$$$$$$$$$$$$$$$P.       ---------------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 12 (bookworm) riscv64 
 ,$$P'              `$$$.     Host: T-HEAD Light Lichee Pi 4A configuration for LicheeConsole4A 
',$$P       ,ggs.     `$$b:   Kernel: 5.10.113+ 
`d$$'     ,$P"'   .    $$$    Uptime: 2 mins 
 $$P      d$'     ,    $$P    Packages: 1542 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.2.15 
 $$;      Y$b._   _,d$P'      Resolution: 800x1280 
 Y$$.    `.`"Y$$$$P"'         Terminal: /dev/pts/1 
 `$$b      "-.__              CPU: (4) @ 1.500GHz 
  `Y$$                        Memory: 497MiB / 15613MiB 
   `Y$$.
     `$$b.                                            
       `Y$$b.                                         
          `"Y$b._
              `"""

# output of `uname -a`
Linux lpi4a12d6 5.10.113+ #1 SMP PREEMPT Tue Dec 12 09:20:55 CST 2023 riscv64 GNU/Linux

Benchmark results

CPU

Power

  • Idle power draw (at wall): 7W (sometimes dipping to 5.5W)
  • Maximum simulated power draw (stress-ng --matrix 0): 9.3 W
  • During Geekbench multicore benchmark: 8.5 W
  • During top500 HPL benchmark: 8.5 W

Note: I charged the battery to 100% then ran all the rest of the tests (including idle power measurements) while plugged into the supplied AC adapter. It is tricky to get exact, replicable power measurements on laptop devices, so take these power measurements with a grain of salt.

Disk

128 GB built-in eMMC

Benchmark Result
fio 1M sequential read 268.00 MB/s
iozone 1M random read 209.00 MB/s
iozone 1M random write 199.86 MB/s
iozone 4K random read 16.86 MB/s
iozone 4K random write 19.90 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).

PiBenchmarks.com result (TODO_INSERT_LINK_HERE):

     Category                  Test                      Result      
HDParm                    Disk Read                 264.36 MB/sec            
HDParm                    Cached Disk Read          240.02 MB/sec            
DD                        Disk Write                93.8 MB/s                
FIO                       4k random read            8896 IOPS (35586 KB/s)   
FIO                       4k random write           4452 IOPS (17808 KB/s)   
IOZone                    4k read                   27732 KB/s               
IOZone                    4k write                  21188 KB/s               
IOZone                    4k random read            17029 KB/s               
IOZone                    4k random write           19842 KB/s               

                          Score: 4916                                        

Network

iperf3 results:

Built-in Ethernet

  • iperf3 -c $SERVER_IP: 943 Mbps
  • iperf3 --reverse -c $SERVER_IP: 931 Mbps
  • iperf3 --bidir -c $SERVER_IP: 873 Mbps up, 199 Mbps down

Built-in WiFi

  • iperf3 -c $SERVER_IP: 102 Mbps
  • iperf3 --reverse -c $SERVER_IP: 110 Mbps
  • iperf3 --bidir -c $SERVER_IP: 55 Mbps up, 27 Mbps down

(Be sure to test all interfaces, noting any that are non-functional.)

GPU

  • TODO: Haven't determined standardized benchmark yet. See Issue #2.

GLMark2 ES2 Result:

=======================================================
    glmark2 2021.12
=======================================================
    OpenGL Information
    GL_VENDOR:      Imagination Technologies
    GL_RENDERER:    PowerVR B-Series BXM-4-64
    GL_VERSION:     OpenGL ES 3.2 build 1.17@6210866
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=8
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 348 FrameTime: 2.874 ms
[build] use-vbo=true: FPS: 868 FrameTime: 1.152 ms
[texture] texture-filter=nearest: FPS: 931 FrameTime: 1.074 ms
[texture] texture-filter=linear: FPS: 918 FrameTime: 1.089 ms
[texture] texture-filter=mipmap: FPS: 918 FrameTime: 1.089 ms
[shading] shading=gouraud: FPS: 774 FrameTime: 1.292 ms
[shading] shading=blinn-phong-inf: FPS: 790 FrameTime: 1.266 ms
[shading] shading=phong: FPS: 680 FrameTime: 1.471 ms
[shading] shading=cel: FPS: 667 FrameTime: 1.499 ms
[bump] bump-render=high-poly: FPS: 474 FrameTime: 2.110 ms
[bump] bump-render=normals: FPS: 954 FrameTime: 1.048 ms
[bump] bump-render=height: FPS: 953 FrameTime: 1.049 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 664 FrameTime: 1.506 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 292 FrameTime: 3.425 ms
[pulsar] light=false:quads=5:texture=false: FPS: 945 FrameTime: 1.058 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 252 FrameTime: 3.968 ms
[desktop] effect=shadow:windows=4: FPS: 432 FrameTime: 2.315 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 139 FrameTime: 7.194 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 143 FrameTime: 6.993 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 204 FrameTime: 4.902 ms
[ideas] speed=duration: FPS: 396 FrameTime: 2.525 ms
[jellyfish] <default>: FPS: 383 FrameTime: 2.611 ms
[terrain] <default>: FPS: 41 FrameTime: 24.390 ms
[shadow] <default>: FPS: 391 FrameTime: 2.558 ms
[refract] <default>: FPS: 63 FrameTime: 15.873 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 934 FrameTime: 1.071 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 749 FrameTime: 1.335 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 955 FrameTime: 1.047 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 842 FrameTime: 1.188 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 635 FrameTime: 1.575 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 862 FrameTime: 1.160 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 863 FrameTime: 1.159 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 826 FrameTime: 1.211 ms
=======================================================
                                  glmark2 Score: 614 
=======================================================

The power consumption on the device jumped to 9.1W during the OpenGL tests. A tiny bit higher than the average CPU consumption during Geekbench tests.

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                                     :   3141.5 MB/s
 C copy backwards (32 byte blocks)                    :   1359.6 MB/s (1.1%)
 C copy backwards (64 byte blocks)                    :   1339.0 MB/s (0.2%)
 C copy                                               :   3214.8 MB/s
 C copy prefetched (32 bytes step)                    :   3227.4 MB/s
 C copy prefetched (64 bytes step)                    :   3229.1 MB/s
 C 2-pass copy                                        :   2758.9 MB/s (0.1%)
 C 2-pass copy prefetched (32 bytes step)             :   2712.3 MB/s
 C 2-pass copy prefetched (64 bytes step)             :   2702.4 MB/s (0.2%)
 C fill                                               :  11232.6 MB/s
 C fill (shuffle within 16 byte blocks)               :  11228.5 MB/s (0.7%)
 C fill (shuffle within 32 byte blocks)               :   1592.7 MB/s (0.2%)
 C fill (shuffle within 64 byte blocks)               :   1592.2 MB/s
 ---
 standard memcpy                                      :   3216.6 MB/s
 standard memset                                      :  11227.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
      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.1 ns          /     0.1 ns 
    131072 :   17.3 ns          /    26.3 ns 
    262144 :   26.1 ns          /    34.1 ns 
    524288 :   32.4 ns          /    39.0 ns 
   1048576 :   49.0 ns          /    61.9 ns 
   2097152 :   97.0 ns          /   131.3 ns 
   4194304 :  123.3 ns          /   153.5 ns 
   8388608 :  147.7 ns          /   181.1 ns 
  16777216 :  165.3 ns          /   203.4 ns 
  33554432 :  180.7 ns          /   227.0 ns 
  67108864 :  194.6 ns          /   250.8 ns 

sbc-bench results

Run sbc-bench and paste a link to the results here: https://sprunge.us/fUCnrY

Phoronix Test Suite

Results from pi-general-benchmark.sh:

  • pts/encode-mp3: TODO sec (could not install)
  • pts/x264 4K: TODO fps (could not install)
  • pts/x264 1080p: TODO fps (could not install)
  • pts/phpbench: 58398
  • pts/build-linux-kernel (defconfig): 5216.318 sec

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions