[問題] 關於Parallel Patterns Library

看板C_and_CPP作者 (小名)時間8年前 (2016/04/22 14:23), 8年前編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/1
不好意思 小弟非資工系 但是最近在寫平行運算 小弟算是外行的 但對基本的C是大致可以的 教授有一些要求 不知道是否能做到 所以以下小弟有一些問題想問板上的大大 主要是使用<ppl.h> parallel patterns library 寫平行 我用parallel_invoke 執行四項工作跑4個演算法 其中1個演算法的資源 會跟另外3個演算法溝通 做讀寫或比較 簡單來說一個演算法在跑GA 另外三個平行工作是相同的演算法 GA在做自己的流程 另外三個平行工作(以下簡稱A,B,C)會讀取GA的陣列做讀寫 當找到最佳解時會將解跟GA的母群體陣列做讀取,此時會需要用到Critical section 而我現在想要當A在GA陣列互通時 B C繼續執行(有可能跟GA陣列做存取 請問是否可行 ? 是否critical section 要宣告不同的變數 或是使用別的函式 EX: critical section cs; parallel_invoke ( [&cs] // algorithm 1 { ... } [&cs] // algorithm 2 { ... } , [&cs] // algorithm 3 { ... } , [&cs] // algorithm 4 { ... } , ) 問題(Question): 1. 關於parallel_invoke parallel_invoke可以平行執行多個工作, 想請問是否有三項工作平行執行,就是3個thread在跑???? 4項工作平行執行 就是4個thread在跑??????????? 2. 關於crtical section 想請問假如我宣告 critical section aa,bb,cc; aa.lock() { ... //執行程式 } aa.unlock() bb.lock() { ... //執行程式 } bb.unlock() 想請問不同名字的critical section有差嗎? 跑到aa.lock()時 只有一個thread在跑吧? 跑到bb.clock()時 也是只有一個thread在跑吧? 我是否可以用aa選定一個區域 當aa.lock() 只有一個區域的程式碼時 一個thread在跑aa的區域 而bb & cc的區域 還在其他thread跑?? ((這是教授的要求 3. 當我使用cs.lock() , cs.lock(); { //a[] 這個陣列正在被讀寫 } cs.lock(); 當其他平行工作想要讀取a[]這個陣列時 我能否判定a[]是否被lock住? 程式碼(Code):(請善用置底文網頁, 記得排版) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.53.151 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1461306220.A.F45.html

04/22 14:29, , 1F
1.要看ppl怎麼實作 2.看不懂你的問題
04/22 14:29, 1F
我修改了一下 稍微說明一下我做的事 主要想知道是否使用CS 當一個THREAD讀寫一個變數, 其他THREAD是否可繼續同時讀寫"另外一個變數" 還有能否用程式判定該變數是否被CS.lock住 ※ 編輯: jeff19920702 (140.114.53.151), 04/22/2016 14:47:55

04/22 18:12, , 2F
每個critical section,就只會有一個thread在裡面執行
04/22 18:12, 2F

04/22 18:12, , 3F
不同的critical section,當然是分開看
04/22 18:12, 3F

04/22 18:13, , 4F
還有,程式是你在寫,你沒給code或pseudo code,那我們
04/22 18:13, 4F

04/22 18:14, , 5F
只能跟你說都行
04/22 18:14, 5F

04/22 18:14, , 6F
因為你的敘述不是很清楚
04/22 18:14, 6F

04/22 18:14, , 7F
是阿,水晶球不是人人都有....
04/22 18:14, 7F

04/22 18:19, , 8F
關於3,要判斷a是否有被lock,是要問a這個object
04/22 18:19, 8F

04/22 18:20, , 9F
跟critical section一點關係都沒有
04/22 18:20, 9F

04/23 13:35, , 10F
ppl是run task和thread有點不同
04/23 13:35, 10F
文章代碼(AID): #1N6SDiz5 (C_and_CPP)