JayDDee / cpuminer-opt

Optimized multi algo CPU miner
Other
774 stars 545 forks source link

Debian 8 Build - Latest #84

Closed djneely closed 6 years ago

djneely commented 6 years ago

I've got cpuminer-opt up and running on several Debian 8 boxes without issue. Stood them all up a month (or more) ago now. However, as of tonight I was trying to build it on another server of mine and I'm seeing the following errors. Is there something that is no longer supported now on a D8 box or missing a package or something? I installed all the primary packages I had to for the other builds: curl, libssl, gmp, etc. Not sure what's going on with this one.

Thanks. Great work on this.

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) { ^ mv -f algo/argon2/ar2/.deps/cpuminer-cores.Tpo algo/argon2/ar2/.deps/cpuminer-cores.Po gcc -std=gnu99 -DHAVE_CONFIG_H -I. -Iyes/include -I/home/derek/usr/include -fno-strict-aliasing -I./compat/jansson -I. -Iyes/include -I/home/derek/usr/include -Wno-pointer-sign -Wno-pointer-to-int-cast -O3 -march=native -Wall -Iyes/include -I/home/derek/usr/include -MT algo/argon2/ar2/cpuminer-blake2b.o -MD -MP -MF algo/argon2/ar2/.deps/cpuminer-blake2b.Tpo -c -o algo/argon2/ar2/cpuminer-blake2b.o test -f 'algo/argon2/ar2/blake2b.c' || echo './'algo/argon2/ar2/blake2b.c mv -f algo/argon2/ar2/.deps/cpuminer-blake2b.Tpo algo/argon2/ar2/.deps/cpuminer-blake2b.Po gcc -std=gnu99 -DHAVE_CONFIG_H -I. -Iyes/include -I/home/derek/usr/include -fno-strict-aliasing -I./compat/jansson -I. -Iyes/include -I/home/derek/usr/include -Wno-pointer-sign -Wno-pointer-to-int-cast -O3 -march=native -Wall -Iyes/include -I/home/derek/usr/include -MT algo/blake/cpuminer-sph_blake.o -MD -MP -MF algo/blake/.deps/cpuminer-sph_blake.Tpo -c -o algo/blake/cpuminer-sph_blake.o test -f 'algo/blake/sph_blake.c' || echo './'algo/blake/sph_blake.c mv -f crypto/.deps/cpuminer-c_skein.Tpo crypto/.deps/cpuminer-c_skein.Po gcc -std=gnu99 -DHAVE_CONFIG_H -I. -Iyes/include -I/home/derek/usr/include -fno-strict-aliasing -I./compat/jansson -I. -Iyes/include -I/home/derek/usr/include -Wno-pointer-sign -Wno-pointer-to-int-cast -O3 -march=native -Wall -Iyes/include -I/home/derek/usr/include -MT algo/blake/cpuminer-blake-hash-4way.o -MD -MP -MF algo/blake/.deps/cpuminer-blake-hash-4way.Tpo -c -o algo/blake/cpuminer-blake-hash-4way.o test -f 'algo/blake/blake-hash-4way.c' || echo './'algo/blake/blake-hash-4way.c In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm_brotr_128’: ./avxdefs.h:445:3: warning: implicit declaration of function ‘_mm_bsrli_si128’ [-Wimplicit-function-declaration] return _mm_or_si128( _mm_bsrli_si128( v, c ), _mm_bslli_si128( v, 16-(c) ) );} ^ ./avxdefs.h:445:3: warning: implicit declaration of function ‘_mm_bslli_si128’ [-Wimplicit-function-declaration] ./avxdefs.h:445:10: error: incompatible type for argument 1 of ‘_mm_or_si128’ return _mm_or_si128( _mm_bsrli_si128( v, c ), _mm_bslli_si128( v, 16-(c) ) );} ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xmmintrin.h:1258:0, from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:29, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/emmintrin.h:1260:1: note: expected ‘m128i’ but argument is of type ‘int’ _mm_or_si128 (m128i A, m128i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:445:10: error: incompatible type for argument 2 of ‘_mm_or_si128’ return _mm_or_si128( _mm_bsrli_si128( v, c ), _mm_bslli_si128( v, 16-(c) ) );} ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xmmintrin.h:1258:0, from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:29, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/emmintrin.h:1260:1: note: expected ‘m128i’ but argument is of type ‘int’ _mm_or_si128 (m128i A, m128i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm_brotl_128’: ./avxdefs.h:449:10: error: incompatible type for argument 1 of ‘_mm_or_si128’ return _mm_or_si128( _mm_bslli_si128( v, c ), _mm_bsrli_si128( v, 16-(c) ) ); ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xmmintrin.h:1258:0, from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:29, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/emmintrin.h:1260:1: note: expected ‘m128i’ but argument is of type ‘int’ _mm_or_si128 (m128i A, m128i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:449:10: error: incompatible type for argument 2 of ‘_mm_or_si128’ return _mm_or_si128( _mm_bslli_si128( v, c ), _mm_bsrli_si128( v, 16-(c) ) ); ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xmmintrin.h:1258:0, from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:29, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/emmintrin.h:1260:1: note: expected ‘m128i’ but argument is of type ‘int’ _mm_or_si128 (m128i A, m128i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm256_brotr_256’: ./avxdefs.h:955:1: warning: implicit declaration of function ‘_mm256_bsrli_epi128’ [-Wimplicit-function-declaration] { return _mm256_or_si256( _mm256_bsrli_epi128( v, c ), ^ ./avxdefs.h:956:27: warning: implicit declaration of function ‘_mm256_bslli_epi128’ [-Wimplicit-function-declaration] mm256_swap_128( _mm256_bslli_epi128( v, 16-(c) ) ) ); ^ ./avxdefs.h:934:34: error: incompatible type for argument 1 of ‘_mm256_permute4x64_epi64’

define mm256_swap_128( v ) _mm256_permute4x64_epi64( v, 0x4e )

^ ./avxdefs.h:956:27: note: in expansion of macro ‘mm256_swap_128’ mm256_swap_128( _mm256_bslli_epi128( v, 16-(c) ) ) ); ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:1053:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_permute4x64_epi64 (m256i X, const int __M) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:955:10: error: incompatible type for argument 1 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bsrli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm256_brotl_256’: ./avxdefs.h:934:34: error: incompatible type for argument 1 of ‘_mm256_permute4x64_epi64’

define mm256_swap_128( v ) _mm256_permute4x64_epi64( v, 0x4e )

^ ./avxdefs.h:961:27: note: in expansion of macro ‘mm256_swap_128’ mm256_swap_128( _mm256_bsrli_epi128( v, 16-(c) ) ) ); ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:1053:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_permute4x64_epi64 (m256i X, const int __M) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:960:10: error: incompatible type for argument 1 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bslli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm256_brotr_128’: ./avxdefs.h:966:10: error: incompatible type for argument 1 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bsrli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:966:10: error: incompatible type for argument 2 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bsrli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h: In function ‘mm256_brotl_128’: ./avxdefs.h:971:10: error: incompatible type for argument 1 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bslli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ In file included from algo/blake/blake-hash-4way.h:48:0, from algo/blake/blake-hash-4way.c:39: ./avxdefs.h:971:10: error: incompatible type for argument 2 of ‘_mm256_or_si256’ { return _mm256_or_si256( _mm256_bslli_epi128( v, c ), ^ In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/immintrin.h:43:0, from ./avxdefs.h:38, from algo/blake/blake-hash-4way.h:48, from algo/blake/blake-hash-4way.c:39: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/avx2intrin.h:577:1: note: expected ‘m256i’ but argument is of type ‘int’ _mm256_or_si256 (m256i A, m256i B) ^ Makefile:2413: recipe for target 'algo/blake/cpuminer-blake-hash-4way.o' failed make[2]: [algo/blake/cpuminer-blake-hash-4way.o] Error 1 make[2]: Waiting for unfinished jobs.... mv -f algo/argon2/ar2/.deps/cpuminer-opt.Tpo algo/argon2/ar2/.deps/cpuminer-opt.Po mv -f algo/argon2/ar2/.deps/cpuminer-ar2-scrypt-jane.Tpo algo/argon2/ar2/.deps/cpuminer-ar2-scrypt-jane.Po mv -f algo/blake/.deps/cpuminer-sph_blake.Tpo algo/blake/.deps/cpuminer-sph_blake.Po make[2]: Leaving directory '/home/derek/cpuminer-opt' Makefile:5194: recipe for target 'all-recursive' failed make[1]: [all-recursive] Error 1 make[1]: Leaving directory '/home/derek/cpuminer-opt' Makefile:838: recipe for target 'all' failed make: [all] Error 2 strip: 'cpuminer': No such file

JayDDee commented 6 years ago

From the errors it can't find the Intel intrinsic definitions which suggests a missing package. I don't know the package name but I would expect it to be included with the compiler.

What's diffreent between the systems that work and the one that doesn't Can you still compile on those other systems? That should confirm if it's an issue with that one system.

If you still have problems please provide your CPU model and which cpuminer versions work and which don't. I presume your using build.sh, otherwise show your commands.

djneely commented 6 years ago

Thanks for getting back. So, I hopped on one of the systems that I have it currently running on (mining Monero). Did a new checkout to a temp directory and tried to build. Using build.sh as I've done on all. And I'm seeing the same error as above. Both of these boxes are updated Debian 8 boxes running on GCP (cpu info below). I jumped on another VM running through virtual box and same issue as above as well.

To test further on the systems that I do have them working on I copied the checkout that compiled previously for me and did another build.sh and they build the binary fine.

I jumped onto a debian-9 Virtualbox VM I had just setup this past week and ran through the tests and the most recent checkout built fine.

To get the other box going though I used one of the checkouts that is working and just rsync'ed it across and got it built.

$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU @ 2.20GHz stepping : 0 microcode : 0x1 cpu MHz : 2200.000 cache size : 56320 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch xsaveopt invpcid_single fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap bogomips : 4400.00 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:

djneely commented 6 years ago

As far as versions that work/don't:

Debian 8: -- Work: 3.7.9 and 3.8.0 -- Errors: 3.8.1.1

Debian 9: -- Work: 3.8.0 and 3.8.1.1

JayDDee commented 6 years ago

The specific compile errors are related to a set of SIMD byte shift intrinsics like _mm_bsrli_si128. They were introduced in cpuminer-opt-3.8.1. That explains the cpuminer connection.

But why does it compile on Deb9 but not Deb8? It must be something related to your Deb8 configuration. It seems odd that only some intrinsics are missing and the missing ones span SSE2 to AVX2. That doesn't fit with any packaging scheme. The packages would be divided by SSE2, AVX, AVX2 etc, you're missing parts of each. It doesn't make any sense which leads me to believe your Deb8 systems are messed up rather than simply missing a package.

I have no problems using Ubuntu 14.04 or 16.04 and you have no problems with Deb9. A problem with Deb8 seems unlikely (you say you have it up to date and a bug like this should have been fixed long ago) so it must be your specific setup. If all your systems were cloned from a corrupt build it would explain why all your Deb8 systems are affected.

Your CPU looks fine, it supports everything up to AVX2.

JayDDee commented 6 years ago

In the asbsence of further info it's concluded the issue is not with cpuminer-opt.

derekneely commented 6 years ago

Sounds good JayDDee. I've tried numerous Debian 8 installs on VMs with all the same issue. But no big deal I've already started replacing them with D9 installs.