cpp-taskflowC++ 并行任務(wù)編程庫
cpp-taskflow 是一個開源的 C++ 并行任務(wù)編程庫,cpp-tastflow 非常快,只包含頭文件,可以幫你快速編寫包含復(fù)雜任務(wù)依賴的并行程序。
與現(xiàn)有的并行任務(wù)編程庫(如OpenMP Tasking和Intel TBB FlowGraph)處理復(fù)雜的并行工作負(fù)載相比,Cpp-Taskflow更快,更具表現(xiàn)力,更易于實現(xiàn)嵌入式集成。
Cpp-Taskflow 使您可以快速實現(xiàn)包含常規(guī)和不規(guī)則計算模式的任務(wù)分解策略,以及高效的工作竊取調(diào)度程序,以優(yōu)化您的多線程性能。
| Without Cpp-Taskflow | With Cpp-Taskflow |
|---|---|
Cpp-Taskflow具有靜態(tài)任務(wù)和動態(tài)任務(wù)的統(tǒng)一界面,允許用戶以自然的習(xí)語快速掌握我們的并行任務(wù)編程模型。
| Static Tasking | Dynamic Tasking |
|---|---|
Cpp-Taskflow提供了一個可組合的任務(wù)依賴圖界面,可同時實現(xiàn)高性能和高開發(fā)人員生產(chǎn)力。
Cpp-Taskflow允許用戶通過chrome:// tracing輕松監(jiān)控線程活動并分析其程序的性能。
Cpp-Taskflow是DARPA IDEA研究計劃的一部分。 我們致力于為并行計算的學(xué)術(shù)和工業(yè)研究項目提供可靠的開發(fā)支持。 查看那些在使用Cpp-Taskflow的用戶怎么說:
- "Cpp-Taskflow is the cleanest Task API I've ever seen." damienhocking
- "Cpp-Taskflow has a very simple and elegant tasking interface. The performance also scales very well." totalgee
- "Cpp-Taskflow lets me handle parallel processing in a smart way." Hayabusa
- "Best poster award for open-source parallel programming library." Cpp Conference 2018
示例代碼:
#include <taskflow/taskflow.hpp> // Cpp-Taskflow is header-only
int main(){
tf::Executor executor;
tf::Taskflow taskflow;
auto [A, B, C, D] = taskflow.emplace(
[] () { std::cout << "TaskA\n"; }, // task dependency graph
[] () { std::cout << "TaskB\n"; }, //
[] () { std::cout << "TaskC\n"; }, // +---+
[] () { std::cout << "TaskD\n"; } // +---->| B |-----+
); // | +---+ |
// +---+ +-v-+
A.precede(B); // A runs before B // | A | | D |
A.precede(C); // A runs before C // +---+ +-^-+
B.precede(D); // B runs before D // | +---+ |
C.precede(D); // C runs before D // +---->| C |-----+
// +---+
executor.run(taskflow).wait();
return 0;
}
評論
圖片
表情
