Author

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

member
Activity: 81
Merit: 1002
It was only the wind.

GCC/G++ version 6.1.1?

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4

What Linux version did you use? When I have the time I'll build a VM to reproduce the problem.

I run Arch.
member
Activity: 83
Merit: 10
That's not how it currently works in cpuminer-opt. configure is persistent and is not modified by anyone or anything
but me.

Write a warning about that somewhere, because this is not how the rest of the world does it.

https://wiki.debian.org/Autoreconf

Debian (and, by extension, Ubuntu) deletes configure and regenerates it from configure.ac on almost every single package that is in the repository.

Your copy of configure also might be too old for newer distros like Arch or Gentoo, and will end up tripping on errors. A simple run of "autoreconf -f -i -v" fixes many of those problems by regenerating that configure script.

Keeping nonperishable source-class information in that place is not sane idea. This is equivalent of editing *.o files after compilation from *.c.

PS: if you insist on keeping configure, then remove it from .gitignore and delete the source file -- configure.ac.
legendary
Activity: 1470
Merit: 1114
Uh. no, configure is part of the clean package, I edit it every version with the new version number.

No, configure is not part of clean package, it is an auto-generated script. Here's a way to prove that:

 * Delete configure and then run build.sh -- magically it somehow reappears.
 * Where from? From configure.ac!

If you want your changes in configure to persist, change the source of that file -- configure.ac

For more info how configure works, read the docs -- https://www.gnu.org/software/autoconf/manual/autoconf.pdf

That's not how it currently works in cpuminer-opt. configure is persistent and is not modified by anyone or anything
but me. Whether it is the correct way or not is irrelevent, it works

And once again, you are making the claim, you prove it.

I'm not saying you are wrong in that using configure.ac is the correct way of doing things but there are obviously
others and you have, not only, failed to show any evidence the current cpuminer-opt implementation is wrong,
you have failed to accept that it even exists. I don't know about autoconf to debate the virtues of either method
but I'm not about to implement a disruptive change for no apparent benefit. Sound familiar?


Thanks for the link, I'll add it to the long list of reading material.
member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.

What version? That wastefull c++ code is to support non AES_NI.

I'm currently using 3.2.3 and I made no changes to hodl in 3.2.4 or 3.2.5.

Just compiled and ran 3.2.5, no porblem.

I tried the version linked in the OP - and you know, you can do a non-AES-NI version really simply with a lookup table... or a few, for speed.

I'l download it and give it a try.

Edit: downloaded, compiled and runs ok on hodl.

GCC/G++ version 6.1.1?

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4


Oh lord that's old. Probably why.

The new compoiler should be backward compatible, or have a compatibility switch. If not it's pretty inconsiderate
of them to break existing code.

There are a lot of implicit function declarations in my code, did you set the option to allow them? I'm still
undecided on whether to leave them ro make it easier to add new algos, or require every algo's registration
function be defined in algo-gate-api.h.

It actually dies in C++ headers somewhere. I was going to fix it, but then I looked at what was causing it and realized that all that inefficient C++ wasn't actually needed at all, so pointed it out.

So the problem is not in your code but in the non AES_NI version. Is the error easy to fix, I'll do it if you send me the info.


You could just remove the C++ stuff from that part, and use a table-based AES implementation for non-AES-NI CPUs.
member
Activity: 83
Merit: 10
Uh. no, configure is part of the clean package, I edit it every version with the new version number.

No, configure is not part of clean package, it is an auto-generated script. Here's a way to prove that:

 * Delete configure and then run build.sh -- magically it somehow reappears.
 * Where from? From configure.ac!

If you want your changes in configure to persist, change the source of that file -- configure.ac

For more info how configure works, read the docs -- https://www.gnu.org/software/autoconf/manual/autoconf.pdf
legendary
Activity: 2716
Merit: 1094
Black Belt Developer
You shouldn't edit configure, but the files used to generate it: configure.in for example.
legendary
Activity: 1470
Merit: 1114
Edit2: I downloaded your code but there are files missing, most noticeably configure. What's up with that?

Regarding files missing, I cloned hmage's source from github so I have the same files that he put up there.

configure is generated by autoconf, which is called by autogen.sh, which is called by build.sh. There's no point in keeping build artifacts.

Same goes for Makefile, Makefile.in, aclocal.m4, autom4te.cache, compile, config.guess, config.log, config.status, config.sub, cpuminer-config.h, cpuminer-config.h.in, depcomp, install-sh, missing and stamp-h1 -- they are generated during complete build process and it's general etiquiette to not commit those (since their output will vary from machine to machine).

PS: they're even mentioned in joblo's .gitignore

Uh. no, configure is part of the clean package, I edit it every version with the new version number.

Thanks for the tip about _WIN32, I'll add it back in the next release.
member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.

What version? That wastefull c++ code is to support non AES_NI.

I'm currently using 3.2.3 and I made no changes to hodl in 3.2.4 or 3.2.5.

Just compiled and ran 3.2.5, no porblem.

I tried the version linked in the OP - and you know, you can do a non-AES-NI version really simply with a lookup table... or a few, for speed.

I'l download it and give it a try.

Edit: downloaded, compiled and runs ok on hodl.

GCC/G++ version 6.1.1?

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4


Oh lord that's old. Probably why.

The new compoiler should be backward compatible, or have a compatibility switch. If not it's pretty inconsiderate
of them to break existing code.

There are a lot of implicit function declarations in my code, did you set the option to allow them? I'm still
undecided on whether to leave them ro make it easier to add new algos, or require every algo's registration
function be defined in algo-gate-api.h.

It actually dies in C++ headers somewhere. I was going to fix it, but then I looked at what was causing it and realized that all that inefficient C++ wasn't actually needed at all, so pointed it out.
member
Activity: 83
Merit: 10
Edit2: I downloaded your code but there are files missing, most noticeably configure. What's up with that?

Regarding files missing, I cloned hmage's source from github so I have the same files that he put up there.

configure is generated by autoconf, which is called by autogen.sh, which is called by build.sh. There's no point in keeping build artifacts.

Same goes for Makefile, Makefile.in, aclocal.m4, autom4te.cache, compile, config.guess, config.log, config.status, config.sub, cpuminer-config.h, cpuminer-config.h.in, depcomp, install-sh, missing and stamp-h1 -- they are generated during complete build process and it's general etiquiette to not commit those (since their output will vary from machine to machine).

PS: they're even mentioned in joblo's .gitignore
member
Activity: 83
Merit: 10
I don't care about _WIN32 and don't know what the other one is.

Careful with that, 64-bit windows can define WIN32 but not WIN64. In windows, "32" sometimes has nothing to do with being 32-bit. Their system folder is still called "system32" even for purely 64-bit code.
member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.

What version? That wastefull c++ code is to support non AES_NI.

I'm currently using 3.2.3 and I made no changes to hodl in 3.2.4 or 3.2.5.

Just compiled and ran 3.2.5, no porblem.

I tried the version linked in the OP - and you know, you can do a non-AES-NI version really simply with a lookup table... or a few, for speed.

I'l download it and give it a try.

Edit: downloaded, compiled and runs ok on hodl.

GCC/G++ version 6.1.1?

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4


Oh lord that's old. Probably why.
legendary
Activity: 1470
Merit: 1114
cpuminer-opt now supports Windows. Lunux works as usual. The same source tarball is
used for both.

cpuminer-opt v3.3 is released with support for Windows using mingw_w64 and msys.
See README.md for build instructions for Windows including how to install msys and mingw_w64.

https://drive.google.com/file/d/0B0lVSGQYLJIZVjdDNVlpb05iUDQ/view?usp=sharing

- Windows support added for all algos.
- hodl algo for CPUs without AES_NI is not supported on Windows in this release.
- New build instructions for Windows requires msys and mingw_W64,
  see README.md for details.
- No prebuilt binaries are available, you must compile yourself.
- Cross compiling is not supported, you must compile on the system you mine with.
legendary
Activity: 1470
Merit: 1114
I'm installing winbuilds now, will report on my results.

Edit; I've looked over your comit and I have a couple of questions. Why no #endif?
Most of the changes are related to the use of asm by changing it to __asm__ for windows.
But in algo/groestl/sse2/grso-asm.c you made the change unconditional. I also find it
peculiar that some of the code with the asm syntax previously compiled on Windows.
Why is this change necessary?

Edit2: I downloaded your code but there are files missing, most noticeably configure. What's up with that?

Edit3: Nevermind, I've got something better going with my own version, only have to disable hold for non AES_NI.


Regarding the #endif.  That was a mistake.  I compiled without any conditional statements but when putting it up on github I added them and overlooked adding the #endif to the statements.  Same thing with grso-asm.c, I just missed adding the statements all together.  These issues have now been dealt with on github. 

Regarding files missing, I cloned hmage's source from github so I have the same files that he put up there.

I've made progress but there are still issues.

I found a solution to the makefile issue that does not require a workaround.

I can compile on real HW, however, it requires a small procedure change for windows.
Unfortunately the display issue remains. Not only is the newline missing but the hash units are also missing
from the output. This does not occur in the startup text, only the mining output.

Still working on it.

Good luck on getting it working.  I look forward to seeing what you can do with it!

Thanks. Your changes were still useful. I used the #if defined(_WIN64)... and added windows.h as you did.
I only checked for _WIN64 and __WINDOWS__. I don't care about _WIN32 and don't know what the other
one is.
member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.

What version? That wastefull c++ code is to support non AES_NI.

I'm currently using 3.2.3 and I made no changes to hodl in 3.2.4 or 3.2.5.

Just compiled and ran 3.2.5, no porblem.

I tried the version linked in the OP - and you know, you can do a non-AES-NI version really simply with a lookup table... or a few, for speed.

I'l download it and give it a try.

Edit: downloaded, compiled and runs ok on hodl.

GCC/G++ version 6.1.1?
sr. member
Activity: 298
Merit: 250
I'm installing winbuilds now, will report on my results.

Edit; I've looked over your comit and I have a couple of questions. Why no #endif?
Most of the changes are related to the use of asm by changing it to __asm__ for windows.
But in algo/groestl/sse2/grso-asm.c you made the change unconditional. I also find it
peculiar that some of the code with the asm syntax previously compiled on Windows.
Why is this change necessary?

Edit2: I downloaded your code but there are files missing, most noticeably configure. What's up with that?

Edit3: Nevermind, I've got something better going with my own version, only have to disable hold for non AES_NI.


Regarding the #endif.  That was a mistake.  I compiled without any conditional statements but when putting it up on github I added them and overlooked adding the #endif to the statements.  Same thing with grso-asm.c, I just missed adding the statements all together.  These issues have now been dealt with on github. 

Regarding files missing, I cloned hmage's source from github so I have the same files that he put up there.

I've made progress but there are still issues.

I found a solution to the makefile issue that does not require a workaround.

I can compile on real HW, however, it requires a small procedure change for windows.
Unfortunately the display issue remains. Not only is the newline missing but the hash units are also missing
from the output. This does not occur in the startup text, only the mining output.

Still working on it.

Good luck on getting it working.  I look forward to seeing what you can do with it!
legendary
Activity: 1470
Merit: 1114
I'm making good progress with Windows. I've got a VM running Win8.1 with msys and mingw-w64 installed.
cpuminer-opt v3.2.5 compiled with only a few minor changes. It is currently mining hodl with AES_NI.

Non AES_NI hodl code does not compile in Windows. A quick solution is not apparent so I will likely release
with non AES_NI hodl disabled.

