Pages:
Author

Topic: Unified miners communication protocol (Read 6255 times)

KNK
hero member
Activity: 692
Merit: 502
September 30, 2013, 06:54:02 AM
#75
It's a good suggestion, thanks.
I will add an examples section at the end with a full (virtual) 'session dump', or maybe it will be better to provide several small examples or both
sr. member
Activity: 251
Merit: 250
September 30, 2013, 05:17:10 AM
#74
I'll check out the protocol in more detail later, but one thing I'll ask right away... can you add the exact format for the work string and nonce/timestamp, with a few examples so people can test their implementation by feeding the same work and checking the results.

KNK
hero member
Activity: 692
Merit: 502
September 30, 2013, 04:18:37 AM
#73
This was just an example and we moved talking about it instead of the protocol. Smiley

@cscape maybe if we say 2 working threads instead of 2 communication channels it will better fit. The idea is that you don't wait for the answer of your command i.e. asynchronous communication, so MS have 1 thread that 'fires and forgets' commands and then another one which is processing the answers received data no matter if it was or was not requested and maybe even not knowing what the other thread did last summer.

Do you guys see something wrong in the proposed protocol or something that is missing, needs some changes?
legendary
Activity: 4592
Merit: 1851
Linux since 1997 RedHat 4
September 29, 2013, 09:52:02 PM
#72
Heh - mining using Muticast ...

I wrote/added Muticast support to cgminer a while back to supporting finding the cgminer APIs on a network.
Multicast isn't very reliable ... as is expected since it's UDP.

You'd use it for discovery, using it for sending the mining work out sounds like idle miners ...
sr. member
Activity: 251
Merit: 250
September 29, 2013, 02:20:04 PM
#71
Depends at what level you're working. If your miners are doing coinbase modifications, they could use a trick like stratum to share work.
That's true, but then they really use the exact same information, so a broadcast actually makes sense. KNK was describing a scenario where information is broadcast, but the miners only pick what's relevant to them. That's very much like your own directed traffic implementation layered over multicast.
legendary
Activity: 2576
Merit: 1186
September 29, 2013, 02:14:43 PM
#70
Wouldn't it make more sense to use directed data, and send each miner only the information he needs to have ? Multicast doesn't save bandwidth, because each miner needs different work anyway.
Depends at what level you're working. If your miners are doing coinbase modifications, they could use a trick like stratum to share work.
sr. member
Activity: 251
Merit: 250
September 29, 2013, 02:12:41 PM
#69
Wouldn't it make more sense to use directed data, and send each miner only the information he needs to have ? Multicast doesn't save bandwidth, because each miner needs different work anyway.
KNK
hero member
Activity: 692
Merit: 502
September 29, 2013, 02:05:11 PM
#68
When you have many to many talking over multicast this can't be a single channel or MH will need to deal with message queue and retransmits to the backup manager etc. ... but lets think about that when the time comes - it is not part of the current protocol description.
sr. member
Activity: 251
Merit: 250
September 29, 2013, 01:44:28 PM
#67
But why couldn't you do that over one communication channel (per MS/MH) ?
KNK
hero member
Activity: 692
Merit: 502
September 29, 2013, 01:30:44 PM
#66
On my opinion, latter when there will may be a need for a farm of network attached miners and proxies (or better name them Mining Managers), separation will be welcome.
For example MS/MM will multicast a work and each MH will only pick specific jobs (jobid%miners_total=miner_id) or process a specific mtime or nonce range, then it will multicast back it's messages, but there may be more than one MS/MM host to pick and process them in active/backup or similar jobs division (miner_ip%MM_total).
At that point in time there will be a need for inter nodes communication protocol (additions) too, but the same protocol can be used and simply extended as needed with new commands or parameters.
sr. member
Activity: 251
Merit: 250
September 29, 2013, 01:15:30 PM
#65
Why add unnecessary complexity with 2 pairs of endpoints, or 2 other connections? You can simply mix various kinds data in one channel, and sort it out in the application.
KNK
hero member
Activity: 692
Merit: 502
September 29, 2013, 09:32:04 AM
#64
Yeah my thread is much more useful
The two threads are for different aspects of the communication and implementation and so far as i can see there are no disagreements between them, but the opposite - they perfectly fit together or ... is there something that is impossible (or problematic) to do with the suggested protocol?
One of the most important things in both threads is the asynchronous workflow and i like your idea about the two communication channels ('2 pairs of end points') between MS and MH and as i was thinking not just about USB, but also for 'over the network' protocol it could be easily separated. I would prefer that it is done as an extension to the protocol for 2 TCP sockets or UDP/multicast communication later when there is a need for it.
legendary
Activity: 4592
Merit: 1851
Linux since 1997 RedHat 4
September 29, 2013, 08:36:53 AM
#63
The draft is almost complete - there is something that bothers me with the debug errors command, which i'd like to think some more about, but the rest should be OK.
A review of the wording from a native speaker would be welcome as well as any other suggestions.
It will be great if some of the MS developers can provide a skeleton implementation for example with CPU mining or some other hardware

The fact remains, no one cares and no one will implement it, move along.
Yeah my thread is much more useful - it means: will the device mine optimally or not Smiley
https://bitcointalksearch.org/topic/optimal-firmwarehardware-design-for-mining-with-cgminer-294499
KNK
hero member
Activity: 692
Merit: 502
September 29, 2013, 06:23:53 AM
#62
I have completed the 'debug errors command', which ended as InfoMsg. No changes for the rest of the document were made except fixing some spelling mistakes.

I have provided some more examples for the InfoMsg, to explain the Subsystem parameter.
Instead of having Voltage and Current - just Power is enough for both and the same for the rest of the subsystems (Temp+Fan=Cooling, Hashrate+Freq=Hashspeed) in order to limit their number
KNK
hero member
Activity: 692
Merit: 502
September 25, 2013, 08:48:22 AM
#61
@kakobrekla are you mining hardware or mining software developer?
hero member
Activity: 714
Merit: 500
Psi laju, karavani prolaze.
September 25, 2013, 08:38:04 AM
#60
The draft is almost complete - there is something that bothers me with the debug errors command, which i'd like to think some more about, but the rest should be OK.
A review of the wording from a native speaker would be welcome as well as any other suggestions.
It will be great if some of the MS developers can provide a skeleton implementation for example with CPU mining or some other hardware

The fact remains, no one cares and no one will implement it, move along.
KNK
hero member
Activity: 692
Merit: 502
September 25, 2013, 05:53:47 AM
#59
The draft is almost complete - there is something that bothers me with the debug errors command, which i'd like to think some more about, but the rest should be OK.
A review of the wording from a native speaker would be welcome as well as any other suggestions.
It will be great if some of the MS developers can provide a skeleton implementation for example with CPU mining or some other hardware
sr. member
Activity: 251
Merit: 250
September 04, 2013, 12:19:26 AM
#58
Example: You have 500 BF chips and you are given a single work (be it with MTime 300), but don't have nonce range division (HW limitation) and don't have NeedWork implemented. When you start you wait 1.2sec (with 200 chips idle), before sending nonces back. MS sees them coming fast and sends more, but still for 300 + a bit more until your full hashrate is reached.
So the first 5 seconds you run at half speed. Not a big deal over the lifetime of the equipment. And with 500 BF chips, you should have a better solution than running getwork to a single host anyway.
staff
Activity: 4242
Merit: 8672
September 03, 2013, 11:35:56 PM
#57
Of more important note, I think I forgot to mention: There should probably be a single command to cancel all pending jobs ASAP, for use on block changes.
There are different kinds of cancellations however.  It's useful to be able to distinguish "really, don't bother, anything more you have queued will be completely worthless, cancel even if its a pipeline flush that loses work"  from "I have new work for you to start on as soon as you can without disrupting the pipeline".  ... The latter you should be able to call as fast as the communication bus allows without losing hashrate as a result.
hero member
Activity: 714
Merit: 500
Psi laju, karavani prolaze.
September 03, 2013, 10:16:45 PM
#56
Omg, this is still going?

Pages:
Jump to: