<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          cpp-taskflowC++ 并行任務(wù)編程庫

          聯(lián)合創(chuàng)作 · 2023-09-29 14:43

          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;
          }

           

          瀏覽 66
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  加勒比蜜桃日韩成人 | 亚洲视频一区 | 国产V在线观看 | 天天视频有没有黄色。 | 三级片在线免费直播成人电影 |