Add liscence and prepare for OSS release
This commit is contained in:
parent
7c6a8be2b7
commit
a4de64ea04
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Duncan Tourolle
|
||||||
|
|
||||||
|
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.
|
||||||
36
README.md
36
README.md
@ -467,7 +467,7 @@ not data.
|
|||||||
|
|
||||||
Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
||||||
|
|
||||||
| Topology | KPN private | TBB |
|
| Topology | KPN++ | TBB |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| chain depth-1 | 1.7 | **1.4** |
|
| chain depth-1 | 1.7 | **1.4** |
|
||||||
| chain depth-4 | 2.5 | **2.2** |
|
| chain depth-4 | 2.5 | **2.2** |
|
||||||
@ -479,7 +479,7 @@ Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
|||||||
|
|
||||||
Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
||||||
|
|
||||||
| Topology | KPN private | TBB |
|
| Topology | KPN++ | TBB |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| chain depth-1 | **2.1** | 3.5 |
|
| chain depth-1 | **2.1** | 3.5 |
|
||||||
| chain depth-4 | **4.3** | 5.2 |
|
| chain depth-4 | **4.3** | 5.2 |
|
||||||
@ -489,7 +489,7 @@ Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
|||||||
| wide fanout-4 | 3.4 | **1.9** |
|
| wide fanout-4 | 3.4 | **1.9** |
|
||||||
| diamond (2×2) | **4.1** | 6.1 |
|
| diamond (2×2) | **4.1** | 6.1 |
|
||||||
|
|
||||||
KPN private pools beat TBB for every chain and diamond topology at 100 µs/node, and
|
KPN++ pools beat TBB for every chain and diamond topology at 100 µs/node, and
|
||||||
match TBB within ~20% at 10 µs/node for shallow chains. TBB retains an edge on wide
|
match TBB within ~20% at 10 µs/node for shallow chains. TBB retains an edge on wide
|
||||||
fanout (serial dispatch loop vs. work-stealing pool) and at extreme oversubscription
|
fanout (serial dispatch loop vs. work-stealing pool) and at extreme oversubscription
|
||||||
depths (chain-32 at 10 µs). The remaining gap at light work is the cost of
|
depths (chain-32 at 10 µs). The remaining gap at light work is the cost of
|
||||||
@ -578,3 +578,33 @@ examples/
|
|||||||
scripts/
|
scripts/
|
||||||
render_readme.py — regenerates README.md from README.md.in
|
render_readme.py — regenerates README.md from README.md.in
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome. This project is hosted on a self-hosted Gitea
|
||||||
|
instance that accepts sign-in and registration with a GitHub account, so you
|
||||||
|
can log in with your existing GitHub identity to open issues and pull requests.
|
||||||
|
|
||||||
|
If you change any code that appears in a README snippet, edit `README.md.in`
|
||||||
|
(the template) rather than `README.md` directly, then regenerate:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake --build build --target readme # or: python scripts/render_readme.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Acknowledgments
|
||||||
|
|
||||||
|
AI tooling was used heavily throughout the development of this project,
|
||||||
|
including the design, implementation, tests, and documentation. All output
|
||||||
|
has been reviewed, but please keep this in mind when reading or building on the
|
||||||
|
code.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Released under the [MIT License](LICENSE). Copyright (c) 2026 Duncan Tourolle.
|
||||||
|
|||||||
36
README.md.in
36
README.md.in
@ -289,7 +289,7 @@ not data.
|
|||||||
|
|
||||||
Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
||||||
|
|
||||||
| Topology | KPN private | TBB |
|
| Topology | KPN++ | TBB |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| chain depth-1 | 1.7 | **1.4** |
|
| chain depth-1 | 1.7 | **1.4** |
|
||||||
| chain depth-4 | 2.5 | **2.2** |
|
| chain depth-4 | 2.5 | **2.2** |
|
||||||
@ -301,7 +301,7 @@ Overhead µs/item at **work_us = 10** (framework overhead dominates):
|
|||||||
|
|
||||||
Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
||||||
|
|
||||||
| Topology | KPN private | TBB |
|
| Topology | KPN++ | TBB |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| chain depth-1 | **2.1** | 3.5 |
|
| chain depth-1 | **2.1** | 3.5 |
|
||||||
| chain depth-4 | **4.3** | 5.2 |
|
| chain depth-4 | **4.3** | 5.2 |
|
||||||
@ -311,7 +311,7 @@ Overhead µs/item at **work_us = 100** (moderate compute, KPN wins):
|
|||||||
| wide fanout-4 | 3.4 | **1.9** |
|
| wide fanout-4 | 3.4 | **1.9** |
|
||||||
| diamond (2×2) | **4.1** | 6.1 |
|
| diamond (2×2) | **4.1** | 6.1 |
|
||||||
|
|
||||||
KPN private pools beat TBB for every chain and diamond topology at 100 µs/node, and
|
KPN++ pools beat TBB for every chain and diamond topology at 100 µs/node, and
|
||||||
match TBB within ~20% at 10 µs/node for shallow chains. TBB retains an edge on wide
|
match TBB within ~20% at 10 µs/node for shallow chains. TBB retains an edge on wide
|
||||||
fanout (serial dispatch loop vs. work-stealing pool) and at extreme oversubscription
|
fanout (serial dispatch loop vs. work-stealing pool) and at extreme oversubscription
|
||||||
depths (chain-32 at 10 µs). The remaining gap at light work is the cost of
|
depths (chain-32 at 10 µs). The remaining gap at light work is the cost of
|
||||||
@ -400,3 +400,33 @@ examples/
|
|||||||
scripts/
|
scripts/
|
||||||
render_readme.py — regenerates README.md from README.md.in
|
render_readme.py — regenerates README.md from README.md.in
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome. This project is hosted on a self-hosted Gitea
|
||||||
|
instance that accepts sign-in and registration with a GitHub account, so you
|
||||||
|
can log in with your existing GitHub identity to open issues and pull requests.
|
||||||
|
|
||||||
|
If you change any code that appears in a README snippet, edit `README.md.in`
|
||||||
|
(the template) rather than `README.md` directly, then regenerate:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake --build build --target readme # or: python scripts/render_readme.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Acknowledgments
|
||||||
|
|
||||||
|
AI tooling was used heavily throughout the development of this project,
|
||||||
|
including the design, implementation, tests, and documentation. All output
|
||||||
|
has been reviewed, but please keep this in mind when reading or building on the
|
||||||
|
code.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Released under the [MIT License](LICENSE). Copyright (c) 2026 Duncan Tourolle.
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
site_name: KPN++
|
site_name: KPN++
|
||||||
site_description: A C++20 Kahn Process Network library
|
site_description: A C++20 Kahn Process Network library
|
||||||
repo_url: https://github.com/yourusername/kpn
|
repo_url: https://gitea.tourolle.paris/dtourolle/KPN
|
||||||
repo_name: kpn
|
repo_name: dtourolle/KPN
|
||||||
|
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
|
|||||||
@ -6,9 +6,9 @@ Directive format (in README.md.in):
|
|||||||
<!-- @snippet path/to/file.cpp snippet_name -->
|
<!-- @snippet path/to/file.cpp snippet_name -->
|
||||||
|
|
||||||
Snippet tags (in C++ source files):
|
Snippet tags (in C++ source files):
|
||||||
// [snippet: snippet_name]
|
// --8<-- [start:snippet_name]
|
||||||
...content...
|
...content...
|
||||||
// [/snippet: snippet_name]
|
// --8<-- [end:snippet_name]
|
||||||
|
|
||||||
In Python files use # instead of //.
|
In Python files use # instead of //.
|
||||||
"""
|
"""
|
||||||
@ -33,8 +33,8 @@ def comment_prefix(path: Path) -> str:
|
|||||||
|
|
||||||
def extract_snippet(file_path: Path, name: str) -> str:
|
def extract_snippet(file_path: Path, name: str) -> str:
|
||||||
prefix = comment_prefix(file_path)
|
prefix = comment_prefix(file_path)
|
||||||
open_tag = f'{prefix} [snippet: {name}]'
|
open_tag = f'{prefix} --8<-- [start:{name}]'
|
||||||
close_tag = f'{prefix} [/snippet: {name}]'
|
close_tag = f'{prefix} --8<-- [end:{name}]'
|
||||||
|
|
||||||
text = file_path.read_text()
|
text = file_path.read_text()
|
||||||
lines = text.splitlines()
|
lines = text.splitlines()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user