2013-05-01 104 views
-1

我正在爲我的finite analysis code使用C++編寫一個新算法,假設我在一個64 * 64的方形網格上工作,它有四個曲面(曲面A,B,C,D),然後我將它分解成四個子曲面,域,並且它發生在表面A的表面細胞也可能分散。在處理器之間共享信息的解決方案是什麼?

我的問題是怎麼樣的一般,我想知道如果我想在這個64個* 64個格計算的變量,但這個變量依賴於整個表面A的座標信息,那麼我應該怎麼辦?因爲我發現在一些子域中根本沒有A.所以我發現我的代碼和新算法運行良好,並且順利成功,但它並行失敗。

任何處理這種情況的建議或策略?

+1

正在使用什麼樣的並行化?如何實施? – RSFalcon7 2013-05-01 15:27:57

+0

我添加了一個鏈接到我的有限分析代碼。它顯示了實現並行計算的特定頭文件。 – Daniel 2013-05-01 15:32:45

+0

嘿,downvoters,我可以知道什麼stackoverflow規則,我打破了,如果你認爲它太籠統了,你會建議我如何重新措辭嗎? thannnnnks – Daniel 2013-05-01 15:34:20

回答

1

並行處理可能是棘手,如果您正在使用基於shared memory paradigm你需要保護這個內存區域或者您將擁有一個race condition算法。

其他範例,如distributed memory,還有其他一些策略來處理這個問題,主要是消息傳遞。

+0

據我所知,我的代碼是使用'分佈式內存' – Daniel 2013-05-01 15:37:37

+0

我不熟悉OpenFOAM,但從你發佈的鏈接你很可能處理[this](http://en.wikipedia。 org/wiki/Stream_processing)類型的並列,這裏的共享內存非常依賴於實現 – RSFalcon7 2013-05-01 15:42:29

相關問題