Skip to content

Commit 4a8cb82

Browse files
committed
bump changelog for release 0.4.0 [skip ci]
1 parent 8a0f744 commit 4a8cb82

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

Diff for: README.md

+5
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ nimble install weave@#master
5555

5656
Weave requires at least Nim v1.2.0
5757

58+
## Changelog
59+
60+
The latest changes are available in the ![changelog.md](changelog.md) file.
61+
5862
## API
5963

6064
### Task parallelism
@@ -166,6 +170,7 @@ Weave uses Nim's `countProcessors()` in `std/cpuinfo`
166170

167171
- [Weave, a state-of-the-art multithreading runtime](#weave-a-state-of-the-art-multithreading-runtime)
168172
- [Installation](#installation)
173+
- [Changelog](#changelog)
169174
- [API](#api)
170175
- [Task parallelism](#task-parallelism)
171176
- [Data parallelism](#data-parallelism)

Diff for: changelog.md

+42
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,48 @@
22

33
### v0.x.x - Unreleased
44

5+
### v0.4.0 - April 2020 - "Bespoke"
6+
7+
#### Compatibility
8+
9+
Weave now targets Nim 1.2.0 instead of `devel`. This is the first Nim release
10+
that supports all requirements of Weave.
11+
12+
#### Features
13+
14+
Weave now provides an experimental "dataflow parallelism" mode.
15+
Dataflow parallelism is also known under the following names:
16+
- Graph parallelism
17+
- Stream parallelism
18+
- Pipeline parallelism
19+
- Data-driven parallelism
20+
21+
Concretely this allows delaying tasks until a condition is met.
22+
This condition is called `Pledge`.
23+
Programs can now create a "computation graph"
24+
or a pipeline of tasks ahead of time that depends on one or more `Pledge`.
25+
26+
For example a game engine might want to associate a pipeline of transformations
27+
to each frame and once the frame prerequisites are met, set the `Pledge` to `fulfilled`.
28+
29+
The `Pledge` can be combined with parallel loops and programs can wait on specific
30+
iterations or even iteration ranges for example to implement parallel video processing
31+
as soon as a subset of the frame is ready instead of waiting for the whole frame.
32+
This exposes significantly more parallelism opportunities.
33+
34+
Dataflow parallelism cannot be used with the C++ backend at the moment.
35+
36+
Weave now provides the 3 main parallelism models:
37+
- Task Parallelism (spawn/sync)
38+
- Data Parallelism (parallel for loop)
39+
- Dataflow Parallelism (delayed tasks)
40+
41+
#### Performance
42+
43+
Weave scalability has been carefully measured and improved.
44+
45+
On matrix multiplication, the traditional benchmark to classify the top 500 supercomputers of the world, Weave speedup on an 18-core CPU is 17.5x while the state-of-the-art Intel implementation using OpenMP allows 15.5x-16x speedup.
46+
547
### v0.3.0 - January 2020
648

749
`sync(Weave)` has been renamed `syncRoot(Weave)` to highlight that it is only valid on the root task in the main thread. In particular, a procedure that uses syncRoot should not be called be in a multithreaded section. This is a breaking change. In the future such changes will have a deprecation path but the library is only 2 weeks old at the moment.

0 commit comments

Comments
 (0)