Author

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

full member
Activity: 239
Merit: 100
get this error with 3.3.5
Code:
c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^

Did you include CXXFLAGS="-std=gnu++11" in your configure?
thx for the hint Smiley
member
Activity: 83
Merit: 10
Edit: I looked at the cpu_detect code and it uses cpuid at its heart. Howver, for AVX it also checks the XSAVE
bit (the ones hmage thinks are a bug) and also checks a kernel var for XSAVE, not done by cpuminer-opt.

The logic in there is "AND" as requirement. Meaning both AVX and XSAVE have to be there. In cpuminer-opt it's "OR", meaning presence of either AVX or XSAVE will return has_avx()=true.
legendary
Activity: 1470
Merit: 1114
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.

If you used the CMB binaries none of them support CPUs without AES, however cpuminer-opt does support
non-AES CPUs if you compile yourself. See README.md for instructions.


I have downloaded it from cryptomining-blog website. There is a sse2 executable which is working fine with other algos.

CMB hasn't compiled any builds for CPUs without AES. Some algos will still work on your CPU because they are not optimized
for AES. Please post the output at miner startup. If the algo says it has AES it will crash. If the algo doesn't have AES
it will work.

You will need to compile yourself to mine algos that have been optimized for AES. The instructions are in READSME.md.

Checking CPU capatibility...
                  Intel(R) Xeon(TM) CPU 2.80GHz
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 5.3.0
Build features: SSE2
Algo features: SSE2 AES
AES not available, starting mining with SSE2 optimizations...

I am a noob in compiling, I have never done it. I thought that you are interested  Smiley

Thanks, this is good info. It might help with the other problem being discussed.
member
Activity: 110
Merit: 10
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.

If you used the CMB binaries none of them support CPUs without AES, however cpuminer-opt does support
non-AES CPUs if you compile yourself. See README.md for instructions.


I have downloaded it from cryptomining-blog website. There is a sse2 executable which is working fine with other algos.

CMB hasn't compiled any builds for CPUs without AES. Some algos will still work on your CPU because they are not optimized
for AES. Please post the output at miner startup. If the algo says it has AES it will crash. If the algo doesn't have AES
it will work.

You will need to compile yourself to mine algos that have been optimized for AES. The instructions are in READSME.md.

Checking CPU capatibility...
                  Intel(R) Xeon(TM) CPU 2.80GHz
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 5.3.0
Build features: SSE2
Algo features: SSE2 AES
AES not available, starting mining with SSE2 optimizations...

I am a noob in compiling, I have never done it. I thought that you are interested  Smiley
legendary
Activity: 1470
Merit: 1114
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.

If you used the CMB binaries none of them support CPUs without AES, however cpuminer-opt does support
non-AES CPUs if you compile yourself. See README.md for instructions.


I have downloaded it from cryptomining-blog website. There is a sse2 executable which is working fine with other algos.

CMB hasn't compiled any builds for CPUs without AES. Some algos will still work on your CPU because they are not optimized
for AES. Please post the output at miner startup. If the algo says it has AES it will crash. If the algo doesn't have AES
it will work.

You will need to compile yourself to mine algos that have been optimized for AES. The instructions are in READSME.md.
member
Activity: 110
Merit: 10
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.

If you used the CMB binaries none of them support CPUs without AES, however cpuminer-opt does support
non-AES CPUs if you compile yourself. See README.md for instructions.


I have downloaded it from cryptomining-blog website. There is a sse2 executable which is working fine with other algos.
legendary
Activity: 1470
Merit: 1114
CPUID status, will update with new info

Trying to fix a bug that isn't a bug just creates more bugs.

That's what happened with the AVX flag. The orignal implementation was correct. A detailed explanation
is avaiable in this file:

https://bitbucket.org/ariya/cpu-detect/src/cc2037e9bd0fb8cf12846dbfa4818fd813043972/base/cpu.h?at=master

So I've reverted.

The AVX2 flag isn't implemented by cpu-detect so I don't know if it requires the same logic ad AVX1. I will look into it further.

cpu_detect returns the AES flag directly from the cpuid register so it is still a complete mystery why it was misidentified
on the AMD Phenom2.

The owner of a Xeon without AES posted capabilities while attemting to use the CMB Westmere build and it showed some
interesting results. It correctly showed the CPU did not have AES but incorrectly displayed AVX and AVX2 as being
available.

This help define the problem, or should I say problems:

1. AVX shows available on non-AES CPU. This one might be understood and fixed with the correct reading of
this feature. I would need a volunteer with a non-AES CPU to test.

2. AES shows available on non-AES AMD CPU. Still a mystery but seems limited to AMD.

