geerlingguy / top500-benchmark

Automated Top500 benchmark for clusters or single nodes.
MIT License
158 stars 17 forks source link

Benchmark Milk-V Mars RISC-V SBC #35

Closed geerlingguy closed 2 months ago

geerlingguy commented 2 months ago

See: https://github.com/geerlingguy/sbc-reviews/issues/46

It will likely be similar in performance to the Mars CM (https://github.com/geerlingguy/top500-benchmark/issues/20)

geerlingguy commented 2 months ago

Attempting to install Ansible to run the benchmark from the board itself:

  1. sudo apt install python3-pip
  2. pip3 install ansible

For the Mars CM, it had trouble compiling the Python cryptography library. And I found an issue for riscv64 build - OOM kill, high memory usage, but I seem to be hitting an issue where it tries to find a Rust compiler and bails:

      copying src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi -> build/lib.linux-riscv64-cpython-310/cryptography/hazmat/bindings/_rust/openssl
      running build_ext
      running build_rust
      error: can't find Rust compiler

      If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

      To update pip, run:

          pip install --upgrade pip

      and then retry package installation.

      If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.

      This package requires Rust >=1.63.0.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for cryptography
  Building wheel for MarkupSafe (setup.py) ... done
  Created wheel for MarkupSafe: filename=MarkupSafe-2.1.5-cp310-cp310-linux_riscv64.whl size=23821 sha256=da37d67f972b1023bca608d3c5a2038e1f99061240ccd1a57a2d9a30baeddf3d
  Stored in directory: /home/user/.cache/pip/wheels/2a/04/fa/f54a9011eaf18a437110e8171478b3e963dc249ed60ce77f17
Successfully built PyYAML MarkupSafe
Failed to build cryptography
ERROR: Could not build wheels for cryptography, which is required to install pyproject.toml-based projects
geerlingguy commented 2 months ago

I tried installing musl-dev with gcc musl-dev python3-dev libffi-dev as suggested here, then I tried installing cryptography standalone, but that's not working either.

Going to just run Ansible from my Mac like I did with Mars CM.

geerlingguy commented 2 months ago

Running from my Mac, it gets stuck during the apt cache update, so I've disabled that for now...

TASK [Update apt cache.] ***********************************************************************************************
fatal: [10.0.2.211]: FAILED! => changed=false 
  msg: 'Failed to update apt cache: unknown reason'
geerlingguy commented 2 months ago

Final result: 2.058 Gflops at 4.7W, for 0.438 Gflops/W

================================================================================
HPLinpack 2.3  --  High-Performance Linpack benchmark  --   December 2, 2018
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver
================================================================================

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :   23314
NB     :     256
PMAP   : Row-major process mapping
P      :       1
Q      :       4
PFACT  :   Right
NBMIN  :       4
NDIV   :       2
RFACT  :   Crout
BCAST  :  1ringM
DEPTH  :       1
SWAP   : Mix (threshold = 64)
L1     : transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

--------------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual check will be computed:
      ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
- The relative machine precision (eps) is taken to be               1.110223e-16
- Computational tests pass if scaled residuals are less than                16.0

================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR11C2R4       23314   256     1     4            4105.15             2.0581e+00
HPL_pdgesv() start time Tue Jul  2 03:24:42 2024

HPL_pdgesv() end time   Tue Jul  2 04:33:07 2024

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   4.06326368e-03 ...... PASSED
================================================================================

Finished      1 tests with the following results:
              1 tests completed and passed residual checks,
              0 tests completed and failed residual checks,
              0 tests skipped because of illegal input values.
--------------------------------------------------------------------------------

End of Tests.
================================================================================