fireice-uk / xmr-stak-cpu

Monero CPU miner
GNU General Public License v3.0
1.11k stars 478 forks source link

Xeon Phi/MIC support? #291

Open zebrax0r opened 7 years ago

zebrax0r commented 7 years ago

Hi there,

Would you consider adding Xeon Phi/MIC support? I have quite a few of these cards sitting around, as do a significant number of the community - and I thought it might be sensible to put them to use.

This is a project I found that is now unsupported, but did offer the capability:

https://github.com/kiyominer/cpuminer

Thank you for your consideration.

--

psychocrypt commented 7 years ago

PhI should be supported out of the box. It is a x86 cpu. If you are talking about the first gerneration phi please do not run it in offloading mode, run the program directly on the phi.

rquast commented 7 years ago

Unfortunately, it won't on the phi (5110p) as far as I can tell (different architecture). I tried compiling it, but ran into problems here:

-- The C compiler identification is Intel 17.0.0.20160721
-- The CXX compiler identification is Intel 17.0.0.20160721
-- Check for working C compiler: /opt/intel/bin/icc
-- Check for working C compiler: /opt/intel/bin/icc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /opt/intel/bin/icpc
-- Check for working CXX compiler: /opt/intel/bin/icpc -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/xmr-stak-cpu
Scanning dependencies of target xmr-stak-c
[  5%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_blake256.c.o
[ 11%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_groestl.c.o
[ 16%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_jh.c.o
[ 22%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_keccak.c.o
[ 27%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_skein.c.o
[ 33%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/soft_aes.c.o
/opt/xmr-stak-cpu/crypto/soft_aes.c(156): (col. 1) error #13393: Opcode unsupported on target architecture: movdqa
/opt/xmr-stak-cpu/crypto/soft_aes.c(156): (col. 1) error #13393: Opcode unsupported on target architecture: movdqa
/opt/xmr-stak-cpu/crypto/soft_aes.c(159): (col. 25) error #13393: Opcode unsupported on target architecture: pshufd
/opt/xmr-stak-cpu/crypto/soft_aes.c(160): (col. 25) error #13393: Opcode unsupported on target architecture: pshufd
/opt/xmr-stak-cpu/crypto/soft_aes.c(161): (col. 25) error #13393: Opcode unsupported on target architecture: pshufd
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: movd
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: movd
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: punpckldq
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: movd
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: movd
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: punpckldq
/opt/xmr-stak-cpu/crypto/soft_aes.c(163): (col. 16) error #13393: Opcode unsupported on target architecture: punpcklqdq
/opt/xmr-stak-cpu/crypto/soft_aes.c(169): (col. 9) error #13393: Opcode unsupported on target architecture: pxor
/opt/xmr-stak-cpu/crypto/soft_aes.c(169): (col. 9) error #13393: Opcode unsupported on target architecture: movdqa
/opt/xmr-stak-cpu/crypto/soft_aes.c(156): catastrophic error: Function contains unsupported data types or intrinsics on target architecture.

I also think only the new generation phis have AES hardware support, not the old generation.

I also ran to the exact same problem trying to compile xmrig too.

rquast commented 7 years ago

compiling with gcc rather than icc gives slightly better error info:

-- The C compiler identification is GNU 5.1.1
-- The CXX compiler identification is GNU 5.1.1
-- Check for working C compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc
-- Check for working C compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-g++
-- Check for working CXX compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/xmr-stak-cpu
Scanning dependencies of target xmr-stak-c
[  5%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_blake256.c.o
[ 11%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_groestl.c.o
[ 16%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_jh.c.o
[ 22%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_keccak.c.o
[ 27%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_skein.c.o
[ 33%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/soft_aes.c.o
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/xmr-stak-cpu/crypto/soft_aes.c: In function 'soft_aesenc':
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1286:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch
 _mm_xor_si128 (__m128i __A, __m128i __B)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:169:9: error: called from here
  return _mm_xor_si128(out, key);
         ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch
 _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:163:10: error: called from here
  __m128i out = _mm_set_epi32(
          ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch
 _mm_cvtsi128_si32 (__m128i __A)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:161:7: error: called from here
  x3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xFF));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch
 _mm_shuffle_epi32 (__m128i __A, const int __mask)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:161:7: error: called from here
  x3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xFF));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch
 _mm_cvtsi128_si32 (__m128i __A)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:160:7: error: called from here
  x2 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xAA));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch
 _mm_shuffle_epi32 (__m128i __A, const int __mask)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:160:7: error: called from here
  x2 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xAA));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch
 _mm_cvtsi128_si32 (__m128i __A)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:159:7: error: called from here
  x1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0x55));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch
 _mm_shuffle_epi32 (__m128i __A, const int __mask)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:159:7: error: called from here
  x1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0x55));
       ^
In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0,
                 from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31,
                 from /opt/xmr-stak-cpu/crypto/soft_aes.c:29:
/opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch
 _mm_cvtsi128_si32 (__m128i __A)
 ^
/opt/xmr-stak-cpu/crypto/soft_aes.c:158:7: error: called from here
  x0 = _mm_cvtsi128_si32(in);

Here's a sample of the instruction set capabilities from /proc/cpuinfo:

processor   : 239
vendor_id   : GenuineIntel
cpu family  : 11
model       : 1
model name  : 0b/01
stepping    : 3
cpu MHz     : 1052.630
cache size  : 512 KB
physical id : 0
siblings    : 240
core id     : 59
cpu cores   : 60
apicid      : 239
initial apicid  : 239
fpu     : yes
fpu_exception   : yes
cpuid level : 4
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic mtrr mca pat fxsr ht syscall nx lm nopl lahf_lm
bogomips    : 2112.47
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

As you can see it's missing both sse2 and aes instructions sets. It can't do the software encryption because of the missing sse2, and it can't do hardware because of the missing aes. Will look into alternatives for the missing things.

psychocrypt commented 7 years ago

This is the very old phi. The issue is coming from problems with the sse2 instructions. Somehow the inlining fails.

Am 01.10.2017 7:56 Vorm. schrieb "Roland Quast" notifications@github.com:

compiling with gcc rather than icc gives slightly better error info:

-- The C compiler identification is GNU 5.1.1 -- The CXX compiler identification is GNU 5.1.1 -- Check for working C compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc -- Check for working C compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-g++ -- Check for working CXX compiler: /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Configuring done -- Generating done -- Build files have been written to: /opt/xmr-stak-cpu Scanning dependencies of target xmr-stak-c [ 5%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_blake256.c.o [ 11%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_groestl.c.o [ 16%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_jh.c.o [ 22%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_keccak.c.o [ 27%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/c_skein.c.o [ 33%] Building C object CMakeFiles/xmr-stak-c.dir/crypto/soft_aes.c.o In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/xmr-stak-cpu/crypto/soft_aes.c: In function 'soft_aesenc': /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1286:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch _mm_xor_si128 (m128i A, m128i B) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:169:9: error: called from here return _mm_xor_si128(out, key); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:597:1: error: inlining failed in call to always_inline '_mm_set_epi32': target specific option mismatch _mm_set_epi32 (int q3, int q2, int q1, int q0) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:163:10: error: called from here m128i out = _mm_set_epi32( ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch _mm_cvtsi128_si32 (m128i A) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:161:7: error: called from here x3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xFF)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch _mm_shuffle_epi32 (m128i A, const int mask) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:161:7: error: called from here x3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xFF)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch _mm_cvtsi128_si32 (m128i A) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:160:7: error: called from here x2 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xAA)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch _mm_shuffle_epi32 (m128i A, const int mask) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:160:7: error: called from here x2 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0xAA)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch _mm_cvtsi128_si32 (m128i A) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:159:7: error: called from here x1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0x55)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:1415:1: error: inlining failed in call to always_inline '_mm_shuffle_epi32': target specific option mismatch _mm_shuffle_epi32 (m128i A, const int mask) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:159:7: error: called from here x1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(in, 0x55)); ^ In file included from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/xmmintrin.h:1249:0, from /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/x86intrin.h:31, from /opt/xmr-stak-cpu/crypto/soft_aes.c:29: /opt/mpss/3.8.2/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux/gcc/k1om-mpss-linux/5.1.1/include/emmintrin.h:219:1: error: inlining failed in call to always_inline '_mm_cvtsi128_si32': target specific option mismatch _mm_cvtsi128_si32 (m128i A) ^ /opt/xmr-stak-cpu/crypto/soft_aes.c:158:7: error: called from here x0 = _mm_cvtsi128_si32(in);

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/fireice-uk/xmr-stak-cpu/issues/291#issuecomment-333355720, or mute the thread https://github.com/notifications/unsubscribe-auth/AYsxtryyjgY16R3KKhBtovyAr9HZMhvgks5snymOgaJpZM4PA4Sl .

psychocrypt commented 7 years ago

Which OS do you running on the phi? It looks like the OS is not handling the phy correctly. IMO there are a lot of feature sets missing in cpuinfo. Do you use a virtual machine?

rquast commented 7 years ago

All xeon phis run the same distribution of linux which gets flashed onto it. You ssh into them to get that info and run things on them. The host PC is running CentOS 7.

I don't think it looks like it's missing what it should be. The phis seem pretty stripped down on their instruction sets - Here is my one (knights corner): https://ark.intel.com/products/71992/Intel-Xeon-Phi-Coprocessor-5110P-8GB-1_053-GHz-60-core

Here is a more recent knights bridge one: https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss

All phis as far as I can tell don't have SSE. The knights bridge ones have IMCI and the knights corner ones have AVX-512. Has been discussed here in more depth: https://software.intel.com/en-us/forums/intel-many-integrated-core/topic/477754

http://www.notebookreview.com/news/they-got-it-wrong-intel-defends-claims-of-xeon-phi-incompatibility/

Here's the key point from that article that explains the phi series and the issues:

Like Larrabee, Xeon Phi (developed under the codename Knight’s Corner) is built on the P5 microarchitecture, with many cores tied together by a high-speed interconnect. This core dates back to 1993. It had no vector or 64-bit support, so Intel had to do considerable modification to it, said James Reinders, director of parallel programming evangelism at Intel.

The BSN article complains that the Instruction Set Reference Manual for Xeon Phi lists the registers and instructions are not supported in the Knights Corner architecture, which includes MMX, SSE 1-4 and AVX, the latter of which was added with the Sandy Bridge generation of processors. All of these instructions were added to the x86 architecture after the P5 shipped.

Reinders acknowledges this, but says that since Intel had a core with no extensions to begin with, it added something newer and even more advanced than MMX, SSE and AVX. The old extensions are 64-bit to 256-bit vector units, but Xeon Phi has a 512-bit vector unit, the IMCI that is faster and more power efficient. Complaining about the lack of slower registers when you get a faster one is akin to buying a modern PC and wondering where’s the floppy drive, tape backup unit and VGA port.

And MMX, SSE and AVX were all graphics-related, which Intel deemed unnecessary. IMCI is designed for high-performance computing, with things like double precision performance, the size of key elements in design, and more on bandwidth and pipelining issues.

I'll have a look at seeing if I can port some of that code to make it work. Not sure if it's worth the time anyway without the AES-NI (knights bridge have this, not the knights corner ones).

rquast commented 7 years ago

To make it work with knights corner, would need to recode it to work with these instructions:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#=undefined&expand=206&techs=KNC&text=xor

That explains what the xeon phi patch code is in the https://github.com/kiyominer/cpuminer project. They recoded with the KNC instruction set.

psychocrypt commented 7 years ago

You could try it. For us this is no target hardware. Nobody owns this old phi and the nee Phi KNL is compatible to normal xeons therefore everything should work out of the box.

Am 01.10.2017 12:16 schrieb "Roland Quast" notifications@github.com:

To make it work with knights corner, would need to recode it to work with these instructions:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#=undefined& expand=206&techs=KNC&text=xor

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/fireice-uk/xmr-stak-cpu/issues/291#issuecomment-333366774, or mute the thread https://github.com/notifications/unsubscribe-auth/AYsxtnnQAKJP4dZzmaGqc3N3uOXSC9biks5sn2ZhgaJpZM4PA4Sl .

sgsdxzy commented 6 years ago

@rquast Are you familiar with programming for KNC? I have little knowledge regarding these. I have some old 3120A and 31S1P Xeon phi lying around (untested if still in working conditions, though), and it would be nice if they can be put to xmr mining. Possibly I can setup an environment for you to remotely login into a 3120A phi to do testing and debugging, if that is necessary.

kbuggenhout commented 6 years ago

KNC will never produce any good numbers, got it running with a total hashrate of less than 5H/s per core. tuning that will take a lot of work, as the KNC utilizes in order execution ( all code comes in serially and is processed serially, when it has to switch ( branch) it has to flush the complete pipeline, which takes between 750 and 800+ cycles plus another 500-600 to refill it, on a 1Ghz cpu that hurts a lot. the memory architecture is really not suited for this code. KNL however looks interesting, first test 20H/s per core, but you can not use the 4 hardware threads, so your limited to 70 odd cores to work with, again memory architecture is odd, and the way the cores are organised ( in a mesh) causes hard limits to the code. from a power to perf ratio, its not interesting KNL cpu utilizes 250W when running this code.

compared to a Xeon E5-26xx which runs 50-60H/s per core. my workstation does 1.8KH/s on cpu alone

one of the lab systems runs at 4.5KH/s with 4 K80 gpus ( 8 Kepler gpus) probably cant get mucg more out of those as they got 24G on board :) -> /8 = 3G per gpu

next up is experiments with KnightsHill or stratix10 FPGA

Exzaver commented 6 years ago

So there's no way to get a high h / s amount with the old x100 PHI's? Maybe the 5110 has certainly still unknown potenital? Would be awesome if somebody create a optimized PHI xmr miner for the first gen!

kbuggenhout commented 6 years ago

just concluded testing.

XeonPhi KNC does not have AES intrinsics XeonPhi KNL does not have AES intrinsics

I rewrote some of the code to use the wide vectors available, but sadly enough there is no performance increase.

the average per core performance is around 10H/s when using more than 1 core there are only 72 physical cores, and there is no L3 cache.

my best single core run, was around 23-24H/s once you use more than a few cores the hashrate per core goes down as well.

once you run around 100 cores performance decreased ( as in total performance)

the max I got out of a single KNL with 72 cores ( 288 cores arent usable for crypto) was around 200H/s

which equals around 3 xeon E5-2697v4 cores

or an old GTX460 :)

the power/perf balance is way too bad for XeonPhi.

even a normal single socket workstation with 20 cores will outperform it with 1/10th of the power.

there may be a way to try recode to use HBM instead of L3 cache.

L2 per core is tiny... compared to Xeon.

so basically not very plausible architecture for crypto

K,

Van: "Exzaver" notifications@github.com Aan: "fireice-uk/xmr-stak-cpu" xmr-stak-cpu@noreply.github.com Cc: "buggenhout" buggenhout.kris@telenet.be, "Comment" comment@noreply.github.com Verzonden: Zondag 14 januari 2018 17:44:26 Onderwerp: Re: [fireice-uk/xmr-stak-cpu] Xeon Phi/MIC support? (#291)

So there's no way to get a high h / s amount with the old x100 PHI's? Maybe the 5110 has certainly still unknown potenital? Would be awesome if somebody create a optimized PHI xmr miner for the first gen!

— You are receiving this because you commented. Reply to this email directly, [ https://github.com/fireice-uk/xmr-stak-cpu/issues/291#issuecomment-357524479 | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/AdD2Ey-Cz0nEVQuOwADVmyHmT6Pqg2lDks5tKi7qgaJpZM4PA4Sl | mute the thread ] .

coinstash commented 6 years ago

https://lukminer.org/2018/02/01/finally-asrock-rack-confirms-2800h-s-on-phi-7210-and-3000h-s-on-phi-7250/

psychocrypt commented 6 years ago

Xeon Phi (native not offloading) is x86 and is therefore supported by default but we have not tuned specific for this device.

coinstash notifications@github.com schrieb am Do., 8. März 2018, 12:02:

https://lukminer.org/2018/02/01/finally-asrock-rack-confirms-2800h-s-on-phi-7210-and-3000h-s-on-phi-7250/

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/fireice-uk/xmr-stak-cpu/issues/291#issuecomment-371455158, or mute the thread https://github.com/notifications/unsubscribe-auth/AYsxtuU_ZFNZonmHKEJjG9_bbwZ4vMkuks5tcQ-pgaJpZM4PA4Sl .

N0valine commented 6 years ago

Any plans to support it in the future? I recently got a 7220A that does ~3200H/s on Cryptonight using lukminer. I have seen many start to pop up on ebay lately. I would swap over to XMR-Stak immediately if it could output similar performance.

psychocrypt commented 6 years ago

This is x86 and should be supported. Do you tried it?

N0valine commented 6 years ago

Yea I can't seem to get it to run properly. I have MPSS4.4 running lukminer without any issue but once I run XMR-Stak the card doesn't get detected even though it shows up properly running lshw.

psychocrypt commented 6 years ago

you need to run it on the card in native mode. Ovloading is not supported.

kbuggenhout commented 6 years ago

the lukminer really works well, for the KNL and KNH models only run it in native mode, in KNC you can run it in offload, but the yield on those is not very high (like running an old Nvidia or AMD card, 300-400H/s per KNC) the KNL's reach +3KH/s the KNH's I tested run closer to 4KH/s

dont add support for it in xmr, as its not worth it, XeonPhi is a dead product and abandoned by Intel.

at the moment power/performance is for the forked cryptonights on AMD Vega cards, and asic for the vanilla cryptonight. ( cant beat 3KH/s in 60W with a KNL/KNH which chews 220-250W on average)

N0valine commented 6 years ago

Yea I agree it works well, but the fee is too high IMO (if it was at 2% I'd be contempt). I installed one of his "Luksticks" and added GNOME Des + compiled XMR-Stak. I was trying to get it to work while running offload but it wasn't picking it up. I have heard multiple people say XMR-Stak gets higher hashrate (I've yet to see proof). I'm having trouble running it natively but once I figure it out I will report back what I find.

Those Xeon Phis are becoming quite popular lately with the 2U and 4U boxes + the x200 cards starting to pop up. Always good to have multiple miners to use opposed to one single one (specially since LUK himself is the one selling half the phi cards).

N0valine commented 6 years ago

Alright so I managed to run XMR-Stak natively on the 7220A via ssh. Everything compiled fine, got all the libraries pointing properly, the exe launched fine and creates the (cpu.txt, pools.txt, config.txt) appropriate text files but I'm getting a SOCKET ERROR.

root@mic0:/lib# ./xmr-stak

xmr-stak 2.4.5 b3f79de

Brought to you by fireice_uk and psychocrypt under GPLv3. Based on CPU mining code by wolf9466 (heavily optimized by fireice_uk).

Configurable dev donation level is set to 2.0%

You can use following keys to display reports: 'h' - hashrate 'r' - results 'c' - connection

[2018-06-19 09:04:26] : Mining coin: cryptonight_heavy [2018-06-19 09:04:26] : Starting 1x thread, affinity: 0. [2018-06-19 09:04:31] : hwloc: memory pinned [2018-06-19 09:04:31] : Fast-connecting to loki.ingest.cryptoknight.cc:7732 pool ... [2018-06-19 09:04:31] : SOCKET ERROR - [loki.ingest.cryptoknight.cc:7732] CONNECT error: GetAddrInfo: Temporary failure in name resolution [2018-06-19 09:05:01] : Fast-connecting to loki.ingest.cryptoknight.cc:7732 pool ... [2018-06-19 09:05:01] : SOCKET ERROR - [loki.ingest.cryptoknight.cc:7732] CONNECT error: GetAddrInfo: Temporary failure in name resolution CONNECTION REPORT Pool address : Connected since : Pool ping time : (n/a)

Network error log: | Date | Error text | | 2018-06-19 09:09:12 | [loki.ingest.cryptoknight.cc:7732] CONNECT error: GetA | HASHRATE REPORT - CPU | ID | 10s | 60s | 15m | | 0 | (na) | (na) | (na) | Totals (CPU): 0.0 0.0 0.0 H/s

Totals (ALL): 0.0 0.0 0.0 H/s Highest: 0.0 H/s

I left only 1 core enabled since loading 268 threads brings up a bunch of lines. Any help would of course be very much appreciated :)

sigkill commented 3 years ago

just concluded testing. XeonPhi KNC does not have AES intrinsics XeonPhi KNL does not have AES intrinsics I rewrote some of the code to use the wide vectors available, but sadly enough there is no performance increase. the average per core performance is around 10H/s when using more than 1 core there are only 72 physical cores, and there is no L3 cache. my best single core run, was around 23-24H/s once you use more than a few cores the hashrate per core goes down as well. once you run around 100 cores performance decreased ( as in total performance) the max I got out of a single KNL with 72 cores ( 288 cores arent usable for crypto) was around 200H/s which equals around 3 xeon E5-2697v4 cores or an old GTX460 :) the power/perf balance is way too bad for XeonPhi. even a normal single socket workstation with 20 cores will outperform it with 1/10th of the power. there may be a way to try recode to use HBM instead of L3 cache. L2 per core is tiny... compared to Xeon. so basically not very plausible architecture for crypto K, Van: "Exzaver" notifications@github.com Aan: "fireice-uk/xmr-stak-cpu" xmr-stak-cpu@noreply.github.com Cc: "buggenhout" buggenhout.kris@telenet.be, "Comment" comment@noreply.github.com Verzonden: Zondag 14 januari 2018 17:44:26 Onderwerp: Re: [fireice-uk/xmr-stak-cpu] Xeon Phi/MIC support? (#291) So there's no way to get a high h / s amount with the old x100 PHI's? Maybe the 5110 has certainly still unknown potenital? Would be awesome if somebody create a optimized PHI xmr miner for the first gen! — You are receiving this because you commented. Reply to this email directly, [ #291 (comment) | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/AdD2Ey-Cz0nEVQuOwADVmyHmT6Pqg2lDks5tKi7qgaJpZM4PA4Sl | mute the thread ] .

Do you happen to have your code available anywhere? I'm interested in looking at what the changes were between your version and the on-branch version.