mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2025-09-17 23:44:27 +00:00
478 lines
13 KiB
Plaintext
478 lines
13 KiB
Plaintext
cpuminer-opt now supports HW SHA acceleration available on AMD Ryzen CPUs.
|
|
This feature requires recent SW including GCC version 5 or higher and
|
|
openssl version 1.1 or higher. It may also require using "-march=znver1"
|
|
compile flag.
|
|
|
|
HW SHA support is only available when compiled from source, Windows binaries
|
|
are not yet available.
|
|
|
|
cpuminer-opt is a console program, if you're using a mouse you're doing it
|
|
wrong.
|
|
|
|
Security warning
|
|
----------------
|
|
|
|
Miner programs are often flagged as malware by antivirus programs. This is
|
|
a false positive, they are flagged simply because they are miners. The source
|
|
code is open for anyone to inspect. If you don't trust the software, don't use
|
|
it.
|
|
|
|
The cryptographic code has been taken from trusted sources but has been
|
|
modified for speed at the expense of accepted security practices. This
|
|
code should not be imported into applications where secure cryptography is
|
|
required.
|
|
|
|
Compile Instructions
|
|
--------------------
|
|
|
|
Requirements:
|
|
|
|
Intel Core2 or newer, or AMD Steamroller or newer CPU.
|
|
64 bit Linux or Windows operating system.
|
|
|
|
Building on linux prerequisites:
|
|
|
|
It is assumed users know how to install packages on their system and
|
|
be able to compile standard source packages. This is basic Linux and
|
|
beyond the scope of cpuminer-opt.
|
|
|
|
Make sure you have the basic development packages installed.
|
|
Here is a good start:
|
|
|
|
http://askubuntu.com/questions/457526/how-to-install-cpuminer-in-ubuntu
|
|
|
|
Install any additional dependencies needed by cpuminer-opt. The list below
|
|
are some of the ones that may not be in the default install and need to
|
|
be installed manually. There may be others, read the error messages they
|
|
will give a clue as to the missing package.
|
|
|
|
The following command should install everything you need on Debian based
|
|
distributions such as Ubuntu:
|
|
|
|
sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libjansson-dev libgmp-dev automake
|
|
|
|
|
|
build-essential (for Ubuntu, Development Tools package group on Fedora)
|
|
automake
|
|
libjansson-dev
|
|
libgmp-dev
|
|
libcurl4-openssl-dev
|
|
libssl-dev
|
|
pthreads
|
|
zlib
|
|
|
|
SHA support on AMD Ryzen CPUs requires gcc version 5 or higher and openssl 1.1
|
|
or higher. Reports of improved performiance on Ryzen when using openssl 1.0.2
|
|
have been due to AVX and AVX2 optimizations added to that version.
|
|
Additional improvements are expected on Ryzen with openssl 1.1.
|
|
"-march-znver1" or "-msha".
|
|
|
|
Additional instructions for static compilalation can be found here:
|
|
https://lxadm.com/Static_compilation_of_cpuminer
|
|
Static builds should only considered in a homogeneous HW and SW environment.
|
|
Local builds will always have the best performance and compatibility.
|
|
|
|
Extract cpuminer source.
|
|
|
|
tar xvzf cpuminer-opt-x.y.z.tar.gz
|
|
cd cpuminer-opt-x.y.z
|
|
|
|
Run ./build.sh to build on Linux or execute the following commands.
|
|
|
|
./autogen.sh
|
|
CFLAGS="-O3 -march=native -Wall" CXXFLAGS="$CFLAGS -std=gnu++11" ./configure --with-curl
|
|
make
|
|
|
|
Additional optional compile flags, add the following to CFLAGS to activate:
|
|
|
|
-DUSE_SPH_SHA
|
|
|
|
SPH may give slightly better performance on algos that use sha256 when using
|
|
openssl 1.0.1 or older. Openssl 1.0.2 adds AVX2 and 1.1 adds SHA and perform
|
|
better than SPH.
|
|
|
|
-DFOUR_WAY
|
|
|
|
4 way will give much better performance on supported algos with CPUs
|
|
that have AVX2 and should only be used on CPUs with AVX2. 4 way algo
|
|
support will be added incrementally, see change log below for supported algos.
|
|
|
|
Start mining.
|
|
|
|
./cpuminer -a algo -o url -u username -p password
|
|
|
|
Windows
|
|
|
|
The following in how the Windows binary releases are built. It's old and
|
|
not very good but it works, for me anyway.
|
|
|
|
Building on Windows prerequisites:
|
|
|
|
msys
|
|
mingw_w64
|
|
Visual C++ redistributable 2008 X64
|
|
openssl
|
|
|
|
Install msys and mingw_w64, only needed once.
|
|
|
|
Unpack msys into C:\msys or your preferred directory.
|
|
|
|
Install mingw_w64 from win-builds.
|
|
Follow instructions, check "msys or cygwin" and "x86_64" and accept default
|
|
existing msys instalation.
|
|
|
|
Open a msys shell by double clicking on msys.bat.
|
|
Note that msys shell uses linux syntax for file specifications, "C:\" is
|
|
mounted at "/c/".
|
|
|
|
Add mingw bin directory to PATH variable
|
|
PATH="/c/msys/opt/windows_64/bin/:$PATH"
|
|
|
|
Instalation complete, compile cpuminer-opt.
|
|
|
|
Unpack cpuminer-opt source files using tar from msys shell, or using 7zip
|
|
or similar Windows program.
|
|
|
|
In msys shell cd to miner directory.
|
|
cd /c/path/to/cpuminer-opt
|
|
|
|
Run winbuild.sh to build on Windows or execute the following commands.
|
|
|
|
./autogen.sh
|
|
CFLAGS="-O3 -march=native -Wall" CXXFLAGS="$CFLAGS -std=gnu++11 -fpermissive" ./configure --with-curl
|
|
make
|
|
|
|
Start mining
|
|
|
|
cpuminer.exe -a algo -o url -u user -p password
|
|
|
|
The following tips may be useful for older AMD CPUs.
|
|
|
|
AMD CPUs older than Piledriver, including Athlon x2 and Phenom II x4, are not
|
|
supported by cpuminer-opt due to an incompatible implementation of SSE2 on
|
|
these CPUs. Some algos may crash the miner with an invalid instruction.
|
|
Users are recommended to use an unoptimized miner such as cpuminer-multi.
|
|
|
|
Some users with AMD CPUs without AES_NI have reported problems compiling
|
|
with build.sh or "-march=native". Problems have included compile errors
|
|
and poor performance. These users are recommended to compile manually
|
|
specifying "-march=btver1" on the configure command line.
|
|
|
|
Support for even older x86_64 without AES_NI or SSE2 is not availble.
|
|
|
|
|
|
Change Log
|
|
----------
|
|
|
|
v3.7.5
|
|
|
|
New algo keccakc for Creative coin with 4way optimizations
|
|
|
|
Rewrote some AVX/AVX2 code for more consistent implementation and some
|
|
optimizing.
|
|
|
|
Enhanced capabilities check to support 4way, mor eprecise reporting of
|
|
features (not all algos use SSE2), and better error messages when using
|
|
an incompatible pre-built version (Windows users).
|
|
|
|
v3.7.4
|
|
|
|
Removed unnecessary build options.
|
|
|
|
Added 4way support for tribus and nist5.
|
|
|
|
v3.7.3
|
|
|
|
Added polytimos algo.
|
|
|
|
Introducing 4-way AVX2 optimization giving up to 4x performance inprovement
|
|
on many compute bound algos. First supported algos: skein, skein2, blake &
|
|
keccak. This feature is only available when compiled from source. See above
|
|
for instcuctions how to enable 4-way during compilation.
|
|
|
|
Updated Dockerfile.
|
|
|
|
v3.7.2
|
|
|
|
Fixed yescryptr16
|
|
Changed default sha256 and sha512 to openssl. This should be used when
|
|
compiling with openssl 1.0.2 or higher (Ubuntu 16.04).
|
|
This should increase the hashrate for yescrypt, yescryptr16, m7m, xevan, skein,
|
|
myr-gr & others when openssl 1.0.2 is installed.
|
|
Users with openssl 1.0.1 (Ubuntu 14.04) may get better perforance by adding
|
|
"-DUSE_SPH_SHA" to CLAGS.
|
|
Windows binaries are compiled with -DUSE_SPH_SHA and won't get the speedup.
|
|
|
|
v3.7.1
|
|
|
|
Added yescryptr16 algo for Yenten coin
|
|
Added SHA support to yescrypt and yescryptr16
|
|
Small code cleanup
|
|
|
|
v3.7.0
|
|
|
|
Fixed x14 misalignment bug.
|
|
Fixed decred stake version bug.
|
|
Getwork fixes for algos that use big endian data encoding: m7m, zr5, neoscrypt,
|
|
decred.
|
|
|
|
v3.6.10
|
|
|
|
Fixed misalignment bug in hsr.
|
|
|
|
v3.6.9
|
|
|
|
Added phi1612 algo for LUX coin
|
|
Added x13sm3 algo, alias hsr, for Hshare coin
|
|
|
|
v3.6.8
|
|
|
|
Fixed timetravel10 on Windows.
|
|
|
|
v3.6.7
|
|
|
|
Skunk algo added.
|
|
Tribus a little faster.
|
|
Minor restructuring.
|
|
|
|
v3.6.6
|
|
|
|
added tribus algo for Denarius (DNR)
|
|
|
|
configure removed from .gitignore. This should allow git clone to compile
|
|
on Windows/mingw.
|
|
|
|
Fixed CPU temperature monitoring on some CPUs (Linux only).
|
|
|
|
Fixed a compile error on FreeBSD (unsupported YMMV).
|
|
|
|
v3.6.5
|
|
|
|
Cryptonight a little faster.
|
|
Added jha algo (Jackpotcoin) with AES optimizations.
|
|
|
|
v3.6.4
|
|
|
|
Added support for Bitcore (BTX) using the timetravel10 algo, optimized for
|
|
AES and AVX2.
|
|
"-a bitcore" works as an alias and is less typing that "-a timetravel10".
|
|
|
|
v3.6.3
|
|
|
|
Fixed all known issues with SHA support on AMD Ryzen CPUs, still no
|
|
Windows binaries.
|
|
|
|
v3.6.2
|
|
|
|
SHA accceleration is now supported on AMD Ryzen CPUs when compiled from source,
|
|
Windows binaries not yet available.
|
|
Fixed groestl algo.
|
|
Fixed dmd-gr (Diamond) algo.
|
|
Fixed lbry compile error on Ryzen.
|
|
Added SHA support to m7m algo.
|
|
Hodl support for CPUs without AES has been removed, use legacy version.
|
|
|
|
v3.6.1
|
|
|
|
Fixed data alignment issue that broke lyra2rev2 AVX2 on Windows.
|
|
Added preliminary support for HW accelerated SHA.
|
|
Solo mining most algos should now work, cryptonight confirmed exception.
|
|
|
|
v3.6.0
|
|
|
|
Preliminary support for solo mining using getwork.
|
|
|
|
v3.5.13
|
|
|
|
Found more speed in Cubehash, algo improvement depends on chain length,
|
|
deep +8%, timetravel +1% , xevan +1%
|
|
Fixed a getwork bug, solo mining is not yet supported but testing is encouraged
|
|
|
|
v3.5.12
|
|
|
|
New algo sha256t for Onecoin (OC), 29% faster than ocminer version.
|
|
lyra2zoin algo renamed to lyra2z330, lyra2zoin and zoin still work
|
|
as aliases.
|
|
|
|
v3.5.11
|
|
|
|
Fixed hmq1725 crash on Ubuntu 16.04
|
|
Fixed compile error in hodl.cpp with gcc 6.3
|
|
Fixed x11 crash on Windows with AVX2
|
|
|
|
v3.5.10
|
|
|
|
Some AVX2 optimizations introduced for Luffa, shorter chained algos such
|
|
as Qubit and Deep should see the biggest gains, but many other algos should
|
|
also see improvement, longer chains like xevan not so much.
|
|
Rewrite of Groestl AES, now 100% vectorized, small improvement.
|
|
build.sh and winbuild.sh initialize with distclean instead of clean.
|
|
Implemented a workaround for a compile error in hodl code when compiling
|
|
with gcc 6.3.
|
|
|
|
V3.5.9
|
|
|
|
Reduced stack usage for hmq1725 and small speedup.
|
|
Added Deep algo optimized for AES and AVX2
|
|
Rewrite of SSE2 Luffa, midstate now supported in deep, qubit & timetravel
|
|
Small changes to algo-gate.
|
|
|
|
v3.5.8
|
|
|
|
Lyra2RE fixed on Windows, broken in v3.5.6.
|
|
Ported AES cryptonight optimizations from v3.5.7 to non-AES version
|
|
with little improvement.
|
|
Marginal improvements to xevan and veltor.
|
|
|
|
v3.5.7
|
|
|
|
Cryptonight 5% faster
|
|
|
|
v3.5.6
|
|
|
|
Updated Lyra2z algo for new zcoin algo post block 2050.
|
|
Cleaned up Lyra2 code and increased performance
|
|
- Lyra2Z (zcoin) +12%
|
|
- Lyra2REv2 +11%
|
|
- Lyra2RE +6%
|
|
Fixed x11evo algo performance on Windows.
|
|
Timetravel algo 3% to 5% faster
|
|
Whirlpool algo 15% faster.
|
|
Removed aclocal.m4 from .gitignore.
|
|
|
|
v3.5.5
|
|
|
|
x11evo fixed on Windows but at reduced performance.
|
|
Changed benchmark stats collection default to false and
|
|
added proper user and password checks to enable it.
|
|
|
|
v3.5.4
|
|
|
|
x11evo fixed (broken in v3.5.2) and optimized 23% faster
|
|
Small improvements of 1% to 3% on many algos including timetravel,
|
|
xevan and cryptonight.
|
|
More code cleanup and compiler warning reduction.
|
|
Improved checking for missing command line arguments.
|
|
|
|
v3.5.3
|
|
|
|
More optimizations
|
|
Timetravel +16%
|
|
Xevan +3%
|
|
Qubit +12%
|
|
|
|
V3.5.2
|
|
|
|
Timetravel (machinecoin) added and optimized.
|
|
|
|
v3.5.1
|
|
|
|
Bastion 9% faster with AES, benchkmark still not working.
|
|
Worked around git automatically removing m4 directory.
|
|
Fixed occasional compile error in algo-gate.h.
|
|
|
|
v3.5.0
|
|
|
|
Fixed blakecoin and vanilla increasing rejects with number of threads.
|
|
Removed support for SSE2 Groestl functions. SSE2 groestl remains available
|
|
in v3.4.12 and the legacy branch.
|
|
It is no longer necessary to specify stratum+tcp:// in the url, it is assumed
|
|
and is the only supported protocol.
|
|
|
|
v3.4.12
|
|
|
|
lyra2z (zcoin) modified for blocks after 8192
|
|
fixed scryptjane to support various N factors
|
|
|
|
v3.4.11
|
|
|
|
groestl algo AES optimized +200%
|
|
myr-gr algo AES optimized +100%
|
|
|
|
v3.4.10
|
|
|
|
xevan AES optimized +35%
|
|
|
|
v3.4.9
|
|
|
|
fixed zr5, broken in v3.4.8
|
|
added xevan algo (Bitsend, BSD) with 10% improvement
|
|
added lyra2zoin (Zoin, ZOI) fully optimized but YMMV
|
|
|
|
v3.4.8
|
|
|
|
added zcoin support, optimized for AVX2 but no increase in performance
|
|
fixed API display of diff for cryptonight
|
|
--show-diff is now the default, use "--hide-diff" to disable
|
|
cleaned up some cpuminer-multi artifacts
|
|
|
|
v3.4.7
|
|
|
|
fixed benchmark, except for x11evo
|
|
added CPU temperature to share submission report (Linux only)
|
|
|
|
v3.4.6
|
|
|
|
For users:
|
|
- cryptolight algo is now supported with AES optimizations
|
|
- display format changed for share submissions
|
|
- colour keyed "Accepted" or "Rejected" status.
|
|
- reject count and rate displayed when share is rejected.
|
|
|
|
For developers:
|
|
|
|
- code restructuring for detecting new work
|
|
- cleaned up detection and handling of new work
|
|
- removed call to stratum_gen_work from niner_thread.
|
|
- eliminated gen_work_now gate function.
|
|
- renamed gate function init_nonce to get_new_work.
|
|
- renamed gate function alloc_scratchbuf to miner_thread_init,
|
|
removed all scracthbuf references from miner_thread and moved
|
|
implementation to the local algo files of those algos that need it.
|
|
- moved most gate targets from algo-gate.c to cpu-miner.c removing
|
|
most mining related code from algo-gate-api.c.
|
|
|
|
v3.4.5
|
|
|
|
fixed stale share rejects mining cryptonight at Nicehash
|
|
fixed compile error on Westmere CPUs
|
|
|
|
v3.4.4
|
|
|
|
fixed compile errors on Westmere CPUs, this is an interim fix that
|
|
will compile without AES on Westmere
|
|
added support for cryptonight at Nicehash, some rejects may be produced
|
|
at Nicehash only.
|
|
|
|
v3.4.3
|
|
|
|
imported optimized m7m, +42%
|
|
|
|
v3.4.2
|
|
|
|
added veltor algo
|
|
tweaked lyra2 AVX/AVX2 code for small improvement.
|
|
|
|
v3.4.1
|
|
|
|
big AVX2 optmizations for lyra2 +35%, lyra2v2 +11%, AVX also faster
|
|
fixed hmq1725
|
|
|
|
v3.4.0
|
|
|
|
fixed Windows compile error introduced in v3.3.9
|
|
fixed x11gost, broken in v3.3.7
|
|
AVX2 optimizations improving many algos:
|
|
- Lyra2RE +3%
|
|
- Lyra2REv2 +19%
|
|
- x11gost (sib) +6%
|
|
- x11evo +2.4%
|
|
- c11 +6.9%
|
|
- x11 +5%
|
|
- x13 +5%
|
|
- x14 +3.6%
|
|
- x15 +2.4%
|
|
- x17 +2.8%
|
|
- qubit +8.4%
|
|
|