Mining on non x86 platform

Hi,

Someone know if its possible to mine on power8 platform on Linux with little endian?

Thanks,

Greetz,
xfcash

2 Likes

I see no reason why not, if you’re able to compile Zcash there. Please tell us how you get on.

It doesn’t build out of the box on powerpc64-linux – had to make a few modifications to the dependency .mk files. Still not working right: during the zcashd configure, bdb headers aren’t found even though bdb seemed to build okay. Going to troubleshoot tomorrow.

1 Like

THX for the info. I’m currently on holiday will look later…, if ure able to compile I would be happy if you could share the info wit
h us…

Any news on this?

Tryed today by myself. Had to change some configfiles, had to install some other deb packages, changed some config files for compiling end ended up with:

[ 3200.882185] ------------[ cut here ]------------
[ 3200.882189] kernel BUG at /build/linux-PXWOzW/linux-4.8.0/mm/huge_memory.c:1230!
[ 3200.882199] Oops: Exception in kernel mode, sig: 5 [#1]
[ 3200.882201] SMP NR_CPUS=2048 NUMA pSeries
[ 3200.882204] Modules linked in: pseries_rng vmx_crypto ip_tables x_tables autofs4 osst st ibmvfc scsi_transport_fc ibmvscsi crc32c_vpmsum
[ 3200.882221] CPU: 6 PID: 9479 Comm: cc1plus Tainted: G B 4.8.0-22-generic #24-Ubuntu
[ 3200.882225] task: c0000037e57e1000 task.stack: c00000000bbb8000
[ 3200.882227] NIP: c0000000003003e4 LR: c000000000300670 CTR: 0000000000000000
[ 3200.882230] REGS: c00000000bbbb9c0 TRAP: 0700 Tainted: G B (4.8.0-22-generic)
[ 3200.882233] MSR: 8000000000029033 <SF,EE,ME,IR,DR,RI,LE> CR: 28224884 XER: 20000000
[ 3200.882242] CFAR: c000000000300674 SOFTE: 1
GPR00: c000000000300670 c00000000bbbbc40 c0000000014f6600 0000000000000001
GPR04: 0000000000000000 c000001bf59a4ed8 0000001bf4960000 0000000000000000
GPR08: c000001bf59a4ef8 0000000000000001 c000001bf59a4ef8 000000000000000d
GPR12: 0000000000008800 c00000000fb83600 000010000c511d80 0000000000000000
GPR16: 0000000000000000 000010000c511d60 0000000000000000 00000000110c5b38
GPR20: 00001000058f2990 0000000000000000 ffffffffffffffff 0000000000000000
GPR24: 000000000007ffff 8e21007e3f0000c0 c00000000166e4e0 c000001be4c09858
GPR28: 8e21007e3f0000c0 000010000c000000 f00000000fdf8000 c00000000bbbbce0
[ 3200.882281] NIP [c0000000003003e4] do_huge_pmd_numa_page+0x374/0x680
[ 3200.882285] LR [c000000000300670] do_huge_pmd_numa_page+0x600/0x680
[ 3200.882287] Call Trace:
[ 3200.882289] [c00000000bbbbc40] [c000000000300670] do_huge_pmd_numa_page+0x600/0x680 (unreliable)
[ 3200.882295] [c00000000bbbbcc0] [c0000000002ac044] handle_mm_fault+0x794/0x14d0
[ 3200.882299] [c00000000bbbbd80] [c000000000b948d0] do_page_fault+0x350/0x7d0
[ 3200.882303] [c00000000bbbbe30] [c000000000008948] handle_page_fault+0x10/0x30
[ 3200.882306] Instruction dump:
[ 3200.882308] 4e800020 60000000 60420000 2fb70000 409e019c e95e0020 7fc9f378 71470001
[ 3200.882315] 408202cc e9290000 7d2948f8 792907e0 <0b090000> e89b0048 7f83e378 4bd5fd19
[ 3200.882323] —[ end trace d665f666480131fa ]—

Sad ;-), but got at moment not much time for this …, so I will gonna mine with my i7 systems, and stock up after lunch if its profitabel …

