Bitcoin Forum
November 16, 2024, 01:14:16 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 6 7 8  All
  Print  
Author Topic: [XPM] Primecoin High Performance Linux Compilation Guide  (Read 43554 times)
mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 02:50:16 PM
Last edit: March 08, 2014, 12:37:26 PM by mikaelh
 #1

Here are some Linux compiling instructions for my high performance version of Primecoin. There are plenty of other guides out there but none of them seem to address all the issues. Now I'm writing my own guide. This should be the definitive guide on how to compile Primecoin on Linux. Commands need to be entered exactly as they appear, so copy and pasting is recommended.

Link to the main high performance thread:
https://bitcointalk.org/index.php?topic=255782.0

Another guide written by eCoinomist is available here:
http://ecoinomist.com/xpm-primecoin-mining-guide-on-linux

Please note that if you are new to Linux, it's best to stick with one guide. Mixing the instructions from different guides may produce errors later.

Tested with the following Linux distributions:
 - Ubuntu 13.04
 - CentOS 6.4

Step 1. Installing the required dependencies

Using apt-get with latest Ubuntu 13.04:
Code:
sudo apt-get install -y build-essential m4 libssl-dev libdb++-dev libboost-all-dev libminiupnpc-dev

The 'sudo' command requires you to type the password for the current user. If you don't have sudo working, you need to manually switch to root with 'su' before running those commands.

Warning: If you have installed a specific version such as libdb5.3++-dev before, then don't install the meta-package libdb++-dev which may pull a different version.

Alternative for CentOS users:
Code:
su -c 'yum install gcc-c++ m4 openssl-devel db4-devel boost-devel'

Step 2. Compiling GMP

Latest version supports all the new CPUs.

Code:
cd
rm -rf gmp-5.1.2.tar.bz2 gmp-5.1.2
wget http://mirrors.kernel.org/gnu/gmp/gmp-5.1.2.tar.bz2
tar xjvf gmp-5.1.2.tar.bz2
cd gmp-5.1.2
./configure --enable-cxx
make
sudo make install

The configure script will attempt to automatically detect the host CPU and enable the best optimizations for it.

Step 2b. Compiling OpenSSL (for CentOS and Fedora users)

This step is only required if you're using CentOS. Red Hat has removed support for elliptic curve cryptography from the OpenSSL it supplies.

Code:
cd
rm -rf openssl-1.0.1e.tar.gz openssl-1.0.1e
wget ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/openssl-1.0.1e.tar.gz
tar xzvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config shared --prefix=/usr/local --libdir=lib
make
sudo make install

Step 2c. Compiling miniupnpc (for CentOS users)

Code:
cd
rm -rf miniupnpc-1.6.20120509.tar.gz
wget http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.20120509.tar.gz
tar xzvf miniupnpc-1.6.20120509.tar.gz
cd miniupnpc-1.6.20120509
make
sudo INSTALLPREFIX=/usr/local make install

Step 3. Compiling primecoind

Code:
cd
rm -rf primecoin-0.1.2-hp12.tar.bz2 primecoin-0.1.2-hp12
wget http://sourceforge.net/projects/primecoin-hp/files/0.1.2-hp12/primecoin-0.1.2-hp12.tar.bz2/download -O primecoin-0.1.2-hp12.tar.bz2
tar xjvf primecoin-0.1.2-hp12.tar.bz2
cd primecoin-0.1.2-hp12/src
cp makefile.unix makefile.my
sed -i -e 's/$(OPENSSL_INCLUDE_PATH))/$(OPENSSL_INCLUDE_PATH) \/usr\/local\/include)/' makefile.my
sed -i -e 's/$(OPENSSL_LIB_PATH))/$(OPENSSL_LIB_PATH) \/usr\/local\/lib)/' makefile.my
sed -i -e 's/$(LDHARDENING) $(LDFLAGS)/$(LDHARDENING) -Wl,-rpath,\/usr\/local\/lib $(LDFLAGS)/' makefile.my
make -f makefile.my
strip primecoind
sudo cp -f primecoind /usr/local/bin/

The last line will install the primecoind binary to /usr/local/bin.

CentOS users: Use the following 'make' command instead:
Code:
make -f makefile.my BOOST_LIB_SUFFIX=-mt

Step 4. Configuration

Create a configuration file:

