Revert "A small improvement to the parallel_for when task count > thread count (#1839)" (#1901)

This reverts commit 166b1f86db.
This commit is contained in:
Changming Sun 2019-09-24 11:17:50 -07:00 committed by GitHub
parent 686bd36210
commit aa92daecc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 17 deletions

View file

@ -39,23 +39,9 @@ void ThreadPool::ParallelFor(int32_t total, std::function<void(int32_t)> fn) {
fn(0);
return;
}
// TODO: Eigen supports a more efficient ThreadPoolDevice mechanism
// We will simply rely on the work queue and stealing in the short term.
if (total > NumThreads()) {
//The dispatcher thread will be idle at here
Barrier barrier(static_cast<unsigned int>(total));
std::function<void(int32_t)> handle_iteration = [&barrier, &fn](int iteration) {
fn(iteration);
barrier.Notify();
};
for (int32_t id = 0; id < total; ++id) {
Schedule([=, &handle_iteration]() { handle_iteration(id); });
}
barrier.Wait();
return;
}
Barrier barrier(static_cast<unsigned int>(total - 1));
std::function<void(int32_t)> handle_iteration = [&barrier, &fn](int iteration) {
fn(iteration);
@ -65,7 +51,7 @@ void ThreadPool::ParallelFor(int32_t total, std::function<void(int32_t)> fn) {
for (int32_t id = 1; id < total; ++id) {
Schedule([=, &handle_iteration]() { handle_iteration(id); });
}
//reuse the current thread for one task
fn(0);
barrier.Wait();
}

View file

@ -545,7 +545,7 @@ MlasGetMaximumThreadCount(
MLAS_UNREFERENCED_PARAMETER(ThreadPool);
#else
if (ThreadPool != nullptr) {
return ThreadPool->NumThreads();
return ThreadPool->NumThreads() + 1;
}
#endif