mirror of
https://github.com/bshoshany/thread-pool.git
synced 2026-07-22 19:43:00 +04:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc66b8a222 | |||
| 31efea058c |
+21
-21
@@ -1,21 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Barak Shoshany
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Barak Shoshany
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
[](https://doi.org/10.5281/zenodo.4742687)
|
||||
[](https://arxiv.org/abs/2105.00613)
|
||||
[](https://github.com/bshoshany/thread-pool/blob/master/LICENSE.txt)
|
||||

|
||||

|
||||

|
||||
[](https://github.com/bshoshany/thread-pool)
|
||||
[](https://twitter.com/BarakShoshany)
|
||||
|
||||
# A C++17 Thread Pool for High-Performance Scientific Computing
|
||||
|
||||
**Barak Shoshany**\
|
||||
Department of Physics, Brock University,\
|
||||
1812 Sir Isaac Brock Way, St. Catharines, Ontario, L2S 3A1, Canada\
|
||||
[baraksh@gmail.com](mailto:baraksh@gmail.com) | [https://baraksh.com/](https://baraksh.com/)\
|
||||
Companion paper: [arXiv:2105.00613](https://arxiv.org/abs/2105.00613)
|
||||
[bshoshany@brocku.ca](mailto:bshoshany@brocku.ca) | [https://baraksh.com/](https://baraksh.com/)\
|
||||
Companion paper: [arXiv:2105.00613](https://arxiv.org/abs/2105.00613)\
|
||||
DOI: [doi:10.5281/zenodo.4742687](https://doi.org/10.5281/zenodo.4742687)
|
||||
|
||||
<!-- TOC depthFrom:2 -->
|
||||
|
||||
@@ -33,7 +43,7 @@ Companion paper: [arXiv:2105.00613](https://arxiv.org/abs/2105.00613)
|
||||
- [Dual Intel Xeon Gold 6148 (80 threads)](#dual-intel-xeon-gold-6148-80-threads)
|
||||
- [Version history](#version-history)
|
||||
- [Feedback](#feedback)
|
||||
- [Author and copyright](#author-and-copyright)
|
||||
- [Copyright and citing](#copyright-and-citing)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
@@ -65,12 +75,12 @@ As demonstrated in the performance tests [below](#performance-tests), using our
|
||||
|
||||
* **Fast:**
|
||||
* Built from scratch with maximum performance in mind.
|
||||
* Suitable for use in high-performance computing clusters with a very large number of CPU cores.
|
||||
* Suitable for use in high-performance computing nodes with a very large number of CPU cores.
|
||||
* Compact code, to reduce both compilation time and binary size.
|
||||
* Reusing threads avoids the overhead of creating and destroying them for individual tasks.
|
||||
* A task queue ensures that there are never more threads running in parallel than allowed by the hardware.
|
||||
* **Lightweight:**
|
||||
* Only ~160 lines of code, excluding comments, blank lines, and the two optional helper classes.
|
||||
* Only ~180 lines of code, excluding comments, blank lines, and the two optional helper classes.
|
||||
* Single header file: simply `#include "thread_pool.hpp"`.
|
||||
* Header-only: no need to install or build the library.
|
||||
* Self-contained: no external requirements or dependencies. Does not require OpenMP or any other multithreading APIs. Only uses the C++ standard library, and works with any C++17-compliant compiler.
|
||||
@@ -691,6 +701,11 @@ An interesting point to notice is that for **single-threaded** calculations (1 b
|
||||
<a id="markdown-version-history" name="version-history"></a>
|
||||
## Version history
|
||||
|
||||
* Version 1.6 (2021-05-26)
|
||||
* Since MSVC does not interpret `and` as `&&` by default, the previous release did not compile with MSVC unless the `/permissive-` or `/Za` compiler flags were used. This has been fixed in this version, and the code now successfully compiles with GCC, Clang, and MSVC. See [this pull request](https://github.com/bshoshany/thread-pool/pull/10).
|
||||
* Version 1.5 (2021-05-07)
|
||||
* This library now has a DOI for citation purposes. Information on how to cite it in publications has been added to the source code and to `README.md`.
|
||||
* Added GitHub badges to `README.md`.
|
||||
* Version 1.4 (2021-05-05)
|
||||
* Added three new public member functions to monitor the tasks submitted to the pool:
|
||||
* `get_tasks_queued()` gets the number of tasks currently waiting in the queue to be executed by the threads.
|
||||
@@ -725,9 +740,29 @@ An interesting point to notice is that for **single-threaded** calculations (1 b
|
||||
|
||||
If you would like a request any additional features, or if you encounter any bugs, please feel free to [open a new issue](https://github.com/bshoshany/thread-pool/issues)!
|
||||
|
||||
<a id="markdown-author-and-copyright" name="author-and-copyright"></a>
|
||||
## Author and copyright
|
||||
<a id="markdown-copyright-and-citing" name="copyright-and-citing"></a>
|
||||
## Copyright and citing
|
||||
|
||||
Copyright (c) 2021 [Barak Shoshany](http://baraksh.com). Licensed under the [MIT license](LICENSE.txt). If you found this code useful, please consider providing a link to the [GitHub repository](https://github.com/bshoshany/thread-pool) and/or citing the [companion paper](https://arxiv.org/abs/2105.00613):
|
||||
Copyright (c) 2021 [Barak Shoshany](http://baraksh.com). Licensed under the [MIT license](LICENSE.txt).
|
||||
|
||||
* Barak Shoshany, "A C++17 Thread Pool for High-Performance Scientific Computing", [arXiv:2105.00613](https://arxiv.org/abs/2105.00613) (May 2021)
|
||||
If you use this library in published research, please cite it as follows:
|
||||
|
||||
* Barak Shoshany, "A C++17 Thread Pool for High-Performance Scientific Computing", [doi:10.5281/zenodo.4742687](https://doi.org/10.5281/zenodo.4742687), [arXiv:2105.00613](https://arxiv.org/abs/2105.00613) (May 2021)
|
||||
|
||||
You can use the following BibTeX entry:
|
||||
|
||||
```none
|
||||
@article{Shoshany2021_ThreadPool,
|
||||
archiveprefix = {arXiv},
|
||||
author = {Barak Shoshany},
|
||||
doi = {10.5281/zenodo.4742687},
|
||||
eid = {arXiv:2105.00613},
|
||||
eprint = {2105.00613},
|
||||
journal = {arXiv e-prints},
|
||||
keywords = {Computer Science - Distributed, Parallel, and Cluster Computing, D.1.3, D.1.5},
|
||||
month = {May},
|
||||
primaryclass = {cs.DC},
|
||||
title = {{A C++17 Thread Pool for High-Performance Scientific Computing}},
|
||||
year = {2021}
|
||||
}
|
||||
```
|
||||
|
||||
+503
-498
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user