A small change is required to makefile.am to remove linker references to boost. A workaround I am considering
is a seperate build.sh file and a different manual build procedure for Windows. I'm getting a sense of deja-vu, there
was a discussion about boost earlier in this thread I'll have to revisit.

The miner runs directly from the msys shell but it does not display newlines so all output is on one long contnuous
line. I don't know if it's something in the code or a problem with msys. It does not run at this time from
a windows shell due to missing packages including C++ Redistributable 2008 and openssl.

Tomorrow I will try it on a physical machine and work out what extra packages I need to get it working from the Windows
shell and document the process.

The test matrix just grew another dimension but I hope to get a nearly fully functional multi platform release in a couple
of days. I will make no attempt to distribute binaries at this time.

I've made progress but there are still issues.

I found a solution to the makefile issue that does not require a workaround.

I can compile on real HW, however, it requires a small procedure change for windows.
Unfortunately the display issue remains. Not only is the newline missing but the hash units are also missing
from the output. This does not occur in the startup text, only the mining output.

Still working on it.

Edit: The hashrate display is fixed.

I can run cpuminer from a windows command prompt on my i7 but not on my core2. I can run from
an msys shell on both.  I might have done something differently on each system.

It's just about ready for release. I need to ensure nothing broke on Linux then merge the Windows changes
back to the main stream and do a thourough test.


member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.

What version? That wastefull c++ code is to support non AES_NI.

I'm currently using 3.2.3 and I made no changes to hodl in 3.2.4 or 3.2.5.

Just compiled and ran 3.2.5, no porblem.

I tried the version linked in the OP - and you know, you can do a non-AES-NI version really simply with a lookup table... or a few, for speed.
legendary
Activity: 1470
Merit: 1114
I'm making good progress with Windows. I've got a VM running Win8.1 with msys and mingw-w64 installed.
cpuminer-opt v3.2.5 compiled with only a few minor changes. It is currently mining hodl with AES_NI.

Non AES_NI hodl code does not compile in Windows. A quick solution is not apparent so I will likely release
with non AES_NI hodl disabled.

A small change is required to makefile.am to remove linker references to boost. A workaround I am considering
is a seperate build.sh file and a different manual build procedure for Windows. I'm getting a sense of deja-vu, there
was a discussion about boost earlier in this thread I'll have to revisit.

The miner runs directly from the msys shell but it does not display newlines so all output is on one long contnuous
line. I don't know if it's something in the code or a problem with msys. It does not run at this time from
a windows shell due to missing packages including C++ Redistributable 2008 and openssl.

Tomorrow I will try it on a physical machine and work out what extra packages I need to get it working from the Windows
shell and document the process.

The test matrix just grew another dimension but I hope to get a nearly fully functional multi platform release in a couple
of days. I will make no attempt to distribute binaries at this time.
legendary
Activity: 1470
Merit: 1114

I only made small changes other than not using hodl.  I set up a github so that you could see what the changes were.  Here is the commit to my repo with the changes detailed: https://github.com/ctgiant/cpuminer-opt/commit/1aa77613bc835d0693eef29084d888fa920002f0

I should also note, just so you know, it was built with mingw-w64-x86_64.

I'm installing winbuilds now, will report on my results.

Edit; I've looked over your comit and I have a couple of questions. Why no #endif?
Most of the changes are related to the use of asm by changing it to __asm__ for windows.
But in algo/groestl/sse2/grso-asm.c you made the change unconditional. I also find it
peculiar that some of the code with the asm syntax previously compiled on Windows.
Why is this change necessary?

Edit2: I downloaded your code but there are files missing, most noticeably configure. What's up with that?

Edit3: Nevermind, I've got something better going with my own version, only have to disable hold for non AES_NI.
member
Activity: 81
Merit: 1002
It was only the wind.
Your HOdl is broke - on linux, and probably on every platform. You put a WHOLE lot of wasteful C++ garbage in, butchering my HOdl code - also breaking the compile.
Jump to: