Updated Support for AARCH64 (markdown)

JayDDee
2023-10-15 00:38:22 -04:00
parent 68b5ba88c9
commit 81d358f310

@@ -2,7 +2,8 @@ Development is begining to provide support for ARM 64 bit CPUs using the aarch64
This is provided as source code only and may be built on native Linux or on Windows using MingW/MSys by following the existing procedure subject to he modifications detailed below.
Community testing is requested because I have no ARM CPU at this time. I'm looking at Raspberry Pi but would prefer a PC without the Windows tax.
Bitcoin talk discussion thread: https://bitcointalk.org/index.php?topic=5226770.0
Requirements:
* An ARM CPU supporting AArch64
@@ -10,11 +11,9 @@ Requirements:
## Status
Update: I now have a Raspberry Pi 4B so I'm working through some build issues. Things are progressing but there is no point in user trying it yet. I hope to have more news soon. FYI the Pi dopesn't have AES or SHA2.
The miner compiles and runs on Raspberry Pi 4B but only produces rejects. It's a start but there's a lot of work to do. Stay tuned
* Current status: first release available, start testing
Optimizations available in first public release:
Status of optimizations:
* all variations of blake have linear and parallel vectorization
* all variations of sha256 have parallel and HW accelerated optimizations
@@ -25,59 +24,5 @@ x86_64 optimizations disabled for ARM:
* aes is disabled for Groestl, Echo, and fugue.
* Simd (the hash function, not the CPU feature) linear vectorization is disabled
* Yespower, yescrypt, scrypt & argon2d optimizations are disabled
* Yespower, yescrypt, neoscryptscrypt & argon2d optimizations are disabled
## Test plan
This code is completely untested. It compiles but fails to link several libraries including curl, gmp, z, crypto & ssl, when cross compiling.
Hopefully this is only a cross compile issue.
Monitor CPU temperature and ensure adequate ventilation and cooling as should be done with any CPU nining.
Please report all results and include your CPU and OS, any custom build options, miner startup messages, any errors or relevant logs and a clear description. Adding `--debug` is also recommendded. If the miner crashes familiarity with GDB is an asset.
Problems can be reported through github issues, bitcointalk or by email. Open discussion is preferred.
https://bitcointalk.org/index.php?topic=5226770.0
Successful compilation is the first step. The recommended procedure is to folllow the standard build instructions for Linux with minor variations described below.
Download the latest source code from git:
`$ git clone https://github.com/JayDDee/cpuminer-opt.git`
or
`$ wget https://github.com/JayDDee/cpuminer-opt/archive/refs/heads/master.zip`
Unzip if necessary and compile
`$ ./autogen.sh`
`$ CFLAGS="-O2 -march=native -Wall -flax-vector-conversions" ./configure --with-curl`
`$ make -j $nproc`
It's recommended testing with different builds with and without aes or sha2 or both to test different code for algos that support those features. Features can be specified as follows:
`"-march=armv8-a+crypto+sha2+aes"`
Ater successful compile start slow with a couple of simple commands.
`$ ./cpuminer --version`
Does it run or crash? Note if CPU information is correct.
`$ ./cpuminer --benchmark`
Is CPU tempereature and clock frequency displayed correctly?
Try a few different algos. Do they all crash, some crash, of none crash? Hash rate is irrelevant at this time.
No crashes is considered the threshold for success for the first public release.
For a bonus try mining at a pool with algos that don't crash during benchmark.
Does it connect and start hashing? Does it submit any shares? Are they accepted? Expectations are very low. Much of the code is just recompiled C but much is also new NEON code. Having any accepted shares with any algo is beyond any expectations.