Code:
cd
mkdir -p .primecoin
echo 'server=1
gen=1
rpcallowip=127.0.0.1
rpcuser=primecoinrpc
rpcpassword=SOME_SECURE_PASSWORD
sievesize=1000000' > .primecoin/primecoin.conf
sed -i -e "s/SOME_SECURE_PASSWORD/`< /dev/urandom tr -cd '[:alnum:]' | head -c32`/" .primecoin/primecoin.conf

You may optinally customize the configuration file. The last line puts a random password in the configuration file automatically, so you don't need to change anything if you're only sending RPC commands from localhost.

Type these commands to create an auto-restart script:

Code:
cd
echo '#!/bin/bash
export PATH="/usr/local/bin:$PATH"
killall --older-than 10s -q run-primecoind primecoind
function background_loop
        while :; do
                primecoind >/dev/null 2>&1
                sleep 1
        done
background_loop &' > run-primecoind
chmod +x run-primecoind

CentOS users may want to remove the 'killall' command from this script because the version that comes with CentOS does not support the --older-than option.

And for convenience, create a stopping script:

Code:
cd
echo '#!/bin/bash
killall -q run-primecoind
primecoind stop' > stop-primecoind
chmod +x stop-primecoind

Step 5. Starting mining

Simply type the following to start mining:
Code:
./run-primecoind

It will take a while for it to sync up with the network. The script will continue running in the background, automatically restarting primecoind if it crashes.

Step 6. Monitoring the progress

Checking that the primecoind process is runnning:
Code:
ps xuf |grep primecoind

RPC commands can be sent to the daemon like this:
Code:
primecoind getprimespersec
primecoind listtransactions
primecoind getinfo
primecoind getmininginfo
primecoind getdifficulty

Any combination of these can be used with the 'watch' command like this:
Code:
watch 'primecoind getinfo && primecoind listtransactions'

Press Ctrl + C to terminate the watch command.

You can also look at the output in debug.log:
Code:
grep primemeter ~/.primecoin/debug.log

If you want to see those in real-time, try this:
Code:
tail -f ~/.primecoin/debug.log |grep primemeter

Step 7. Stopping mining

Run the stop script:
Code:
./stop-primecoind
bidji29
Sr. Member
****
Offline Offline

Activity: 392
Merit: 250


View Profile
July 19, 2013, 03:08:58 PM
 #2

Thanks a lot !

You kept the 1M sievesize? I thought the 2M was better

http://www.freebieservers.com/  100% FREE GAME SERVERS
mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 03:13:45 PM
 #3

Thanks a lot !

You kept the 1M sievesize? I thought the 2M was better

It's there so that people can change it if they want.
eCoinomist
Member
**
Offline Offline

Activity: 112
Merit: 10


Independent Analyst


View Profile WWW
July 19, 2013, 03:16:21 PM
 #4

Thanks for a complete guide!

DigitalMan
Newbie
*
Offline Offline

Activity: 50
Merit: 0



View Profile
July 19, 2013, 03:16:34 PM
 #5

Is linux better for mining or should i keep my system on Windows 7?
mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 03:19:38 PM
 #6

Is linux better for mining or should i keep my system on Windows 7?

I think at least my 64-bit Windows build should be nearly as fast for all practical purposes.
cryptohunter
Legendary
*
Offline Offline

Activity: 2100
Merit: 1167

MY RED TRUST LEFT BY SCUMBAGS - READ MY SIG


View Profile
July 19, 2013, 03:21:54 PM
 #7

please can you make one for centos, i tried for 20 hours to get centos to work and i could not. thanks Smiley

mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 03:28:57 PM
 #8

Updated the guide a bit to add -march=native to CXXFLAGS. If you already used the guide, you only need to do step 3 again to optimize for host CPU.
eCoinomist
Member
**
Offline Offline

Activity: 112
Merit: 10


Independent Analyst


View Profile WWW
July 19, 2013, 03:57:55 PM
 #9

Updated the guide a bit to add -march=native to CXXFLAGS. If you already used the guide, you only need to do step 3 again to optimize for host CPU.

Awesome, have sent you 13 XPM to thank for this guide. I will donate a lot more later on Wink
Transaction ID: e9e80fd0deab2878d2918e98d28291a04475044f6a64d35e0d95b5f1d8cc856b-000

cryptohunter
Legendary
*
Offline Offline

Activity: 2100
Merit: 1167

MY RED TRUST LEFT BY SCUMBAGS - READ MY SIG


View Profile
July 19, 2013, 04:00:42 PM
 #10

