簡體   English   中英

C++ 並行性。 在二維數組上實現並行循環

[英]C++ parallelism. Implementing parallelism looping on a 2D array

好的,alphaBetaMiniMax 是遞歸的並在 2d 板上循環 這在這里有點簡化,但是執行時間的任何改進對於它可以看到的前進步數來說都是一個巨大的勝利。
只需 2 個額外的動作就可以產生真正的不同。

問題。 二維陣列本身代表一個方格板,需要優化為平行。 我知道有幾種用於拆分外部 for 循環的選項,但內部 for 循環很復雜,可能需要保持原版 for。

foo() {
  ....
  for (i=0; i<8; i++) {
    for (j=calibrate(i); j<8; j=j+2) {
      // to account for checkerboard pattern, 
      // calibrate offsets board color where applicable
      makeMove(i,j)
      foo();
    }
  }

這是一種過度簡化,我(認為我)對代碼進行了結構化和設置,以避免數據競爭和死鎖。 此處省略。

我的問題是如何處理外循環。

for_each 有並行執行選項,但我不知道它是否適用於內部,另外我需要每個線程知道它在哪一行(我是什么),或者誰知道每個板會發生什么。 我有關於如何實現這一目標的理論,但僅此而已。

我只需要朝着正確的方向輕推。

這個只有頭文件的庫可能會幫助你。 它代表您處理線程管理。 如果每一行i都獨立於其他行,您可以將內部循環包裝為一個函數,讓庫為每一行並行運行它並收集結果,如 Github 中的示例所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM