比方說,我有一個懶惰的Tree
,葉子是可能的解決的一個問題並行樹搜索
data Tree a = Node [Tree a] | Leaf (Maybe a)
我需要找到只是一個溶液(或找出是沒有的)。
我有一個P核心機器。從時間和內存效率兩方面來考慮,並行搜索不同分支只是有意義的。
例如,假設你有大致相同的計算複雜度(對應於的T CPU時間秒)四個分所,他們每個人都有一個答案。
如果您在雙核機器上真正並行評估所有四個分支,那麼它們都將在大約012秒鐘內完成大約2T秒。
如果您只評估前兩個分支並推遲了其他兩個分支,那麼您將在僅有T秒的時間內得到答案,同時使用的內存也少兩倍。
我的問題是,是否有可能使用任何並行Haskell基礎設施(Par monad,並行策略...)來實現此目標,還是必須使用像async這樣的更低級別的工具?
你看過http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell嗎? – Wes
我意識到這一點,但我不明白它如何解決我的問題。 –
嵌套數據並行性非常適用於樹型結構 – Wes