Ruleaza pe sisteme multicore ?
From HaskellWiki
(Difference between revisions)
(A translation of the first part of Haskell for multicore page) |
m (small fix) |
||
| (5 intermediate revisions not shown.) | |||
| Line 9: | Line 9: | ||
__TOC__ | __TOC__ | ||
| - | == | + | == 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. | 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. | ||
| Line 54: | Line 54: | ||
=== Exemples === | === Exemples === | ||
| - | * [http://haskell.org/haskellwiki/Concurrency_demos/Zeta | + | * [http://haskell.org/haskellwiki/Concurrency_demos/Zeta Functia zeta, a lui Riemann ] |
| - | == De citit | + | == De citit == |
| - | * [http://haskell.org/haskellwiki/GHC/Concurrency GHC | + | * [http://haskell.org/haskellwiki/GHC/Concurrency Ghidul GHC-ului folosit pe multiprocesor ] |
| - | * [http://www.haskell.org/ghc/docs/latest/html/users_guide/using-smp.html | + | * [http://www.haskell.org/ghc/docs/latest/html/users_guide/using-smp.html Options pentru utilizarea paralelismului pe masinile SMP] |
| - | * [http://www.haskell.org/ghc/docs/latest/html/libraries/parallel/Control-Parallel-Strategies.html API | + | * [http://www.haskell.org/ghc/docs/latest/html/libraries/parallel/Control-Parallel-Strategies.html Documentation API-ului pt implementat strategii de calcul paralel ] |
| - | * [http://book.realworldhaskell.org/read/concurrent-and-multicore-programming.html Real World Haskell: Concurrent and Parallel Programming] | + | * [http://book.realworldhaskell.org/read/concurrent-and-multicore-programming.html Real World Haskell:Capitolul Concurrent and Parallel Programming] |
| - | * [http://haskell.org/haskellwiki/Blog_articles/Parallel | + | * [http://haskell.org/haskellwiki/Blog_articles/Parallel Postari despre parallelism] |
== Primitivele pt lucrul cu thread-uri == | == Primitivele pt lucrul cu thread-uri == | ||
| 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. | ||
Current revision
1 . Haskell ruleaza pe sistemele multicore !
GHC Haskell vine impreuna cu biblioteci si optiuni de compilare care permit compilarea pt sisteme Multicore: multicore architectures.
Contents |
2 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
2.1 Exemples
3 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
4 Primitivele pt lucrul cu thread-uri
Control.Concurrent Control.Concurrent
5 Continuarea
Pe pagina originala, in limba engleza: Haskell_for_multicores de unde este luat si tradus textul de mai sus.
Categories: Ro | Parallel