Updated the guide a bit to add -march=native to CXXFLAGS. If you already used the guide, you only need to do step 3 again to optimize for host CPU.

1. can you modify these commands for Centos 6.3 64bit because most servers run this OS.

2. when you say create a bash script

cd
echo '#!/bin/bash
killall --older-than 10s -q run-primecoind primecoind
function background_loop
        while :; do
                primecoind >/dev/null 2>&1
                sleep 1
        done
background_loop &' > run-primecoind
chmod +x run-primecoind


do i type these commands into putty or do i put that all in a text file, call it something, upload to the server and then somehow run this?

thanks

gateway
Hero Member
*****
Offline Offline

Activity: 552
Merit: 500


View Profile
July 19, 2013, 04:02:35 PM
 #11

Do you recommend compiling gmp? Is their a list of supported CPUs ?
blastbob
Hero Member
*****
Offline Offline

Activity: 602
Merit: 500



View Profile
July 19, 2013, 04:05:06 PM
 #12

Sent you a 1BTC for good community work!

bca82b59aa139da4bdb1127257431f282fd924b540a0566d9adfe3eb0af3bc76

Bitrated user: blastbob.
mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 04:05:57 PM
 #13

1. can you modify these commands for Centos 6.3 64bit because most servers run this OS.

I think you only need to pull different dependencies but I'm going to check that.

2. when you say create a bash script

cd
echo '#!/bin/bash
killall --older-than 10s -q run-primecoind primecoind
function background_loop
        while :; do
                primecoind >/dev/null 2>&1
                sleep 1
        done
background_loop &' > run-primecoind
chmod +x run-primecoind


do i type these commands into putty or do i put that all in a text file, call it something, upload to the server and then somehow run this?

thanks

Those are the commands you should copy and paste into PuTTY.
eCoinomist
Member
**
Offline Offline

Activity: 112
Merit: 10


Independent Analyst


View Profile WWW
July 19, 2013, 04:11:19 PM
 #14

Woudn't it be better to:
Code:
cd ~
After step 2?

mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 04:14:35 PM
 #15

Woudn't it be better to:
Code:
cd ~
After step 2?

I added 'cd' to the start of steps 2 and 3 just to be safe.
mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 04:59:41 PM
 #16

1. can you modify these commands for Centos 6.3 64bit because most servers run this OS.

Ok, I tried compiling on CentOS, and I ran into some issues with OpenSSL. Apparently Red Hat went and removed support for elliptic curve cryptography...
Moebius327
Hero Member
*****
Offline Offline

Activity: 770
Merit: 500



View Profile
July 19, 2013, 05:42:44 PM
 #17

Thanks a lot !

You kept the 1M sievesize? I thought the 2M was better

Has someone made a comparison on testnet? Thanks.
gateway
Hero Member
*****
Offline Offline

Activity: 552
Merit: 500


View Profile
July 19, 2013, 05:44:55 PM
 #18

ran this guide on one of my new ubuntu 12.x servers and when running the command to start it i get these errors

gateway@a:~/work$ ./run-primecoind: line 1: 14844 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14847 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14850 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14853 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14856 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
cryptohunter
Legendary
*
Offline Offline

Activity: 2100
Merit: 1167

MY RED TRUST LEFT BY SCUMBAGS - READ MY SIG


View Profile
July 19, 2013, 05:46:12 PM
 #19

1. can you modify these commands for Centos 6.3 64bit because most servers run this OS.

Ok, I tried compiling on CentOS, and I ran into some issues with OpenSSL. Apparently Red Hat went and removed support for elliptic curve cryptography...

Hello,

Ok, thanks very much for trying to help. That is not good news, bloody red hat Smiley

mikaelh (OP)
Sr. Member
****
Offline Offline

Activity: 301
Merit: 250


View Profile
July 19, 2013, 05:51:18 PM
 #20

ran this guide on one of my new ubuntu 12.x servers and when running the command to start it i get these errors

gateway@a:~/work$ ./run-primecoind: line 1: 14844 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14847 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14850 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14853 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1
./run-primecoind: line 1: 14856 Illegal instruction     (core dumped) primecoind > /dev/null 2>&1

You can type killall run-primecoind to kill the script if you haven't already.

GCC is misdetecting your CPU and compiling wrong set of instructions into the binary. I removed the -march=native compiler flag from the instructions. I guess I'll have to leave it out if it's causing too many problems.
Pages: [1] 2 3 4 5 6 7 8  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!