I was able to compile this thing :-), had to change Linux Kernel (memory bug) to:

Linux xxx 4.8.0-040800rc8-generic #201609252231 SMP Mon Sep 26 04:08:06 UTC 2016 ppc64le ppc64le ppc64le GNU/Linux

and also change a lot of things ;-). After everything worked, bad news getting 0 H/s …:

Since starting this node 2 minutes, 38 seconds ago:
Since starting this node 5 minutes, 38 seconds ago:
Since starting this node 8 minutes, 32 seconds ago:

  • You have validated 0 transactions!
  • You have contributed 0.0000 Sol/s on average to the network solution rate.
  • You have completed 0 Equihash solver runs.

(You are running 64 mining threads.)
Architecture: ppc64le
Byte Order: Little Endian
CPU(s): 64
On-line CPU(s) list: 0-63
Thread(s) per core: 8
Core(s) per socket: 1
Socket(s): 8
NUMA node(s): 4
Model: 2.1 (pvr 004b 0201)
Model name: POWER8 (architected), altivec supported
Hypervisor vendor: pHyp
Virtualization type: para
L1d cache: 64K
L1i cache: 32K
L2 cache: 512K
L3 cache: 8192K
NUMA node0 CPU(s): 0-15
NUMA node1 CPU(s): 16-23
NUMA node2 CPU(s): 24-47
NUMA node3 CPU(s): 48-63

Too bad ;-), but anyways it was just a PoC ;-), and the compilling took my last nerve …

Scaleway gave me no love. it was Arch Linux on one of the scaleway C1 instances.

@xfcash
i’m stragling to build zcash on Power8 (192 Threads), can you help me please

1 Like

What’s your question? I was able to compile but the mining process gave me 0h/s. If you are not familiar with gcc & Co don’t touch it its a hard way to compile that thing under ppc…

Thanks for your reply !
i have purshased the Power8 server for $500 for mining, now it’s all lost, do you have any suggestion to make ROI from this server ?

Try ask here - CPUminer on POWER8
If you want I can try to help compile miner on power8

Is this attempt focused on mining with zcashd or one of the stand-alone miners?

I have failed with all the miners I’ve tried and I’m pretty experienced at getting software to run on ARM and on Power8. Some have mentioned SSE as the cultprit and I think they may be right. However I do not knwo how to pull the sse optomizations from the code. Also, zogminer builds some assembly, andI think that ARM assembly and x86 assembly are not the same thing.

Unhelpful post, I know, but that’s where I am at.

sorry for self-advertising, GitHub - mtve/yazecminer: yet another ZEC miner works on sparc, and i’ll be happy to help with making it run on other platforms.

hi, mtve
could you send step-byspet instruction, please? newbie in unix platform
I`ve Sparc T5-1 with Solaris 11

  1. installed gcc - - - pkg install gcc
  2. ./configure CFLAGS=“-std=gnu99”
  3. root@berdb01:~/cpuminer-2.2.3# make
    make all-recursive
    Making all in compat
    gcc -DHAVE_CONFIG_H -I. -pthread -fno-strict-aliasing -std=gnu99 -MT minerd-cpu-miner.o -MD -MP -MF .deps/minerd-cpu-miner.Tpo -c -o minerd-cpu-miner.o test -f 'cpu-miner.c' || echo './'cpu-miner.c
    cpu-miner.c:35:21: fatal error: jansson.h: No such file or directory
    #include <jansson.h>
    ^
    compilation terminated.
    *** Error code 1
    make: Fatal error: Command failed for target minerd-cpu-miner.o' Current working directory /root/cpuminer-2.2.3 *** Error code 1 The following command caused the error: fail= failcom='exit 1'; \ for f in x $MAKEFLAGS; do \ case $f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=echo all-recursive | sed s/-recursive//; \ list='compat'; for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ make "$target-am" || exit 1; \ fi; test -z "$fail" make: Fatal error: Command failed for target all-recursive’
    Current working directory /root/cpuminer-2.2.3
    *** Error code 1
    make: Fatal error: Command failed for target `all’
    root@berdb01:~/cpuminer-2.2.3# wchich gcc
    -bash: wchich: command not found
    root@berdb01:~/cpuminer-2.2.3# which gcc
    /usr/bin/gcc
    root@berdb01:~/cpuminer-2.2.3# gcc --version
    gcc (GCC) 4.8.2
    Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@berdb01:~/cpuminer-2.2.3#

thx !!!

Sorry frejus, cpuminer is not mine (and sorry for this pun). Moreover, GitHub - pooler/cpuminer: CPU miner for Litecoin and Bitcoin is for BTC and LTC, not for ZEC.

From your output the root problem seems to be “jansson.h: No such file or directory”. I guess ./configure somehow f*cked up with includes, it is so typical on solaris. You may try to add a path to jansson.h in your Makefile, something like changing “CFLAGS = .... -I.” to “-I. -Icompat/jansson” perhaps.

Other than that you may try my miner.

Hi mtve,

I came across this thread as I’m trying to mine using SPARC server.
Pardon me for my lack of knowledge on how to create the binary, I tried to find any guide on your github but I can’t find any.
Below command I ran the output. It will be great if you can show me some guidance :slight_smile:

root@demo1:/tmp/yazecminer-master/c# ./Makefile
./Makefile: line 1: PROG: command not found
./Makefile: line 2: OBJ: command not found
./Makefile: line 3: HDR: command not found
./Makefile: line 6: BLAKE: command not found
./Makefile: line 7: BLAKE: command not found
./Makefile: line 7: OBJ: command not found
./Makefile: line 9: CC: command not found
./Makefile: line 10: CFLAGS: command not found
./Makefile: line 14: PROG: command not found
./Makefile: line 14: OBJ: command not found
./Makefile: line 15: CC: command not found
./Makefile: line 15: LDFLAGS: command not found
./Makefile: line 15: PROG: command not found
./Makefile: line 15: OBJ: command not found
./Makefile: line 15: -o: command not found
./Makefile: line 17: OBJ: command not found
./Makefile: line 17: HDR: command not found
./Makefile: line 19: clean:: command not found
./Makefile: line 20: PROG: command not found
./Makefile: line 20: OBJ: command not found

you need to just run
make

also, for SPARC you need to comment line
BLAKE=sse
and uncomment lines
BLAKE=ref
LDFLAGS = -static
LDFLAGS += -lsocket -lnsl
in Makefile

Hi mtve,

Thanks for the hint, i tried it and giving me below error.

root@demo1:/tmp/yazecminer-master/c# make
gcc -march=native -W -Wall -O3 -g -I. -c jsmn/jsmn.c
gcc: error: unrecognized command line option ‘-march=native’
*** Error code 1
make: Fatal error: Command failed for target `jsmn/jsmn.o’

Makefile entry:
root@demo1:/tmp/yazecminer-master/c# cat Makefile
PROG = yazecminer
OBJ = jsmn/jsmn.o sha256/sha256.o equihash.o mainer.o
HDR = blake2b.h sha256/sha256.h equihash.h

BLAKE = ref
#BLAKE = sse
OBJ += blake2b-$(BLAKE)/blake2b.o

CC = gcc
CFLAGS = -march=native -W -Wall -O3 -g -I.
LDFLAGS = -static
LDFLAGS += -lsocket -lnsl

(PROG): (OBJ)
(CC) (LDFLAGS) -o (PROG) (OBJ)

(OBJ): (HDR)

clean:
rm -f (PROG) (OBJ)

it seems gcc is too old, remove -march=native part, so the line with CFLAGS will look like
CFLAGS = -W -Wall -O3 -g -I.