-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Parallel algorithms POC #559
base: master
Are you sure you want to change the base?
Conversation
try execution::par_unseq for inhibition in SP. Results: takes much longer than seq.
This reverts commit b27b40c.
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.
Please review if there's an obvious error or if the MNIST_SP.cpp settings may be too artificial.
Otherwise my parallelization effort using c++17 TS Parallel has hit the reality.
- The problem is memory bound
execution::par_unseq
really puts all threads to a good use- MNIST is still slower than single-thread!
- significantly: 60s (single) vs 240+s (parallel)
- likely broken cache locality
- or even CPU throttling (or boosting the only signle thread running)
@@ -844,19 +845,25 @@ void SpatialPooler::inhibitColumnsGlobal_(const vector<Real> &overlaps, | |||
// faster than a regular sort because it stops after it partitions the | |||
// elements about the Nth element, with all elements on their correct side of | |||
// the Nth element. | |||
std::nth_element( | |||
tNth.start(); | |||
std::nth_element(htm::parallel::mode, |
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.
inhibition identified as one of the slowest methods in SP.
nth_element
as the most significant in global inh.
parallel TS
For #214 #254
This is for your interest, not intended for merging yet.