Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Support] Avoid using main thread for llvm::parallelFor().
The llvm::parallelFor() uses threads created by ThreadPoolExecutor as well as main thread. The index for the main thread matches with the index for the first thread created by ThreadPoolExecutor. It results in that getThreadIndex returns the same value for different threads. To avoid thread index clashing - do not use main thread for llvm::parallelFor(): parallel::TaskGroup TG; for (; Begin + TaskSize < End; Begin += TaskSize) { TG.spawn([=, &Fn] { for (size_t I = Begin, E = Begin + TaskSize; I != E; ++I) Fn(I); }); } for (; Begin != End; ++Begin) <<<< executed by main thread. Fn(Begin); <<<< return; <<<< Differential Revision: https://reviews.llvm.org/D142317 (cherry picked from commit 10a796a)
- Loading branch information