From 43516765cc11c3bc437ce3b909e82438858ed7b7 Mon Sep 17 00:00:00 2001 From: JayDDee Date: Fri, 7 Feb 2020 21:53:59 -0500 Subject: [PATCH] Updated Home (markdown) --- Home.md | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 386 insertions(+), 1 deletion(-) diff --git a/Home.md b/Home.md index 7972b5f..1800cd7 100644 --- a/Home.md +++ b/Home.md @@ -1,10 +1,395 @@ Welcome to the cpuminer-opt wiki! First draft to add log description. Will be supplimented with examples and -detauiled descriptions of the logs. +detailed descriptions of the logs. + +## Requirements + +### Hardware requirements. + +A x86_64 architecture CPU with a minimum of SSE2 support. This includes +Intel Core2 and newer and AMD equivalents. In order to take advantage of AES_NI +optimizations a CPU with AES_NI is required. This includes Intel Westmere +and newer and AMD equivalents. Further optimizations are available on some +algoritms for CPUs with AVX and AVX2, Sandybridge and Haswell respectively, +as well as AVX512, SHA, and VAES avaible on Icelake. + +Older CPUs are supported by cpuminer-multi by TPruvot but at reduced +performance. + +ARM CPUs are not supported. + +### Software requirements + +64 bit Linux OS. Ubuntu and Fedora based distributions, including Mint and +Centos, are known to work and have all dependencies in their repositories. +Others may work but may require more effort. Older versions such as Centos 6 +don't work due to missing features. +64 bit Windows OS is supported with mingw_w64 and msys or pre-built binaries. + +MacOS, OSx and Android are not supported. + +### Stratum pool + +Some algorithms may work wallet mining using getwork or GBT, YMMV. + +## Supported algorithms + + allium Garlicoin + anime Animecoin + argon2 Argon2 coin (AR2) + argon2d250 argon2d-crds, Credits (CRDS) + argon2d500 argon2d-dyn, Dynamic (DYN) + argon2d4096 argon2d-uis, Unitus, (UIS) + axiom Shabal-256 MemoHash + blake Blake-256 (SFR) + blake2b Blake2b 256 + blake2s Blake-2 S + blakecoin blake256r8 + bmw BMW 256 + bmw512 BMW 512 + c11 Chaincoin + decred + deep Deepcoin (DCN) + dmd-gr Diamond-Groestl + groestl Groestl coin + hex x16r-hex + hmq1725 Espers + hodl Hodlcoin + jha Jackpotcoin + keccak Maxcoin + keccakc Creative coin + lbry LBC, LBRY Credits + luffa Luffa + lyra2h Hppcoin + lyra2re lyra2 + lyra2rev2 lyra2v2 + lyra2rev3 lyrav2v3, Vertcoin + lyra2z + lyra2z330 Lyra2 330 rows, Zoin (ZOI) + m7m Magi (XMG) + myr-gr Myriad-Groestl + neoscrypt NeoScrypt(128, 2, 1) + nist5 Nist5 + pentablake Pentablake + phi1612 phi + phi2 Luxcoin (LUX) + phi2-lux identical to phi2 + pluck Pluck:128 (Supcoin) + polytimos Ninja + power2b MicroBitcoin (MBC) + quark Quark + qubit Qubit + scrypt scrypt(1024, 1, 1) (default) + scrypt:N scrypt(N, 1, 1) + sha256d Double SHA-256 + sha256q Quad SHA-256, Pyrite (PYE) + sha256t Triple SHA-256, Onecoin (OC) + sha3d Double keccak256 (BSHA3) + shavite3 Shavite3 + skein Skein+Sha (Skeincoin) + skein2 Double Skein (Woodcoin) + skunk Signatum (SIGT) + sonoa Sono + timetravel Machinecoin (MAC) + timetravel10 Bitcore + tribus Denarius (DNR) + vanilla blake256r8vnl (VCash) + veltor (VLT) + whirlpool + whirlpoolx + x11 Dash + x11evo Revolvercoin + x11gost sib (SibCoin) + x12 Galaxie Cash (GCH) + x13 X13 + x13bcd bcd + x13sm3 hsr (Hshare) + x14 X14 + x15 X15 + x16r + x16rv2 Ravencoin (RVN) + x16rt Gincoin (GIN) + x16rt-veil Veil (VEIL) + x16s Pigeoncoin (PGN) + x17 + x21s + x22i + x25x + xevan Bitsend (BSD) + yescrypt Globalboost-Y (BSTY) + yescryptr8 BitZeny (ZNY) + yescryptr8g Koto (KOTO) + yescryptr16 Eli + yescryptr32 WAVI + yespower Cryply + yespowerr16 Yenten (YTN) + yespower-b2b generic yespower + blake2b + zr5 Ziftr + +## Building + +### Building on Linux + +2. 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. Regardless compiling is trivial if you +follow the instructions. + +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 compiler 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. Fedora and other distributions may have similar +but different package names. + +$ sudo apt-get install build-essential automake libssl-dev libcurl4-openssl-dev libjansson-dev libgmp-dev zlib1g-dev git + +SHA support on AMD Ryzen CPUs requires gcc version 5 or higher and +openssl 1.1.0e or higher. Add one of the following to CFLAGS for SHA +support depending on your CPU and compiler version: + +"-march=native" is always the best choice + +"-march=znver1" for Ryzen 1000 & 2000 series, znver2 for 3000. + +"-msha" Add SHA to other tuning options + +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. + +3. Download cpuminer-opt +------------------------ + +Download the source code for the latest realease from the official repository. + +https://github.com/JayDDee/cpuminer-opt/releases + +Extract the source code. + +$ tar xvzf cpuminer-opt-x.y.z.tar.gz + + +Alternatively it can be cloned from git. + +$ git clone https://github.com/JayDDee/cpuminer-opt.git + +4. Build cpuminer-opt +--------------------- + +It is recomended to Build with default options, this will usuallly +produce the best results. + +$ ./build.sh to build on Linux or execute the following commands. + +or + +$ ./autogen.sh +$ CFLAGS="-O3 -march=native -Wall" ./configure --with-curl +$ make -j n + +n is the number of threads. + +5. Start mining. +---------------- + +$ ./cpuminer -a algo -o url -u username -p password + + +### Building for Windows + +Windows compilation using Visual Studio is not supported. Mingw64 is +used on a Linux system (bare metal or virtual machine) to cross-compile +cpuminer-opt executable binaries for Windows. + +These instructions were written for Debian and Ubuntu compatible distributions +but should work on other major distributions as well. However some of the +package names or file paths may be different. + +It is assumed a Linux system is already available and running. And the user +has enough Linux knowledge to find and install packages and follow these +instructions. + +First it is a good idea to create new user specifically for cross compiling. +It keeps all mingw stuff contained and isolated from the rest of the system. + +Step by step... + +1. Install necessary packages from the distribution's repositories. + +Refer to Linux compile instructions and install required packages. + +Additionally, install mingw-w64. + +sudo apt-get install mingw-w64 + + +2. Create a local library directory for packages to be compiled in the next + step. Suggested location is $HOME/usr/lib/ + +3. Download and build other packages for mingw that don't have a mingw64 + version available in the repositories. + +Download the following source code packages from their respective and +respected download locations, copy them to ~/usr/lib/ and uncompress them. + +openssl +curl +gmp + +In most cases the latest vesrion is ok but it's safest to download +the same major and minor version as included in your distribution. + +Run the following commands or follow the supplied instructions. +Do not run "make install" unless you are using ~/usr/lib, which isn't +recommended. + +Some instructions insist on running "make check". If make check fails +it may still work, YMMV. + +You can speed up "make" by using all CPU cores available with "-j n" where +n is the number of CPU threads you want to use. + +openssl: + +./Configure mingw64 shared --cross-compile-prefix=x86_64-w64-mingw32 +make + +curl: + +./configure --with-winssl --with-winidn --host=x86_64-w64-mingw32 +make + +gmp: + +./configure --host=x86_64-w64-mingw32 +make + + + +4. Tweak the environment. + +This step is required everytime you login or the commands can be added to +.bashrc. + +Define some local variables to point to local library. + +export LOCAL_LIB="$HOME/usr/lib" + +export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs -L$LOCAL_LIB/openssl" + +export CONFIGURE_ARGS="--with-curl=$LOCAL_LIB/curl --with-crypto=$LOCAL_LIB/openssl --host=x86_64-w64-mingw32" + +Create a release directory and copy some dll files previously built. +This can be done outside of cpuminer-opt and only needs to be done once. +If the release directory is in cpuminer-opt directory it needs to be +recreated every a source package is decompressed. + +mkdir release +cp /usr/x86_64-w64-mingw32/lib/zlib1.dll release/ +cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll release/ +cp /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/libstdc++-6.dll release/ +cp /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/libgcc_s_seh-1.dll release/ +cp $LOCAL_LIB/openssl/libcrypto-1_1-x64.dll release/ +cp $LOCAL_LIB/curl/lib/.libs/libcurl-4.dll release/ + + + +The following steps need to be done every time a new source package is +opened. + +5. Download cpuminer-opt + +Download the latest source code package of cpumuner-opt to your desired +location. .zip or .tar.gz, your choice. + +https://github.com/JayDDee/cpuminer-opt/releases + +Decompress and change to the cpuminer-opt directory. + + + +6. Prepare to compile + +Create a link to the locally compiled version of gmp.h + +ln -s $LOCAL_LIB/gmp-version/gmp.h ./gmp.h + +Edit configure.ac to fix lipthread package name. + +sed -i 's/"-lpthread"/"-lpthreadGC2"/g' configure.ac + + +7. Compile + +you can use the default compile if you intend to use cpuminer-opt on the +same CPU and the virtual machine supports that architecture. + +./build.sh + +Otherwise you can compile manually while setting options in CFLAGS. + +Some common options: + +To compile for a specific CPU architecture: + +CFLAGS="-O3 -march=znver1 -Wall" ./configure --with-curl + +This will compile for AMD Ryzen. + +You can compile more generically for a set of specific CPU features +if you know what features you want: + +CFLAGS="-O3 -maes -msse4.2 -Wall" ./configure --with-curl + +This will compile for an older CPU that does not have AVX. + +You can find several examples in build-allarch.sh + +If you have a CPU with more than 64 threads and Windows 7 or higher you +can enable the CPU Groups feature: + +-D_WIN32_WINNT==0x0601 + +Once you have run configure successfully run make with n CPU threads: + +make -j n + +Copy cpuminer.exe to the release directory, compress and copy the release +directory to a Windows system and run cpuminer.exe from the command line. + +Run cpuminer + +In a command windows change directories to the unzipped release folder. +to get a list of all options: + +cpuminer.exe --help + +Command options are specific to where you mine. Refer to the pool's +instructions on how to set them. + ## Usage +### Basic usage + +### options + + + + ## Logs