Skip to content

Commit

Permalink
Add README section to compare to TaskFlow
Browse files Browse the repository at this point in the history
Summary: Add informal comparison to TaskFlow in the README.

Reviewed By: elliotsegal-fb

Differential Revision: D66258087

fbshipit-source-id: 3622bc75c10e57ee2e01f71e2867a396c9e6032f
  • Loading branch information
graphicsMan authored and facebook-github-bot committed Nov 27, 2024
1 parent c3a7a3d commit 2251f02
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ Folly is a library from Meta that has several concurrency utilities including th

Folly does not have a parallel loop concept, nor task sets and parallel pipelines. When comparing Folly's futures against dispenso's, dispenso tries to maintain an API that is closely matched to a combination of std::experimental::future and std::experimental::shared_future (dispenso's futures are all shared). Additionally, for compute-bound applications, dispenso's futures tend to be much faster and lighter-weight than Folly's.

### TaskFlow
TaskFlow is a library that seems to have been initially designed for parallel execution of task graphs. It has some similarities with Dispenso: It has a backing thread pool, it has a parallel_for-like functionality, task graphs, and pipelines. There are also utilities in each library that don't overlap (yet). TaskFlow task graphs are pretty high performance, and are sometimes faster than dispenso for full graph execution (depending on platform). Dispenso has higher-performance task graph building times and has the ability to run partially-modified task graphs much faster. Dispenso's parallel_for seems to be much lower overhead than TaskFlow's for_each_index (Dispenso is 10x to 100x faster in overhead benchmarks). Dispenso's pipelines are also much faster and much simpler to construct than TaskFlow's in our benchmarks.

### Grand central dispatch, new std C++ parallelism, others
We haven't done a strong comparison vs these other mechanisms. GCD is an Apple technology used by many people for Mac and iOS platforms, and there are ports to other platforms (though the mechanism for submitting closures is different). Much of the C++ parallel algorithms work is still TBD, but we would be very interested to enable dispenso to be a basis for parallelization of those algorithms. Additionally, we have interest in enabling dispenso to back the new coroutines interface. We'd be interested in any contributions people would like to make around benchmarking/summarizing other task parallelism libraries, and also integration with C++ parallel algorithms and coroutines.

Expand Down

0 comments on commit 2251f02

Please sign in to comment.