Difference between revisions of "Ruleaza pe sisteme multicore ?"
Jump to navigation
Jump to search
m (→De citit) |
m (small fix) |
||
(One intermediate revision by the same user not shown) | |||
Line 56: | Line 56: | ||
* [http://haskell.org/haskellwiki/Concurrency_demos/Zeta Functia zeta, a lui Riemann ] |
* [http://haskell.org/haskellwiki/Concurrency_demos/Zeta Functia zeta, a lui Riemann ] |
||
− | == De citit |
+ | == De citit == |
* [http://haskell.org/haskellwiki/GHC/Concurrency Ghidul GHC-ului folosit pe multiprocesor ] |
* [http://haskell.org/haskellwiki/GHC/Concurrency Ghidul GHC-ului folosit pe multiprocesor ] |
||
Line 69: | Line 69: | ||
== Continuarea == |
== Continuarea == |
||
− | Pe pagina originala, in limba engleza: [Haskell_for_multicores] |
+ | Pe pagina originala, in limba engleza: [[Haskell_for_multicores]] |
de unde este luat si tradus textul de mai sus. |
de unde este luat si tradus textul de mai sus. |
Revision as of 07:52, 8 June 2012
. Haskell ruleaza pe sistemele multicore !
GHC Haskell vine impreuna cu biblioteci si optiuni de compilare care permit compilarea pt sisteme Multicore: multicore architectures.
Introducere
Ca sa aveti o idee cum s-ar putea reduce timpul de calcul olosind mai multe nuclee hack-uiti programul de mai jos: un program carre calculeaza termenii sirului lui Fibonacci, pina la un loc secvential apoi paralel.
import Control.Parallel
import Control.Monad
import Text.Printf
cutoff = 35 -- nivelul de la care comutam pe SMP
fib' :: Int -> Integer
fib' 0 = 0
fib' 1 = 1
fib' n = fib' (n-1) + fib' (n-2)
fib :: Int -> Integer -- paralelism explicit
fib n | n < cutoff = fib' n
| otherwise = r `par` (l `pseq` l + r)
where
l = fib (n-1)
r = fib (n-2)
main = forM_ [0..45] $ \i ->
printf "n=%d => %d\n" i (fib i)
Trebuie neaparat compilat cu optiunea `-threaded`:
$ ghc -O2 -threaded --make fib.hs [1 of 1] Compiling Main ( fib.hs, fib.o ) Linking fib ...
Si rulat cu optiunile:
+RTS -Nx
unde 'x' unde x de dupa N este numarul de nuclee disponibile. De exemplu, pe un sistem Linux cu procesor quad core :
./fib +RTS -N4
Exemples
De citit
- Ghidul GHC-ului folosit pe multiprocesor
- Options pentru utilizarea paralelismului pe masinile SMP
- Documentation API-ului pt implementat strategii de calcul paralel
- Real World Haskell:Capitolul Concurrent and Parallel Programming
- Postari despre parallelism
Primitivele pt lucrul cu thread-uri
Control.Concurrent Control.Concurrent
Continuarea
Pe pagina originala, in limba engleza: Haskell_for_multicores de unde este luat si tradus textul de mai sus.