Miner- Zogminer: Linux SILENTARMY

Documenting progress on an open source GPU Equihash Miner and to ask for help :smiley: . I am unable to guarantee that this project will be successful. This post may be updated over time as more feedback and information is collected from the community. EDIT I think this project and all those working on open source software for this were fairly successful. Happy hashing everyone.

Volunteers

(please notify me if you'd like to be put on the list)

voxelot
omaralv
age
hellcatz

Requirements / Goals:

  1. Find solutions within a reasonable (profit gap reducing) amount of time compared to the unconfirmed numbers from private companies. Highest Claim I know of:
    Toomim Bros New benchmark: 66 ms (28.5 Sol/s)

  2. Be stable enough to run on Zcash launch (October 28th).

  3. Solutions are accepted by zcashd.

  4. Stratum support? (maybe after launch)

Current Project Status:

You can follow the code here https://github.com/nginnever/zcash-gpu-miner

Roadmap (unofficial):

October 2nd - 7th:

Studying opencl programming, wagners algorithm, and analysis of sorting beyond my graduate level algorithms course. This would be a great time to talk to str4d about his python implementation of equihash so that I understand the exact bit shifts needed to pad the hashes and such that it matches zcashd's expectations for confirming blocks. This is going to be a crash course and to truly do justice in understanding these topics it will require a decent portion of my attention over the next week. Optimistically I will have a prototype javascript solver optimized to demonstrate my understanding of the gbp.

**EDIT: I was able to program out most of the gbp algo in JS today. This timeline will likely not need 5 days and bump up the rest.

October 8th - 14th:

Hackathon to getting a prototpye running. This would include having a javascript platform to bundle a correct block from an opencl kernel equihash solution and correctly verified by zcashd and broadcast the zcash network.

October 15th - 21st:

Testing and optimization on different graphics cards. Fortunately this is the only information that private companies are willing to provide to use. There has been a lot of community members offering to let us test on various cards. The plan is to get some software easy enough to distribute and test without the need for devs to be at the hardware.

October 22nd - 28th:

Hopefully something is runnable for the blockchain release and miners can start getting used to the build!

EDIT: We are still looking on schedule to get a release out to miners by the 22nd.

EDIT: Thanks to silent army kernel we are up and hashing very nicely. Great job everyone.

Cheers!

voxelot

Donate to your devs if you'd like! Here is a list of the addresses of those working on this project. (please let me know if you'd like to be added)

voxelot:

ZEC: t1PGgRgVQ14utsD7mp2dzGdykTDFUCKzPQ5

BTC Donations: 1A67XmfyukPNbrMmckBToE8xZPesuM6Ti1

ETH: 0x82a642cAFD6bFc228C7B5Ea0394A0Ad702A7c03D

omaralv:

T: t1MEUYR6yu9hYQ31ECWmijVwx9R6pAXQSTy

Z: zcFH797ux5nKSQfFdwxbP83xSczRrDMnCA5do897BsWDndzqCQmYgRbpdChRfEfEa6ytfZT7NhcwognJJS4XFNLoW8Pgv1Q

ETH:
0x000DCB7ccB55faDaEc5C4A13E173a1E30e643867

BTC:
18tvCqDFAFWv3jwDqXe5SBs6bmy9Xn4bnN

Age:

ZEC: t1MfAaj8YDwiwFb6RAnNtW4EtzvTvkFGBvV

BTC:1EdijwWG3jYczjWLAqVgg3WgV8prXo5M5C

ETH: 0a9e0a4cfffc9a7c7df37d8300e9f79ad15b986f

19 Likes

I currently operate a mid-to-large size ETH mine. (1-10GH/s) I can take one of my rigs offline to setup for this but it must physically stay here. I can however give you SSH access to it. Just tell me what OS/distro you prefer and I'll make it so. It has 6 AMD R9 290s.

Also I have one RX 480 8GB you can use on a separate RX test rig. If you like I could just pull a R9 290 off another rig and add it to that test rig so you can test both with both the new amdgpu and the fglrx drivers for older cards.

I'm pretty flexible but as I said the cards/rigs have to stay physically here.

4 Likes

cascadiacrypto: Awesome! thanks for offering ssh to one of your eth miners. That would actually be perfect. I don't think I would need access to the hardware physically and I could contact you if I need a reset or something. We really just need to be sure what I write on nvidia in opencl ports correctly and nothing weird happens on amd.

Let's stay in touch and I'll ping you when I have more kernel software written.

2 Likes

cascadiacrypto: Awesome! thanks for offering ssh to one of your eth miners. That would actually be perfect. I don't think I would need access to the hardware physically and I could contact you if I need a reset or something.

Yes. I can give you my phone number to call or text if you you need a reset.

We really just need to be sure what I write on nvidia in opencl ports correctly and nothing weird happens on amd.

I'm afraid I don't have an nvidia GPU that would help. I could perhaps buy a GTX 970 though. Just let me know.

Let's stay in touch and I'll ping you when I have more kernel software written.

Definitely.

1 Like

Great to see this project. I was looking into building a simple miner in c++ - I did not consider javascript.

I can provide some test rigs as well - I have rx480 reference and Sapphire nitro+ as well as r9 390s. Mght be able to provide a small rig as a loaner if the project is going well, and if necessary.

2 Likes

