Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3, llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1, llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1, llvmorg-6.0.1, llvmorg-6.0.1-rc3 |
|
#
9b8b0794 |
| 13-Jun-2018 |
Zachary Turner <zturner@google.com> |
Revert "Enable ThreadPool to queue tasks that return values."
This is failing to compile when LLVM_ENABLE_THREADS is false, and the fix is not immediately obvious, so reverting while I look into it.
Revert "Enable ThreadPool to queue tasks that return values."
This is failing to compile when LLVM_ENABLE_THREADS is false, and the fix is not immediately obvious, so reverting while I look into it.
llvm-svn: 334658
show more ...
|
#
1b76a128 |
| 13-Jun-2018 |
Zachary Turner <zturner@google.com> |
Enable ThreadPool to support tasks that return values.
Previously ThreadPool could only queue async "jobs", i.e. work that was done for its side effects and not for its result. It's useful occasion
Enable ThreadPool to support tasks that return values.
Previously ThreadPool could only queue async "jobs", i.e. work that was done for its side effects and not for its result. It's useful occasionally to queue async work that returns a value. From an API perspective, this is very intuitive. The previous API just returned a shared_future<void>, so all we need to do is make it return a shared_future<T>, where T is the type of value that the operation returns.
Making this work required a little magic, but ultimately it's not too bad. Instead of keeping a shared queue<packaged_task<void()>> we just keep a shared queue<unique_ptr<TaskBase>>, where TaskBase is a class with a pure virtual execute() method, then have a templated derived class that stores a packaged_task<T()>. Everything else works out pretty cleanly.
Differential Revision: https://reviews.llvm.org/D48115
llvm-svn: 334643
show more ...
|
Revision tags: llvmorg-6.0.1-rc2, llvmorg-6.0.1-rc1, llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1 |
|
#
86f0b70f |
| 13-Dec-2017 |
Hans Wennborg <hans@hanshq.net> |
Speculative build fix for lld on Linux after Michael's #include removals
llvm-svn: 320645
|
#
da9f4026 |
| 13-Dec-2017 |
Michael Zolotukhin <mzolotukhin@apple.com> |
Remove redundant includes from lib/Support.
llvm-svn: 320627
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2 |
|
#
c723f657 |
| 27-Nov-2017 |
Jan Korous <jkorous@apple.com> |
[Support] Fix locking of shared variable in threadpool
llvm-svn: 319027
|
Revision tags: llvmorg-5.0.1-rc1 |
|
#
8c0ff950 |
| 04-Oct-2017 |
Rafael Espindola <rafael.espindola@gmail.com> |
Bring r314809 back.
But now include a check for CPU_COUNT so we still build on 10 year old versions of glibc.
Original message:
Use sched_getaffinity instead of std::thread::hardware_concurrency.
Bring r314809 back.
But now include a check for CPU_COUNT so we still build on 10 year old versions of glibc.
Original message:
Use sched_getaffinity instead of std::thread::hardware_concurrency.
The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thread affinity into consideration.
With this change a llvm program that can execute in only 2 cores will use 2 threads, even if the machine has 32 cores.
This makes benchmarking a lot easier, but should also help if someone doesn't want to use all cores for compilation for example.
llvm-svn: 314931
show more ...
|
#
bef94bcb |
| 04-Oct-2017 |
Daniel Neilson <dneilson@azul.com> |
Revert D38481 due to missing cmake check for CPU_COUNT
Summary: This reverts D38481. The change breaks systems with older versions of glibc. It injects a use of CPU_COUNT() from sched.h without chec
Revert D38481 due to missing cmake check for CPU_COUNT
Summary: This reverts D38481. The change breaks systems with older versions of glibc. It injects a use of CPU_COUNT() from sched.h without checking to ensure that the function exists first.
Reviewers:
Subscribers:
llvm-svn: 314922
show more ...
|
#
6e182fba |
| 03-Oct-2017 |
Rafael Espindola <rafael.espindola@gmail.com> |
Use sched_getaffinity instead of std::thread::hardware_concurrency.
The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thre
Use sched_getaffinity instead of std::thread::hardware_concurrency.
The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thread affinity into consideration.
With this change a llvm program that can execute in only 2 cores will use 2 threads, even if the machine has 32 cores.
This makes benchmarking a lot easier, but should also help if someone doesn't want to use all cores for compilation for example.
llvm-svn: 314809
show more ...
|
Revision tags: llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1 |
|
#
b78a68db |
| 14-Jun-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
Support: Remove MSVC 2013 workarounds in ThreadPool class.
I have confirmed that these are no longer needed with MSVC 2015.
Differential Revision: https://reviews.llvm.org/D34187
llvm-svn: 305347
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1 |
|
#
0f0d5d8f |
| 28-Nov-2016 |
Davide Italiano <davide@freebsd.org> |
[ThreadPool] Rollback recent changes until I figure out the breakage.
llvm-svn: 288018
|
#
3ea0bfa7 |
| 28-Nov-2016 |
Davide Italiano <davide@freebsd.org> |
[ThreadPool] Simplify the interface. NFCI.
The callers don't use the return value. Found by Michael Spencer.
llvm-svn: 288016
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
#
70378837 |
| 22-Jun-2016 |
Jason Henline <jhen@google.com> |
Removing whitespace from test commit rL273447
Undoing the trivial change I introduced in rL273447.
llvm-svn: 273449
|
#
4fe43f9b |
| 22-Jun-2016 |
Jason Henline <jhen@google.com> |
Add whitespace to check commit access
No functional changes. Just adding whitespace in a comment in order to check that I am able to push a commit to the repo.
llvm-svn: 273447
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
9e479e47 |
| 06-Apr-2016 |
Justin Lebar <jlebar@google.com> |
Fix a race condition in support library ThreadPool.
By running TSAN on the ThreadPool unit tests it was discovered that the threads in the pool can pop tasks off the queue at the same time the "wait
Fix a race condition in support library ThreadPool.
By running TSAN on the ThreadPool unit tests it was discovered that the threads in the pool can pop tasks off the queue at the same time the "wait" routine is trying to check if the task queue is empty. This patch fixes this problem by checking for active threads in the waiter before checking whether the queue is empty.
Patch by Jason Henline.
Differential Revision: http://reviews.llvm.org/D18811
Reviewers: joker.eph, jlebar llvm-svn: 265618
show more ...
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1 |
|
#
bebca1c4 |
| 15-Dec-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Fix MSVC build with LLVM_ENABLE_THREADS=OFF
Follow-up to the ThreadPool implementation.
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 255621
|
#
33a7ea4b |
| 15-Dec-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual ta
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual task can be synchronize using the returned future, or the client can block on the full queue completion.
In case LLVM is configured with Threading disabled, it falls back to sequential execution using std::async with launch:deferred.
This is intended to support parallelism for ThinLTO processing in linker plugin, but is generic enough for any other uses.
This is a recommit of r255444 ; trying to workaround a bug in the MSVC 2013 standard library. I think I was hit by:
http://connect.microsoft.com/VisualStudio/feedbackdetail/view/791185/std-packaged-task-t-where-t-is-void-or-a-reference-class-are-not-movable
Recommit of r255589, trying to please g++ as well.
Differential Revision: http://reviews.llvm.org/D15464
From: mehdi_amini <mehdi_amini@91177308-0d34-0410-b5e6-96231b3b80d8> llvm-svn: 255593
show more ...
|
#
ef0ef286 |
| 15-Dec-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual ta
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual task can be synchronize using the returned future, or the client can block on the full queue completion.
In case LLVM is configured with Threading disabled, it falls back to sequential execution using std::async with launch:deferred.
This is intended to support parallelism for ThinLTO processing in linker plugin, but is generic enough for any other uses.
This is a recommit of r255444 ; trying to workaround a bug in the MSVC 2013 standard library. I think I was hit by:
http://connect.microsoft.com/VisualStudio/feedbackdetail/view/791185/std-packaged-task-t-where-t-is-void-or-a-reference-class-are-not-movable
Differential Revision: http://reviews.llvm.org/D15464
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 255589
show more ...
|
#
396abbb6 |
| 12-Dec-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual ta
Add a C++11 ThreadPool implementation in LLVM
This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual task can be synchronize using the returned future, or the client can block on the full queue completion.
In case LLVM is configured with Threading disabled, it falls back to sequential execution using std::async with launch:deferred.
This is intended to support parallelism for ThinLTO processing in linker plugin, but is generic enough for any other uses.
Differential Revision: http://reviews.llvm.org/D15464
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 255444
show more ...
|