Pages:
Author

Topic: [ANN]: cpuminer-opt v3.8.8.1, open source optimized multi-algo CPU miner - page 67. (Read 444040 times)

newbie
Activity: 84
Merit: 0
I'm taking a look at this now but I'm trying to figure out exactly what you have tried to do that is different than the other CPU miners out there looks like you might be trying to go into using it for some different algorithms and I'm not sure if that's even possible or worth the time that you are putting into it, or the time that others would put into using it.  We spend a lot of time beating the dead horses here and that is not getting anyone anywhere.


well if you wonder what is different in his optimized version
the hash rate increases 20-30% at least in my case
for lot of algos, even for the new one tribus

That in itself is a triumph imho and for sure has greatly aided small miners who can only cpu mine or having a bunch of idle cpus
(even if not so profitable, maybe because people wish to join crypto party too? Smiley )


legendary
Activity: 2954
Merit: 1159
Leading Crypto Sports Betting & Casino Platform
I'm taking a look at this now but I'm trying to figure out exactly what you have tried to do that is different than the other CPU miners out there looks like you might be trying to go into using it for some different algorithms and I'm not sure if that's even possible or worth the time that you are putting into it, or the time that others would put into using it.  We spend a lot of time beating the dead horses here and that is not getting anyone anywhere.
full member
Activity: 154
Merit: 100
Could you tell me a question, if I use centos6.3 successfully compiled, will generate a minerd file, and then I in other versions of the same machine on centos (without relying on) can run normally?
legendary
Activity: 1470
Merit: 1114
It's not so trivial anymore.

It might be worthwhile to focus the problem a little more. I suggest trying to compile with a lesser arch
like core2 to see if you can, then try to other arches until you identify the one that fails.

The problem seems to be with the compile environment but it could also be your CPU. If it's an AMD it
adds another dimension because their implementation of some features is incompatible with Intel.
The RELEASE_NOTES have some tips.

Won't help, he needs to update binutils. Even if he uses -march=core2 it will still emit AVX2 instructions and old GNU assembler will break the compilation -- the file responsible is algo/argon2/ar2/sj/scrypt-jane-mix_salsa64-avx2.h, it will emit that instruction no matter what -march compiler option is provided.

