2012-09-03 28 views
8

Bu Haskell snippet'ini çalıştırdığımda yalnızca 1 CPU yüklendi. Hem f hem de g, anlamsızdır ancak kullanılabilir olduğunda iki CPU'yu yüklememelidir? ghc -O2 snippet.hs olarak derlendi.Haskell'de paralel hesaplama

./snippet +RTS -N4 

Yoksa sahip olabilir:

f x = 1 + (f $! x) 
g x = 5 + (g $! x) 

z = a `par` b `seq` a+b 
     where 
     a = f 3 
     b = g 5 

main = do 
    print z 

cevap

9

Sen, dişli seçeneğiyle yani ghc -O2 -threaded snippet.hs derlemek ve sonra dört çekirdek için aşağıdaki gibi komut satırında çalıştırılabilir çekirdek sayısını geçmesi gerekiyor makine sadece -N kullanarak çekirdek sayısını seçin.

+0

çalıştı http://www.haskell.org/haskellwiki/Haskell_for_multicores Bkz, ama hala değil% 200 yük (benim CPU içinde 4 çekirdeğe sahip) sadece% 100 yük görüyoruz. – Cartesius00

+0

Bekle, ayrıca, çalıştırılabilir dosyayı çekirdek sayısını da şu şekilde değiştirmeyi unuttum: './snippet + RTS -N4' dört çekirdek için. –

+0

İşte bu kadar! Teşekkür ederiz :) – Cartesius00