diff --git a/Support-for-AARCH64.md b/Support-for-AARCH64.md index 030d281..6fa3058 100644 --- a/Support-for-AARCH64.md +++ b/Support-for-AARCH64.md @@ -1,13 +1,56 @@ Development is begining to provide support for ARM 64 bit CPUs using the aarch64 architecture. -* Current status: nothing publicly released. +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. + +## Status + +* Current status: nothing publicly released yet. + * ARM support will be source code only, no binaries are planned. * Coding is progressing with many issues translating SSE to NEON. Some things are done very differently and some things may not be possible. * The lack of flexible lane shuffling is a major problem. Some shuffles may have to be done by inserting one lane at a time. -* Current expectations are best performance will be with sha256 based algos and some algos that use AES. Current issues exist with AES for echo & fugue. +* Current expectations are best performance will be with sha256 based algos. AES is only supported for shavite. * Parallel 4 way hashing will not be provided initially but will be added later. -* Current problem algos include anything with Echo or Fugue, there are problems with the AES implementation. +* Current problem algos include anything with Groestl, Echo & Fugue due to problems with the AES implementation. * Simd has a problem with multiplication that I haven't resolved. * Scrypt has issues with the lack of a blend instruction in NEON that requires a workaround. The lack of mask creating doesn't make it any easier. * Yespower/yescrypt also have issues that aren't fully understood due to the complexity of the current code. -* Unresolved issues will result in using completely unoptimized "reference" code. \ No newline at end of file +* Unresolved issues will result in using completely unoptimized "reference" code. + +## 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. + +Successful compilation is the first step. The recommended procedure is to folllow thw Linux build instructions for installing dependencies. + +`./autogen.sh` +`CFLAGS="-O2 -march=armv8-a+crypto+sha2+aes -Wall -flax-vector-conversions" ./configure --with-curl` +`make -j $nproc` + +"native" can be substituted for -march=. +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. + +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. +