You can easily replicate that problem yourself with installing gcc 4.8 and binutils 2.20 (which doesn't support avx2) in a chroot, container or virtual machine.

Interesting. It seems you're right but only because the compiler was upgraded, otherwise the AVX2 code would have been skipped:

Code:
        #if (COMPILER_GCC >= 40700)
                #define X86_64ASM_AVX2

I agree the way forward would be to upgrade all of gcc's dependencies: rpm -q --requires gcc
member
Activity: 83
Merit: 10
It's not so trivial anymore.

It might be worthwhile to focus the problem a little more. I suggest trying to compile with a lesser arch
like core2 to see if you can, then try to other arches until you identify the one that fails.

The problem seems to be with the compile environment but it could also be your CPU. If it's an AMD it
adds another dimension because their implementation of some features is incompatible with Intel.
The RELEASE_NOTES have some tips.

Won't help, he needs to update binutils. Even if he uses -march=core2 it will still emit AVX2 instructions and old GNU assembler will break the compilation -- the file responsible is algo/argon2/ar2/sj/scrypt-jane-mix_salsa64-avx2.h, it will emit that instruction no matter what -march compiler option is provided.

You can easily replicate that problem yourself with installing gcc 4.8 and binutils 2.20 (which doesn't support avx2) in a chroot, container or virtual machine.
legendary
Activity: 1470
Merit: 1114
It's not so trivial anymore.

It might be worthwhile to focus the problem a little more. I suggest trying to compile with a lesser arch
like core2 to see if you can, then try to other arches until you identify the one that fails.

The problem seems to be with the compile environment but it could also be your CPU. If it's an AMD it
adds another dimension because their implementation of some features is incompatible with Intel.
The RELEASE_NOTES have some tips.
member
Activity: 83
Merit: 10
/tmp/cc5W6W1g.s:63: Error: no such instruction: `vpermq ymm1,ymm1,0x39'

GNU assembler is too old as well, unfortunately. It doesn't know what 'vpermq' is -- that's an AVX2 instruction.

Same goes for other instructions it doesn't know about.

GNU assembler is part of binutils. Try installing newer version of binutils.

I know for sure that binutils 2.25 supports it, but some earlier versions likely will too.
full member
Activity: 154
Merit: 100
[root@CC cpuminer-opt]# ./autogen.sh
[root@CC cpuminer-opt]# CFLAGS="-O3 -march=native -Wall" CXXFLAGS="$CFLAGS -std=gnu++11" ./configure --with-curl
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... -std=gnu99
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether gcc -std=gnu99 needs -traditional... no
checking whether gcc -std=gnu99 and cc understand -c and -o together... yes
checking dependency style of gcc -std=gnu99... gcc3
checking for ranlib... ranlib
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/endian.h usability... no
checking sys/endian.h presence... no
checking for sys/endian.h... no
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for sys/sysctl.h... yes
checking whether be32dec is declared... no
checking whether le32dec is declared... no
checking whether be32enc is declared... no
checking whether le32enc is declared... no
checking whether le16dec is declared... no
checking whether le16enc is declared... no
checking for working alloca.h... yes
checking for alloca... yes
checking for getopt_long... yes
checking whether we can compile AVX code... yes
checking whether we can compile XOP code... yes
checking whether we can compile AVX2 code... no
configure: WARNING: The assembler does not support the AVX2 instruction set.
checking for json_loads in -ljansson... no
checking for pthread_create in -lpthread... yes
checking whether __uint128_t is supported... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating compat/Makefile
config.status: creating compat/jansson/Makefile
config.status: creating cpuminer-config.h
config.status: cpuminer-config.h is unchanged
config.status: executing depfiles commands
[root@CC cpuminer-opt]# make
make  all-recursive
make[1]: Entering directory `/usr/cpuminer-opt'
Making all in compat
make[2]: Entering directory `/usr/cpuminer-opt/compat'
Making all in jansson
make[3]: Entering directory `/usr/cpuminer-opt/compat/jansson'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/usr/cpuminer-opt/compat/jansson'
make[3]: Entering directory `/usr/cpuminer-opt/compat'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/usr/cpuminer-opt/compat'
make[2]: Leaving directory `/usr/cpuminer-opt/compat'
make[2]: Entering directory `/usr/cpuminer-opt'
gcc -std=gnu99 -DHAVE_CONFIG_H -I.  -Iyes/include -fno-strict-aliasing -I./compat/jansson -I. -Iyes/include -Wno-pointer-sign -Wno-pointer-to-int-cast   -O3 -march=native -Wall  -Iyes/include -MT algo/argon2/ar2/cpuminer-ar2-scrypt-jane.o -MD -MP -MF algo/argon2/ar2/.deps/cpuminer-ar2-scrypt-jane.Tpo -c -o algo/argon2/ar2/cpuminer-ar2-scrypt-jane.o `test -f 'algo/argon2/ar2/ar2-scrypt-jane.c' || echo './'`algo/argon2/ar2/ar2-scrypt-jane.c
In file included from algo/argon2/ar2/sj/scrypt-jane-salsa64.h:12:0,
                 from algo/argon2/ar2/sj/scrypt-jane-romix.h:2,
                 from algo/argon2/ar2/ar2-scrypt-jane.c:19:
algo/argon2/ar2/sj/scrypt-jane-romix-basic.h:8:1: warning: ‘scrypt_romix_nop’ defined but not used [-Wunused-function]
 scrypt_romix_nop(scrypt_mix_word_t *blocks, size_t nblocks) {
 ^
/tmp/cc5W6W1g.s: Assembler messages:
/tmp/cc5W6W1g.s:21: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:22: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:23: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:24: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:30: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:31: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:32: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:33: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:37: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:38: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:39: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:40: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:48: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:49: Error: ambiguous operand size or operands invalid for `vpshufd'
/tmp/cc5W6W1g.s:50: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:51: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:52: Error: ambiguous operand size or operands invalid for `vpsrlq'
/tmp/cc5W6W1g.s:53: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:54: Error: ambiguous operand size or operands invalid for `vpsllq'
/tmp/cc5W6W1g.s:55: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:56: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:57: Error: ambiguous operand size or operands invalid for `vpsrlq'
/tmp/cc5W6W1g.s:58: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:59: Error: ambiguous operand size or operands invalid for `vpsllq'
/tmp/cc5W6W1g.s:60: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:61: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:62: Error: ambiguous operand size or operands invalid for `vpshufd'
/tmp/cc5W6W1g.s:63: Error: no such instruction: `vpermq ymm1,ymm1,0x39'
/tmp/cc5W6W1g.s:64: Error: no such instruction: `vpermq ymm10,ymm2,0x4e'
/tmp/cc5W6W1g.s:65: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:66: Error: no such instruction: `vpermq ymm3,ymm3,0x93'
/tmp/cc5W6W1g.s:67: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:68: Error: ambiguous operand size or operands invalid for `vpshufd'
/tmp/cc5W6W1g.s:69: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:70: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:71: Error: ambiguous operand size or operands invalid for `vpsrlq'
/tmp/cc5W6W1g.s:72: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:73: Error: ambiguous operand size or operands invalid for `vpsllq'
/tmp/cc5W6W1g.s:74: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:75: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:76: Error: ambiguous operand size or operands invalid for `vpsrlq'
/tmp/cc5W6W1g.s:77: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:78: Error: ambiguous operand size or operands invalid for `vpsllq'
/tmp/cc5W6W1g.s:79: Error: no such instruction: `vpermq ymm1,ymm1,0x93'
/tmp/cc5W6W1g.s:80: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:81: Error: no such instruction: `vpermq ymm2,ymm10,0x4e'
/tmp/cc5W6W1g.s:82: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:83: Error: ambiguous operand size or operands invalid for `vpshufd'
/tmp/cc5W6W1g.s:84: Error: no such instruction: `vpermq ymm3,ymm3,0x39'
/tmp/cc5W6W1g.s:85: Error: ambiguous operand size or operands invalid for `vpxor'
/tmp/cc5W6W1g.s:90: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:91: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:92: Error: ambiguous operand size or operands invalid for `vpaddq'
/tmp/cc5W6W1g.s:93: Error: ambiguous operand size or operands invalid for `vpaddq'
make[2]: *** [algo/argon2/ar2/cpuminer-ar2-scrypt-jane.o] Error 1
make[2]: Leaving directory `/usr/cpuminer-opt'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/cpuminer-opt'
make: *** [all] Error 2
[root@CC cpuminer-opt]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.8.2 (GCC)




member
Activity: 83
Merit: 10
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.

Is 4.4




You need 4.5 or newer.

Are installed GCC4.8, starting long wait... , thank you for your answer







make[2]: *** [algo/argon2/ar2/cpuminer-ar2-scrypt-jane.o] Error 1
make[2]: Leaving directory `/usr/cpuminer-opt'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/cpuminer-opt'
make: *** [all] Error 2

[root@CC cpuminer-opt]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.8.2 (GCC)
[root@CC cpuminer-opt]#  Cry







This is different error, and you didn't include it here, it's higher. You've pasted make output saying that there was an error above the pasted text.
full member
Activity: 154
Merit: 100
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.

Is 4.4




You need 4.5 or newer.

Are installed GCC4.8, starting long wait... , thank you for your answer







make[2]: *** [algo/argon2/ar2/cpuminer-ar2-scrypt-jane.o] Error 1
make[2]: Leaving directory `/usr/cpuminer-opt'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/cpuminer-opt'
make: *** [all] Error 2

[root@CC cpuminer-opt]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.8.2 (GCC)
[root@CC cpuminer-opt]#  Cry





full member
Activity: 154
Merit: 100
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.

Is 4.4




You need 4.5 or newer.

Are installed GCC4.8, starting long wait... , thank you for your answer



legendary
Activity: 1470
Merit: 1114
You can try moving the pragma directives outside the function to see if that works.
If it's trivial to support gcc4.4 I'll make the change in the next release.
member
Activity: 83
Merit: 10
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.

Is 4.4




You need 4.5 or newer.
full member
Activity: 154
Merit: 100
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.

Is 4.4


member
Activity: 83
Merit: 10
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686


Yes, you need to upgrade to newer gcc. Or ask joblo to support a compiler that's 9 years old.
full member
Activity: 154
Merit: 100
[root@CC ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686
member
Activity: 83
Merit: 10
Code:
algo-gate-api.c:215: error: #pragma GCC diagnostic not allowed inside functions
make[1]: *** [cpuminer-algo-gate-api.o] Error 1
make[1]: Leaving directory `/usr/cpuminer-opt'
make: *** [install-recursive] Error 1

You're likely using gcc 4.4. Use newer compiler.
full member
Activity: 154
Merit: 100
algo-gate-api.c:215: error: #pragma GCC diagnostic not allowed inside functions
make[1]: *** [cpuminer-algo-gate-api.o] Error 1
make[1]: Leaving directory `/usr/cpuminer-opt'
make: *** [install-recursive] Error 1
member
Activity: 228
Merit: 10

This particular one you quoted -- your compiler options did not enable SSSE3 support. Please use -march=native instead of -mtune=broadwell

Thank you! Adding -march=native helped.
member
Activity: 83
Merit: 10
Cannot compile 3.6.6 ):
Code:
x86_64-pc-linux-gnu-gcc -std=gnu99 -DHAVE_CONFIG_H -I.  -fno-strict-aliasing  -I.  -Wno-pointer-sign
 -Wno-pointer-to-int-cast   -O3 -mtune=broadwell -pipe  -c -o algo/groestl/aes_ni/cpuminer-ha
sh-groestl.o `test -f 'algo/groestl/aes_ni/hash-groestl.c' || echo './'`algo/groestl/aes_ni/hash-gro
estl.c
In file included from algo/echo/aes_ni/vperm.h:20:0,
                 from algo/echo/aes_ni/hash.c:21:
algo/echo/aes_ni/hash.c: In function ‘Compress’:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/tmmintrin.h:136:1: error: inlining failed in call to
always_inline ‘_mm_shuffle_epi8’: target specific option mismatch
 _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
 ^

... and many similar errors

This particular one you quoted -- your compiler options did not enable SSSE3 support. Please use -march=native instead of -mtune=broadwell
Pages:
Jump to: