We will test the new AMD compiler with optimization for Ryzen processors. In various miners.

How to install AOCC in ubuntu 16.04 (18.04, 19.04) and compile cpuminer with optimization for AMD Ryzen

AOCC Docs - https://developer.amd.com/wp-content/resources/AOCC-2.1-Install-Guide.pdf

0) Install depends

sudo apt-get install -y git
sudo apt-get install -y automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++
sudo apt-get install -y lib32z1-dev

1) download aocc-compiler-2.1.0_1_amd64.deb from https://developer.amd.com/amd-aocc/

2) install AOCC in Ubuntu

sudo dpkg -i aocc-compiler-2.1.0_1_amd64.deb
source /opt/AMD/aocc-compiler-2.1.0/setenv_AOCC.sh

3) check the installed AOCC compiler

clang -v

4) Download cpuminer

git clone https://github.com/bitzeny/cpuminer.git bitzeny-miner
cd bitzeny-miner
./autogen.sh

Compile and test with gcc

./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
make
./minerd --benchmark -a yescrypt -t 1

Ryzen 2600 = 0.79 khash/s

Compile and test with AOCC

make clean
./configure CC=clang CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
make
./minerd --benchmark -a yescrypt -t 1

Ryzen 2600 = 0.794 khash/s

make clean
./configure CC=clang CFLAGS="-O3 -march=znver2 -funroll-loops -fomit-frame-pointer"
make
./minerd --benchmark -a yescrypt -t 1

Ryzen 2600 = 0.796 khash/s

Test Bitzeny Cpuminer with yespower 0.5 (yescrypt compatibility)

Install bitzeny cpuminer

git clone https://github.com/BitzenyCoreDevelopers/cpuminer.git bitzeny-yespower
cd bitzeny-yespower
./autogen.sh

with gcc

./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
make 
./minerd --benchmark -a yespower -t 1

with AOCC

make clean
./configure CC=clang CFLAGS="-O3 -march=native -mno-avx2"
make
./minerd --benchmark -a yespower -t 1

speed AOCC in yespower < gcc

Test Bitzeny Cpuminer for Bellcoin with yespower 1.0

Change line
https://github.com/BitzenyCoreDevelopers/cpuminer/blob/master/yespower/yespower.c#L45
to

static const yespower_params_t yespower_BITZENY = {YESPOWER_1_0, 2048, 32, NULL, 0};


with gcc

make clean
./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
make 
./minerd --benchmark -a yespower -t 1

Ryzen 2600 = 0.276 khash/s

make clean
./configure CFLAGS="-O3 -msse2 -Wall -funroll-loops -fomit-frame-pointer"
make 
./minerd --benchmark -a yespower -t 1

Ryzen 2600 = 0.278 khash/s

make clean
./configure CFLAGS="-O3 -msse2 -Wall"
make 
./minerd --benchmark -a yespower -t 1

Ryzen 2600 = 0.277 khash/s

with AOCC

make clean
./configure CC=clang CFLAGS="-O3 -march=native -mno-avx2"
make
./minerd --benchmark -a yespower -t 1

Ryzen 2600 = 0.258 khash/s

./configure CC=clang CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"

./configure CC=clang CFLAGS="-O3 -march=znver2 -funroll-loops -fomit-frame-pointer"

./configure CC=clang CFLAGS="-O3 -march=znver1 -funroll-loops -fomit-frame-pointer"

Ryzen 2600 = 0.256 khash/s

Test cpuminer-opt with AOCC

you need to remove all algorithms from the miner, except yespower

git clone https://github.com/cpu-pool/cpuminer-opt-cpupower.git
chmod +x autogen.sh
./autogen.sh || echo done

before every configure

make clean

after configure

make
./cpuminer --benchmark -a yespower -t 1

with gcc

CFLAGS="-O3 -msse2 -Wall" ./configure --with-curl

Ryzen 2600 = 0.276 khash/s

CFLAGS="-O3 -msse2 -Wall -funroll-loops -fomit-frame-pointer" ./configure --with-curl

Ryzen 2600 = 0.278 khash/s

with AOCC

./configure --with-curl CC=clang CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"

Ryzen 2600 = 0.253 khash/s

./configure --with-curl CC=clang CFLAGS="-O3 -msse2 -Wall"

Ryzen 2600 = 0.267 khash/s

Test Koto Miner on optimization for Ryzen (better AOCC or GCC?)

install Koto Miner

https://github.com/KotoDevelopers/cpuminer-yescrypt

results:

with gcc

CFLAGS="-O3 -msse2 -Wall" ./configure

Ryzen 2600 - 0.88 khash/s

CFLAGS="-O3 -msse2 -Wall -funroll-loops -fomit-frame-pointer" ./configure

Ryzen 2600 - 0.88 khash/s

with AOCC

./configure CC=clang CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"

Ryzen 2600 - 0.80 khash/s

./configure CC=clang CFLAGS="-O3 -msse2 -Wall"

Ryzen 2600 - 0.87 khash/s

./configure CC=clang CFLAGS="-O3 -march=znver1"

./configure CC=clang CFLAGS="-O3 -march=znver2"

Ryzen 2600 - 0.82 khash/s

Results
For algorithms yespower and yescrypt - the new optimized compiler from AMD does not give a gain.

p.s. - Thanks to cpu-pool.com for the material provided.