3. AVX2 shows available on non-AES CPUs. I have to reimplement this because it does not use cpuid.

I would like a volunteer or two because I don't like to publicly release code based on trial and error, which has
been happening for the past few releases. These volunteers would need to be able to compile their own, Windows
or Linux, doesn't matter. I hope I ave one volunteer already with an older AMD CPU. I would like a volunteer with
old Intel CPU particularly Westmere and Nehalem.

Investigation continues.
legendary
Activity: 1470
Merit: 1114
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.

If you used the CMB binaries none of them support CPUs without AES, however cpuminer-opt does support
non-AES CPUs if you compile yourself. See README.md for instructions.
member
Activity: 110
Merit: 10
Hi, I was trying to mine x11evo algo with my older Xeon 7030 (codename Paxville) processor, but it crashed.  Sad HOdl is working fine. The processor has has sse2 and sse3 capabilities.
legendary
Activity: 1470
Merit: 1114
cpuminer-opt v3.3.5 is available.

Fixed hodl on Windows with non-AES CPUs. New build procedure for Windows, see README.md.
This fix is only significant for Windows users who compile their own on non-AES CPUs. Cryptomining
Blog does not build binaries for non-AES CPUs.

Rewrote CPU capabilities check to provide more info and be less verbose. It is implemented in permissive
mode meaning that mining will always be attempted. The miner may crash or perform at less than optimum.

This should close any remaining issues for now. It is recommended that all users upgrade even those who don't
like to update every release.

Download source:

https://drive.google.com/file/d/0B0lVSGQYLJIZVVp5aGxFVm1qVE0

Check CMB or OP for Windows binaries availability.

Win bins now available:

http://cryptomining-blog.com/wp-content/download/cpuminer-opt-3-3-5-windows.zip

I'd like to get some feedback regarding the CPU capabilities check from other AMD users as well as
Nehalem and Westmere.

In particular:

- OS, build procedure, changes to default build.
- CPU capabilities output at miner startup.
- discrepencies between output and reality
- did miner work, did it work at expective performance level
- change in behaviour from previous releases
- anything else you may think is useful.

Some info can be confirmed with the following commands, piping to grep focusses
on specific info.

Display CPU info Linux. Maps to CPU HW capabilities.

cat /proc/cpuinfo
cat /proc/cpuinfo | grep AES

Display default gcc options, Linux and mingw.

gcc -Q -march=native --help=target
gcc -Q -march=native --help=target | grep march


legendary
Activity: 1470
Merit: 1114
I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

There's cpuid — http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz

Code:
wget http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz
tar xvf cpuid-20151017.src.tar.gz
cpuid-20151017/
make
./cpuid -1 | fgrep -i avx


@th3.rOOt, can you try this on your AMD, to see if it works? Thanks.

Edit: I looked at the cpu_detect code and it uses cpuid at its heart. Howver, for AVX it also checks the XSAVE
bit (the ones hmage thinks are a bug) and also checks a kernel var for XSAVE, not done by cpuminer-opt.

This may help explain why AVX was misidentified, but there's also AES and AVX2. In cpu_detect there is no
mention of AVX2 and AES has no special handling. Did CPU AES get misindentified in previous releases?
legendary
Activity: 1470
Merit: 1114
I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

There's cpuid — http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz

Code:
wget http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz
tar xvf cpuid-20151017.src.tar.gz
cpuid-20151017/
make
./cpuid -1 | fgrep -i avx

As you can see in the source code, AVX flag is just one-bit check from 1/ECX, not how it's done in cpuminer-opt.

cpuminer-opt definitely has a bug in AVX detection.

Different problem.
legendary
Activity: 1470
Merit: 1114
-SNIP-

I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

http://users.atw.hu/instlatx64/AuthenticAMD0100F42_K10_Deneb_CPUID.txt.

Edit: Did you compile on a VM and run CPUz on the host?
I compile it myself on my personal Win7 machine so I have CPU-Z installed.
cpuminer compilation with MSYS+WinBuilds like in README, without autogen.sh, because it fails on MSYS.
Also custom libcurl and openssl dll's compiled for other project.

Other thing...
cpuminer-opt 3.3.4 -V outputs dependency libs version
Code:
built on Jun  2 2016 with GCC 4.8.3
features: x86_64 SSE2 AVX AVX2 XOP

libcurl/7.48.0 OpenSSL/1.0.2g
jansson/2.6 pthreads/2.9.1.0

cpuminer-opt 3.3.5 -V outputs just this:
Code:
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 4.8.3
Build features: SSE2


I didn't see much use in low level features or lib dependencies being listed.
I can easilly put them back, or I could even add more info to -V if you like.
I'm open to suggestions.