Thanks for taking a look indytim as well as the test rig offer. If we go forward on this hopefully I'll have a module that I can just work with you guys to compile and run.

One of the nice things about using JS for the client is that it should be easy enough for you guys to npm install and test. Also there might actually be some performance boost in using node.js async event loop to schedule more kernel tasks then single core C can do. But I'm really not sure if that is a great idea in practice.

Good news is that the kernel code, or the meat of the algorithm will be in C++ (or C99) so you can help hack on that or review if you'd like.

2 Likes

Hi Voxelot, Thanks for your work. I also want to help if you need.

1 Like

I have a rig with Fury avaible for testing cards with HBM so u can test also on Fury

1 Like

Hi voxelot, i have a sole eth rig but look like you have more than you ask, if you provide a bitcoin address I will contribute whit a donation trust, just a chip but i would like to do

3 Likes

jbcheng, Ivcelmik83, thanks for chipping in, good to have a variety of hardware. I'm optimistic that releasing test builds for the community to report back on will be a quick measure of the software.

iCimo, thanks for the donation offer! I'll leave a BTC address for anyone who wishes to donate. If I receive enough support I will dedicate full-time to complete this.

1A67XmfyukPNbrMmckBToE8xZPesuM6Ti1

1 Like

A month ago I was looking for people to work on an OSS miner, but nobody seemed interested in the task since there was no 10K$ bounty.

I am still willing to help, but now I don't have much time. I can still help with OpenCL code, but it is going to be in my free time and I don't have much.

You should drop by the zcash slack, all the devs are there and it is probably the easiest way to communicate.

What got me by surprise is the use of JS for the miner, I haven't got much experience with that. I am mainly a C++ guy.

2 Likes

Hey omaralv! thanks for the advice, I'm in slack as well under voxelot. I understand everyone is probably busy, even more so with genesis launch so I don't want to bug the other devs too much.

You're opencl experience would be invaluable to me if you ever get some time to chat or to review my kernels. Also I'm not glued to using JS for the actual miner code if someone else wants to step up and write a C or other code based app. For me it's just super quick to write JS and I figure that's good with the limited time we have until launch,

3 Likes

You guys are true blue heroes for picking up the torch on this. The more miners the better, and while I am sure all the 'closed source' will leak pretty soon after launch it's still very important for the community as a whole that Zcash launches with a level and fair playing field. Will donate.

4 Likes

I have R9 295x2s and RX 480s available for testing as well.
Can be ready by end of week.

Windows or Linux?

I think we should hold a separate crowdfund for whoever releases a GPU miner comparable to the privates...
Theoretically, if your end result is even 20% below theirs, the prize money will breach the value gap and cause them to release their miners.

2 Likes

Zcash GPU Open-miner captains log 0.0.1:

The research is going faster than expected. Today I began porting the current zcash C equihash solution code into opencl kernels that can run on GPU with higher memory bandwidth. This is just the beginning of an 'as simple as can be run' port to opencl. This gives me a chance to study what the open source team at zcash has worked together to implement over the past few months. A vast wealth of knowledge lies in the github issues like parallelization of the current miner code here: https://github.com/zcash/zcash/issues/1239

I'm hoping to have a working opencl algorithm in the next couple of days. I'll be uploading my code to github so we can get some review on the kernel and move the discussion to issues on that repo as to free this thread up more for updates and community outreach posts. We can do a traditional pull request and review system moving forward for code contributions :smiley:

Thanks again for all of the offers for mining hardware. My main priority is to get a working algorithm on your cards at home so everybody can start setting up their rigs and testing together.

Back to work!

Cheers

P.S.

Hey miner!

I'm building for linux since as far as I know zcashd is still only supported on linux? Either way first build will run on linux. I'm not exactly sure what the limitations are with zcash running on Windows but there is the possibility of running zcashd in a VM. I'm unaware if that will hurt performance atm. Technically the miner runs on OSX since that is the platform I am building it on and even windows. It just won't be able to run zcashd to talk to the network.

3 Likes

What do you use to debug the OPENCL GPU Kernel?

In CodeXL the Local/Watches only shows the C code but not the Kernel.

I've been pointing my results back to the main C code to show the results since I can't read the variables off the Kernel.

1 Like

Nevermind

printf() seems to work inside the KERNEL

2 Likes

From what I have read you can enable the printf extension in bpth amd and intel opencl with something like

#pragma OPENCL EXTENSION cl_amd_printf : enable

Also I have not much xp with CodeXL but it seems to promise step through on kernel states spanning work groups. Please let me know your finding on debugging. Optimizing the EQH algo on kernel will be really important to getting close to the numbers the pros are putting up. If we can narrow the margin enough to make them open source as mentioned above, I would consider this a success.

1 Like

Big succes i can complete :slight_smile:

1 Like

Have you commited the initial kernel? I don't see any new commits since JS initial solution.

Whenever you make it available in the repo, I'll try to help optimizing it. Careful with printfs in kernels, order and consistency are not guaranteed.

I will start looking at the paper and code to start thinking about optimization strategies. From what I gather, the main bottleneck is a sorting algorithm. The most optimized way of doing this to my knowledge is a bitonic sort on shared memory.

I am also wondering if anybody is interested in a CUDA miner, I could work on that while voxel is working on OpenCL apart from helping him with that. Is there any interest?

3 Likes