| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 464f90f commit 0216d03
31 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,11 +11,11 @@ and simultaneous high productivity. | |||
| 11 | 11 | ||
| 12 | 12 | # Why Cpp-Taskflow? | |
| 13 | 13 | ||
| 14 | - Cpp-Taskflow is by far faster, more expressive, and easier for drop-in integration | ||
| 15 | - than existing task programming frameworks such as [OpenMP Tasking][OpenMP Tasking] | ||
| 16 | - and [Intel TBB FlowGraph][TBB FlowGraph] in handling complex parallel workloads. | ||
| 14 | + Cpp-Taskflow is faster, more expressive, and easier for drop-in integration | ||
| 15 | + than many of existing task programming frameworks | ||
| 16 | + in handling complex parallel workloads. | ||
| 17 | 17 | ||
| 18 | -  | ||
| 18 | +  | ||
| 19 | 19 | ||
| 20 | 20 | Cpp-Taskflow lets you quickly implement task decomposition strategies | |
| 21 | 21 | that incorporate both regular and irregular compute patterns, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -119,7 +119,12 @@ <h2><a class="anchor" id="GeneralQuestion7"></a> | |||
| 119 | 119 | <h2><a class="anchor" id="GeneralQuestion8"></a> | |
| 120 | 120 | Q8: What is the overhead of taskflow?</h2> | |
| 121 | 121 | <p>Creating a taskflow has certain overhead. For example, creating a task and a dependency takes about 61 and 14 nanoseconds in our system (Intel 4-core CPU at 2.00GHz). The time is amortized over 1M operations, since we have implemented an object pool to recycle tasks for minimal overhead.</p> | |
| 122 | - <hr/> | ||
| 122 | + <h2><a class="anchor" id="GeneralQuestion9"></a> | ||
| 123 | + Q9: How does it compare to existing task programming systems?</h2> | ||
| 124 | + <p>There is a large amount of work on programming systems (e.g., StarPU, Intel TBB, OpenMP, PaRSEC, Kokkos, HPX) in the interest of simplifying the programming complexity of parallel and heterogeneous computing. Each of these systems has its own pros and cons and deserves a reason to exist. However, they do have some problems, particularly from the standpoint of ease of use, static control flow, and scheduling efficiency. Cpp-Taskflow addresses these limitations through a simple, expressive, and transparent graph programming model.</p> | ||
| 125 | + <h2><a class="anchor" id="GeneralQuestion10"></a> | ||
| 126 | + Q10: Do you try to simplify the GPU kernel programming?</h2> | ||
| 127 | + <p>No, we do not develop new programming models to simplify the kernel programming. The rationale is simple: Writing efficient kernels requires domain-specific knowledge and developers often require direct access to the native GPU programming interface. High-level kernel programming models or abstractions all come with restricted applicability. Despite non-trivial kernel programming, we believe what makes heterogeneous computing difficult is the surrounding tasks. A mistake made in task scheduling can outweigh all speed-up benefits from a highly optimized kernel. Therefore, Cpp-Taskflow focuses on heterogeneous tasking that affects the overall system performance to a large extent. </p><hr/> | ||
| 123 | 128 | <h1><a class="anchor" id="ProgrammingQuestions"></a> | |
| 124 | 129 | Programming Questions</h1> | |
| 125 | 130 | <h2><a class="anchor" id="ProgrammingQuestions1"></a> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -94,9 +94,9 @@ | |||
| 94 | 94 | <div class="contents"> | |
| 95 | 95 | <div class="textblock"><h1><a class="anchor" id="ModernCppParallelTaskProgrammingLibrary"></a> | |
| 96 | 96 | Modern C++ Parallel Task Programming</h1> | |
| 97 | - <p>Cpp-Taskflow helps you quickly write parallel task programs with high performance scalability and simultaneous high productivity. It is by far faster, more expressive, fewer lines of code, and easier for drop-in integration than existing parallel task programming frameworks such as <a href="https://www.openmp.org/spec-html/5.0/openmpsu99.html">OpenMP Tasking</a> and Intel <a href="https://www.threadingbuildingblocks.org/tutorial-intel-tbb-flow-graph">Thread Building Block (TBB) FlowGraph</a>.</p> | ||
| 97 | + <p>Cpp-Taskflow helps you quickly write parallel task programs with high performance scalability and simultaneous high productivity. It is faster, more expressive, fewer lines of code, and easier for drop-in integration than many of existing task programming frameworks.</p> | ||
| 98 | 98 | <div class="image"> | |
| 99 | - <img src="performance.jpg" alt="performance.jpg" width="95%"/> | ||
| 99 | + <img src="performance.png" alt="performance.png" width="95%"/> | ||
| 100 | 100 | </div> | |
| 101 | 101 | <p>Cpp-Taskflow is committed to support both academic and industry research projects, making it reliable and cost-effective for long-term and large-scale developments. Our users say:</p> | |
| 102 | 102 | <ul> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -54,7 +54,9 @@ var NAVTREE = | |||
| 54 | 54 | [ "Q5: What is the weird hex value, like 0x7fc39d402ab0, in the dumped graph?", "FAQ.html#GeneralQuestion5", null ], | |
| 55 | 55 | [ "Q6: Does Cpp-Taskflow have backward compatibility with C++03/98/11?", "FAQ.html#GeneralQuestion6", null ], | |
| 56 | 56 | [ "Q7: How does Cpp-Taskflow schedule tasks?", "FAQ.html#GeneralQuestion7", null ], | |
| 57 | - [ "Q8: What is the overhead of taskflow?", "FAQ.html#GeneralQuestion8", null ] | ||
| 57 | + [ "Q8: What is the overhead of taskflow?", "FAQ.html#GeneralQuestion8", null ], | ||
| 58 | + [ "Q9: How does it compare to existing task programming systems?", "FAQ.html#GeneralQuestion9", null ], | ||
| 59 | + [ "Q10: Do you try to simplify the GPU kernel programming?", "FAQ.html#GeneralQuestion10", null ] | ||
| 58 | 60 | ] ], | |
| 59 | 61 | [ "Programming Questions", "FAQ.html#ProgrammingQuestions", [ | |
| 60 | 62 | [ "Q1: What is the difference between Cpp-Taskflow threads and workers?", "FAQ.html#ProgrammingQuestions1", null ], | |
@@ -87,7 +89,7 @@ var NAVTREE = | |||
| 87 | 89 | var NAVTREEINDEX = | |
| 88 | 90 | [ | |
| 89 | 91 | ".html", | |
| 90 | - "kmeans.html" | ||
| 92 | + "install.html#BAISettingUpCpp-Taskflow" | ||
| 91 | 93 | ]; | |
| 92 | 94 | ||
| 93 | 95 | var SYNCONMSG = 'click to disable panel synchronisation'; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,13 +5,15 @@ var NAVTREEINDEX0 = | |||
| 5 | 5 | "Examples.html":[4], | |
| 6 | 6 | "FAQ.html":[5], | |
| 7 | 7 | "FAQ.html#GeneralQuestion1":[5,0,0], | |
| 8 | + "FAQ.html#GeneralQuestion10":[5,0,9], | ||
| 8 | 9 | "FAQ.html#GeneralQuestion2":[5,0,1], | |
| 9 | 10 | "FAQ.html#GeneralQuestion3":[5,0,2], | |
| 10 | 11 | "FAQ.html#GeneralQuestion4":[5,0,3], | |
| 11 | 12 | "FAQ.html#GeneralQuestion5":[5,0,4], | |
| 12 | 13 | "FAQ.html#GeneralQuestion6":[5,0,5], | |
| 13 | 14 | "FAQ.html#GeneralQuestion7":[5,0,6], | |
| 14 | 15 | "FAQ.html#GeneralQuestion8":[5,0,7], | |
| 16 | + "FAQ.html#GeneralQuestion9":[5,0,8], | ||
| 15 | 17 | "FAQ.html#GeneralQuestions":[5,0], | |
| 16 | 18 | "FAQ.html#ProgrammingQuestions":[5,1], | |
| 17 | 19 | "FAQ.html#ProgrammingQuestions1":[5,1,0], | |
@@ -233,8 +235,8 @@ var NAVTREEINDEX0 = | |||
| 233 | 235 | "graphtraversal.html#GraphTraversalProblemFormulation":[4,4,0], | |
| 234 | 236 | "graphtraversal.html#GraphTraversalStaticTraversal":[4,4,2], | |
| 235 | 237 | "hierarchy.html":[7,2], | |
| 236 | - "index.html":[], | ||
| 237 | 238 | "index.html":[0], | |
| 239 | + "index.html":[], | ||
| 238 | 240 | "index.html#ASimpleFirstProgram":[0,6], | |
| 239 | 241 | "index.html#CompileAndRunYourFirstProgram":[0,7], | |
| 240 | 242 | "index.html#ComposableTasking":[0,3], | |
@@ -247,7 +249,5 @@ var NAVTREEINDEX0 = | |||
| 247 | 249 | "index.html#SupportedCompilers":[0,8], | |
| 248 | 250 | "install.html":[1], | |
| 249 | 251 | "install.html#BAIBuildExamplesTestsAndBenchmarks":[1,3], | |
| 250 | - "install.html#BAICompileAndLinkFlag":[1,1], | ||
| 251 | - "install.html#BAISettingUpCpp-Taskflow":[1,0], | ||
| 252 | - "install.html#BAISupportedCompilers":[1,2] | ||
| 252 | + "install.html#BAICompileAndLinkFlag":[1,1] | ||
| 253 | 253 | }; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,5 +1,7 @@ | |||
| 1 | 1 | var NAVTREEINDEX1 = | |
| 2 | 2 | { | |
| 3 | + "install.html#BAISettingUpCpp-Taskflow":[1,0], | ||
| 4 | + "install.html#BAISupportedCompilers":[1,2], | ||
| 3 | 5 | "kmeans.html":[4,2], | |
| 4 | 6 | "kmeans.html#BuiltInPredicate":[4,2,3], | |
| 5 | 7 | "kmeans.html#KMeansBenchmarking":[4,2,4], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -58,6 +58,27 @@ takes about 61 and 14 nanoseconds in our system (Intel 4-core CPU at 2.00GHz). | |||
| 58 | 58 | The time is amortized over 1M operations, since we have implemented an object pool | |
| 59 | 59 | to recycle tasks for minimal overhead. | |
| 60 | 60 | ||
| 61 | + @subsection GeneralQuestion9 Q9: How does it compare to existing task programming systems? | ||
| 62 | + | ||
| 63 | + There is a large amount of work on programming systems (e.g., StarPU, Intel TBB, OpenMP, PaRSEC, Kokkos, HPX) in the interest of simplifying the | ||
| 64 | + programming complexity of parallel and heterogeneous computing. | ||
| 65 | + Each of these systems has its own pros and cons and deserves a reason to exist. | ||
| 66 | + However, they do have some problems, particularly from the standpoint of ease of use, | ||
| 67 | + static control flow, and scheduling efficiency. | ||
| 68 | + Cpp-Taskflow addresses these limitations through a simple, expressive, and transparent | ||
| 69 | + graph programming model. | ||
| 70 | + | ||
| 71 | + @subsection GeneralQuestion10 Q10: Do you try to simplify the GPU kernel programming? | ||
| 72 | + | ||
| 73 | + No, we do not develop new programming models to simplify the kernel programming. | ||
| 74 | + The rationale is simple: Writing efficient kernels requires domain-specific knowledge | ||
| 75 | + and developers often require direct access to the native GPU programming interface. | ||
| 76 | + High-level kernel programming models or abstractions all come with restricted applicability. | ||
| 77 | + Despite non-trivial kernel programming, we believe what makes heterogeneous computing difficult | ||
| 78 | + is the surrounding tasks. | ||
| 79 | + A mistake made in task scheduling can outweigh all speed-up benefits from a highly optimized kernel. | ||
| 80 | + Therefore, Cpp-Taskflow focuses on heterogeneous tasking | ||
| 81 | + that affects the overall system performance to a large extent. | ||
| 61 | 82 | ||
| 62 | 83 | ---- | |
| 63 | 84 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,10 +6,10 @@ namespace tf { | |||
| 6 | 6 | ||
| 7 | 7 | Cpp-Taskflow helps you quickly write parallel task programs with high performance scalability | |
| 8 | 8 | and simultaneous high productivity. | |
| 9 | - It is by far faster, more expressive, fewer lines of code, and easier for drop-in integration | ||
| 10 | - than existing parallel task programming frameworks such as <a href="https://www.openmp.org/spec-html/5.0/openmpsu99.html">OpenMP Tasking</a> and Intel <a href="https://www.threadingbuildingblocks.org/tutorial-intel-tbb-flow-graph">Thread Building Block (TBB) FlowGraph</a>. | ||
| 9 | + It is faster, more expressive, fewer lines of code, and easier for drop-in integration | ||
| 10 | + than many of existing task programming frameworks. | ||
| 11 | 11 | ||
| 12 | - @image html images/performance.jpg width=95% | ||
| 12 | + @image html images/performance.png width=95% | ||
| 13 | 13 | ||
| 14 | 14 | Cpp-Taskflow is committed to support both academic and industry research projects, | |
| 15 | 15 | making it reliable and cost-effective for long-term and large-scale developments. | |
| Back | FazBrowse Home | New Git URL |
0 commit comments