PoC-Consortium / engraver

PoCC Burstcoin Reference Plotter
MIT License
63 stars 39 forks source link

Are you interested in OpenCL support? #31

Closed gsfare closed 5 years ago

gsfare commented 6 years ago

Hi All,

I have a working prototype for a OpenCL GPU implementation (actually based on omdcct but I'm planning to clean it up and port to cg_obup).

Let me know if you're interested and I can share my code. I'm getting approx 120k nonces per minute on my nVidia GTX 970. I've still got some work to do on it (optimisation and cleaning up) but it's a working prototype already and produces the same plots given equal parameters..

If you have any recommendations or ideas then I'm happy to discuss.

Cheers, Gareth.

rico666 commented 6 years ago

Of course! I planned to do it myself, but am swamped, so if you make a PR it'll be most welcome.

gsfare commented 6 years ago

Excellent. I'll get that sorted then. Guess I need to go away and make my code nice and pretty ;-) I share your sentiment about being swamped. I will do my best to get something out there though. Code reviews are very welcome. I guess we need to look at PoC2 plots too right? Shouldn't be a huge change I think. Just a couple of lines most likely.

rico666 commented 6 years ago

We need PoC2 too. (And the PoC2-branch needs merging too hint hint)

The wallet contains PoC1 and PoC2 OpenCL code already, maybe you can adapt that or use it to benchmark against yours.

And if yours is better, maybe we could use that in the wallet too.

So many construction sites...

gsfare commented 6 years ago

I just did a quick diff between master and PoC2. It doesn't look too daunting at first glance. Famous last words! I did see the OpenCL code for the wallet. It's pretty much a direct copy of the shabal256 sphlib implementation. In fact it's what I have done is also based on it but I've gone a bit further and optimised some of the macros for branching and also some memory barrier stuff. Certainly will be interesting to see any differences in performance!

What's best for the project? Create a PR from master...merge PoC2 and then add the OpenCL stuff? It's a lot of changes in one go I think so I feel it should be done separately. Also the OpenCL additions are quite independent, as in they don't really mess too much with the current implementations, rather it's a extra module for the -x parameter.

Anyway. I'll start with the OpenCL stuff. It shouldn't mess that much with the PoC2 implementation anyway and I'll add support for it at the same time.

rico666 commented 6 years ago

If you make consecutive PRs,

or vice versa, it's completely sufficient. Thanks for having a look at this!

rico666 commented 6 years ago

Any news on this?

gsfare commented 6 years ago

Sorry for the radio silence! Work commitments have been severely taking up my time. I won't be able to do anything for at least a month or two.

I'd be more than happy to dump you git repo though if you fancy taking a look before then. It's based on omdcct but the underlying kernel code, and usage of it, shouldn't change.

rico666 commented 6 years ago

Yes, send the dump - let's see who has sooner time to look into it.

gsfare commented 6 years ago

omdcct_gpu.git.tar.gz

No probs, you should be able untar and then just "git clone" from the directory. You've got all the history then if needed.

JohnnyFFM commented 6 years ago

Many thanks, I'm looking into this!

JohnnyFFM commented 5 years ago

finally GPU support! 😃