I'm still looking for some way the application can determine which -march was
used and maybe other compiler options. I tried reading CFLAGS and CXXFLAGS
but they are undefined in the application. I wonder if there is some way they can be passed
to the program during compilation?
member
Activity: 83
Merit: 10
I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

There's cpuid — http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz

Code:
wget http://www.etallen.com/cpuid/cpuid-20151017.src.tar.gz
tar xvf cpuid-20151017.src.tar.gz
cpuid-20151017/
make
./cpuid -1 | fgrep -i avx

As you can see in the source code, AVX flag is just one-bit check from 1/ECX, not how it's done in cpuminer-opt.

cpuminer-opt definitely has a bug in AVX detection.
sr. member
Activity: 312
Merit: 250
I did a little digging for "open source CPU feature identification"

Here's what I found - https://bitbucket.org/ariya/cpu-detect/src

When I run it on my Ubuntu boxes here's the result:
Code:
urban@storm:~/cpu-detect$ ./cpu-detect
Vendor: GenuineIntel
Brand: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
CPU features:
 MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AXV

Code:
urban@beast:~/cpu-detect$ ./cpu-detect
Vendor: AuthenticAMD
Brand: AMD Phenom(tm) II X4 940 Processor
CPU features:
 MMX SSE SSE2 SSE3

Even it compiled fine on Win7 MSYS+WinBuilds! Smiley
Code:
C:\msys\home\urban\ariya-cpu-detect>cpu-detect.exe
Vendor: AuthenticAMD
Brand: AMD Phenom(tm) II X4 965 Processor
CPU features:
 MMX SSE SSE2 SSE3

Maybe this will help to finally get correct CPU features and identifacation.
sr. member
Activity: 312
Merit: 250
-SNIP-

I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

http://users.atw.hu/instlatx64/AuthenticAMD0100F42_K10_Deneb_CPUID.txt.

Edit: Did you compile on a VM and run CPUz on the host?
I compile it myself on my personal Win7 machine so I have CPU-Z installed.
cpuminer compilation with MSYS+WinBuilds like in README, without autogen.sh, because it fails on MSYS.
Also custom libcurl and openssl dll's compiled for other project.

Other thing...
cpuminer-opt 3.3.4 -V outputs dependency libs version
Code:
built on Jun  2 2016 with GCC 4.8.3
features: x86_64 SSE2 AVX AVX2 XOP

libcurl/7.48.0 OpenSSL/1.0.2g
jansson/2.6 pthreads/2.9.1.0

cpuminer-opt 3.3.5 -V outputs just this:
Code:
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 4.8.3
Build features: SSE2
legendary
Activity: 1470
Merit: 1114
get this error with 3.3.5
Code:
c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^

Did you include CXXFLAGS="-std=gnu++11" in your configure?

build.sh (or winbuild.sh for Windows) also works and sets the flags correctly.

I think I'll add a brief installation section to the OP. Perhaps that will reduce the number of these questions.
It seems to be becoming a FAQ.
legendary
Activity: 1470
Merit: 1114
There is some really weird stuff going on with CPU capabilities check on AMD...

According to cpuminer-opt binary:
AMD Phenom(tm) II X4 965 Processor
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 4.8.3
Build features: SSE2
Algo features: SSE2 AES
AES not available, starting mining with SSE2 optimizations...

According to CPUID CPU-Z:


I'm pretty sure that this is the problem with -march=native on AMD CPU's without AES-NI.

Yes very weird. I haven't found anything to suggest they've implemented CPUID differently than Intel,
yet these flags are taken directly from the CPUID register.

I would be nice if CPUz had open source so I could just copy their code. I found this, closest I found
to your CPU. Something I can work with to figure out what's wrong.

http://users.atw.hu/instlatx64/AuthenticAMD0100F42_K10_Deneb_CPUID.txt.

Edit: Did you compile on a VM and run CPUz on the host?
sr. member
Activity: 312
Merit: 250
get this error with 3.3.5
Code:
c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^

Did you include CXXFLAGS="-std=gnu++11" in your configure?
sr. member
Activity: 312
Merit: 250
There is some really weird stuff going on with CPU capabilities check on AMD...

According to cpuminer-opt binary:
AMD Phenom(tm) II X4 965 Processor
CPU features: SSE2 AVX AVX2
SW built on Jun  5 2016 with GCC 4.8.3
Build features: SSE2
Algo features: SSE2 AES
AES not available, starting mining with SSE2 optimizations...

According to CPUID CPU-Z:


I'm pretty sure that this is the problem with -march=native on AMD CPU's without AES-NI.
Jump to: