我有一個數據科學應用的異步並行程序的想法。考慮一個擁有一個「主」和20個「奴隸」的共享存儲系統。它將在主節點上有一個矩陣;奴隸會讀矩陣的值,使用隨機數和返回值將修改矩陣的一些元素(異步做一些操作,允許覆寫,即誰來到第2可能會覆蓋一些由奴隸所做的工作的奴隸誰來了第一)。模擬並行代碼
我知道這可以在pthreads
做,但我不想花精力有一些原型之前編碼它。
我在MATLAB寫並行程序模擬器:
- 一在-A-時間和順序,確實,從站會做的操作,並記錄時間。將其存儲在名爲NEXT_EVENT_TIME_ARRAY的向量中。
- 添加一個人爲延遲到時間 (= how_many_procs * BANDWIDTH_CONSTANT * size_of_M_in_megabytes)
- 集CURRENT_TIME = 0
現在,我們循環:
- 挑選具有最小時間作爲從該「完成第一併聯」的一個
- 設爲CURRENT_TIME +這個(最小)時間CURRENT_TIME的值。
- 這從隨後要求用更新的矩陣(返回值會發生變化,因爲該過程涉及隨機數)做同樣的操作。
- 記錄需要從站的時間來完成和更新NEXT_EVENT_TIME_ARRAY相應 元素是CURRENT_TIME +時間從花 完成計算與幾個迭代M.
- 循環的新的價值!
我會選擇BANDWIDTH_CONSTANT來匹配我的電腦。 這是一個合理的模型來獲得一個概念證明我的算法是否可以在異步設置中工作?