-
Notifications
You must be signed in to change notification settings - Fork 334
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feature] cpu register faster #854
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
keeping proc until solution
Pull Request Test Coverage Report for Build a51f626b-8e69-411e-9de6-7c4483434bf5
💛 - Coveralls |
joeylegere
reviewed
Jul 25, 2022
Also added 5ac648b |
camfairchild
requested review from
Eugene-hu
and removed request for
isabella618033
July 26, 2022 15:29
joeylegere
approved these changes
Jul 27, 2022
camfairchild
force-pushed
the
feature/cpu_register_faster
branch
from
August 3, 2022 15:15
11d35d7
to
5ac648b
Compare
camfairchild
requested review from
joeylegere and
shibshib
and removed request for
Eugene-hu
August 3, 2022 15:16
Eugene-hu
approved these changes
Aug 10, 2022
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! Nice job Vune! Left you a few comments; lets push to Nobunaga first and master later
shibshib
approved these changes
Aug 11, 2022
camfairchild
pushed a commit
that referenced
this pull request
Aug 11, 2022
* add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * make sure to exit properly if registered during * fix tests * change import to use tests * add optional type hints and None default * change to count using allowed processes * add documentation. Fix random start
camfairchild
pushed a commit
that referenced
this pull request
Aug 16, 2022
…d [feature] CUDA reg (#877) * [feature] cpu register faster (#854) * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * make sure to exit properly if registered during * fix tests * change import to use tests * add optional type hints and None default * change to count using allowed processes * add documentation. Fix random start * [hotfix] fix flags for multiproc register limit (#876) * add dot get * add to subtensor args and defaults * remove dot get because in subtensor args * typo * fix test * Fix/diff unpack bit shift (#878) * fix incorrect bit shift * move inner function out and add test for diff pack * fix test * fix call arg check in test * add assert * fix test for py37 * refactor the diff pack into two functions move the test to a unit test * fix test * [Feature] [cubit] CUDA registration solver (#868) * added cuda solver * boost versions to fix pip error * allow choosing device id * fix solution check to use keccak * adds params for cuda and dev_id to register * list devices by name during selection * add block number logging * fix calculation of hashrate * fix update interval default * add --TPB arg to register * add update_interval flag * switch back to old looping/work structure * change typing * device count is a function * stop early if wallet registered * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * change import to cubit * fix import and default * up default should have default in CLI call * add comments about params * fix config var access * add cubit as extra * handle stale pow differently check registration after failure * restrict number of processes for integration test * fix stale check * use wallet.is_registered instead * attempt to fix test issue * fix my test * oops typo * typo again ugh * remove print out * fix partly reg test * fix if solution None * fix test? * fix patch * add args for cuda to subtensor * add cuda args to reregister call * add to wallet register the cuda args * fix refs and tests * add for val test also * fix tests with rereg * fix patch for tests * add mock_register to subtensor passed instead * move register under the check for isregistered * use patch obj instead * fit patch object * Fix/move overview args to cli (#867) * move cli args to CLI and fix overview * use dot get * fix tests * add hotkeys/all_hotkeys to (un)stake * fix default * fix default in unstake * add unstake multiple * add add stake multiple * move all/hotkeys back to wallet args * convert to balance first add catch for unstake multi * fix ref to wallet * fix test patch for multi hotkeys * try to fix tests * fix tests patch * fix mock wallet length * don't use new? * fix call args get * typo * fix typo * Add/address CUDA reg changes (#879) * added cuda solver * boost versions to fix pip error * allow choosing device id * fix solution check to use keccak * adds params for cuda and dev_id to register * list devices by name during selection * add block number logging * fix calculation of hashrate * fix update interval default * add --TPB arg to register * add update_interval flag * switch back to old looping/work structure * change typing * device count is a function * stop early if wallet registered * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * change import to cubit * fix import and default * up default should have default in CLI call * add comments about params * fix config var access * add cubit as extra * handle stale pow differently check registration after failure * restrict number of processes for integration test * fix stale check * use wallet.is_registered instead * attempt to fix test issue * fix my test * oops typo * typo again ugh * remove print out * fix partly reg test * fix if solution None * fix test? * fix patch * add args for cuda to subtensor * add cuda args to reregister call * add to wallet register the cuda args * fix refs and tests * add for val test also * fix tests with rereg * fix patch for tests * add mock_register to subtensor passed instead * move register under the check for isregistered * use patch obj instead * fit patch object * fix prompt * remove unneeded if * modify POW submit to use rolling submit again * add backoff to block get from network * add test for backoff get block * suppress the dev id flag if not set * remove dest so it uses first arg * fix pow submit loop * move registration status with * fix max attempts check * remove status in subtensor.register * add submit status * change to neuron get instead * fix count * try to patch live display * fix patch * . * separate test cases * add POWNotStale and tests * add more test cases for block get with retry * fix return to None * fix arg order Co-authored-by: Eugene <etesting007@gmail.com>
robertalanm
pushed a commit
that referenced
this pull request
Aug 17, 2022
* added cuda solver * boost versions to fix pip error * allow choosing device id * fix solution check to use keccak * adds params for cuda and dev_id to register * list devices by name during selection * add block number logging * fix calculation of hashrate * fix update interval default * add --TPB arg to register * add update_interval flag * switch back to old looping/work structure * change typing * device count is a function * stop early if wallet registered * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * change import to cubit * fix import and default * up default should have default in CLI call * add comments about params * fix config var access * add cubit as extra * handle stale pow differently check registration after failure * [feature] cpu register faster (#854) * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * make sure to exit properly if registered during * fix tests * change import to use tests * add optional type hints and None default * change to count using allowed processes * add documentation. Fix random start * restrict number of processes for integration test * fix stale check * use wallet.is_registered instead * attempt to fix test issue * fix my test * oops typo * typo again ugh * remove print out * fix partly reg test * fix if solution None * fix test? * fix patch * [hotfix] fix flags for multiproc register limit (#876) * add dot get * add to subtensor args and defaults * remove dot get because in subtensor args * typo * fix test * add args for cuda to subtensor * add cuda args to reregister call * add to wallet register the cuda args * fix refs and tests * add for val test also * fix tests with rereg * Fix/diff unpack bit shift (#878) * fix incorrect bit shift * move inner function out and add test for diff pack * fix test * fix call arg check in test * add assert * fix test for py37 * refactor the diff pack into two functions move the test to a unit test * fix test * fix patch for tests * add mock_register to subtensor passed instead * move register under the check for isregistered * use patch obj instead * fit patch object * [Feature] [cubit] CUDA registration solver (#868) * added cuda solver * boost versions to fix pip error * allow choosing device id * fix solution check to use keccak * adds params for cuda and dev_id to register * list devices by name during selection * add block number logging * fix calculation of hashrate * fix update interval default * add --TPB arg to register * add update_interval flag * switch back to old looping/work structure * change typing * device count is a function * stop early if wallet registered * add update interval and num proc flag * add better number output * optimize multiproc cpu reg keeping proc until solution * fix test * change import to cubit * fix import and default * up default should have default in CLI call * add comments about params * fix config var access * add cubit as extra * handle stale pow differently check registration after failure * restrict number of processes for integration test * fix stale check * use wallet.is_registered instead * attempt to fix test issue * fix my test * oops typo * typo again ugh * remove print out * fix partly reg test * fix if solution None * fix test? * fix patch * add args for cuda to subtensor * add cuda args to reregister call * add to wallet register the cuda args * fix refs and tests * add for val test also * fix tests with rereg * fix patch for tests * add mock_register to subtensor passed instead * move register under the check for isregistered * use patch obj instead * fit patch object * Fix/move overview args to cli (#867) * move cli args to CLI and fix overview * use dot get * fix tests * add hotkeys/all_hotkeys to (un)stake * fix default * fix default in unstake * add unstake multiple * add add stake multiple * move all/hotkeys back to wallet args * convert to balance first add catch for unstake multi * fix ref to wallet * fix test patch for multi hotkeys * try to fix tests * fix tests patch * fix mock wallet length * don't use new? * fix call args get * typo * fix typo * fix prompt * remove unneeded if * modify POW submit to use rolling submit again * add backoff to block get from network * add test for backoff get block * suppress the dev id flag if not set * remove dest so it uses first arg * fix pow submit loop * move registration status with * fix max attempts check * remove status in subtensor.register * add submit status * change to neuron get instead * fix count * try to patch live display * fix patch * . * separate test cases * add POWNotStale and tests * add more test cases for block get with retry * fix return to None * fix arg order * fix indent * add test to verify solution is submitted * fix mock call * patch hex bytes instead * typo :/ * fix print out for unstake * fix indexing into mock call * call indexing * access dict not with dot * fix other indent Co-authored-by: Eugene <etesting007@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, multiprocessed CPU registration created a new pool of workers (processes) every update interval of nonces. This has some overhead and is thus inefficient.
This PR fixes that and instead keeps the pool until a potential solution is found.
From some limited testing (1-core, 6-core, 16-core) I saw a 20-30% increase in hashrate.