Forum » Programiranje » Paralelno programiranje in platforme
Paralelno programiranje in platforme
terryww ::
1. Katere knjige/linke predlagate za učenje HPC in multicore programiranja?
2. Kakšne so vaše izkušnje s programiranjem v C/C++ na resnejših platformah (Solaris, FBSD, Linux) za računsko zahtevne programe?
3. Če je prog računsko zahteven, se splača iti iz Linuxa na Solaris zaradi:
- Memory Placement Optimization (MPO)
- Thread Local Storage (TLS)
- Dynamic Tracing (DTrace)
in koliko se v praksi profitira zaradi teh tehnologij? A je razvijanje res nekajkrat lažje če uporabljaš DTrace?
4. Izkušnje s kompilerji. Recimo PGI vs. Intel vs. GCC za HPC.
2. Kakšne so vaše izkušnje s programiranjem v C/C++ na resnejših platformah (Solaris, FBSD, Linux) za računsko zahtevne programe?
3. Če je prog računsko zahteven, se splača iti iz Linuxa na Solaris zaradi:
- Memory Placement Optimization (MPO)
- Thread Local Storage (TLS)
- Dynamic Tracing (DTrace)
in koliko se v praksi profitira zaradi teh tehnologij? A je razvijanje res nekajkrat lažje če uporabljaš DTrace?
4. Izkušnje s kompilerji. Recimo PGI vs. Intel vs. GCC za HPC.
terryww ::
Imam računsko zahteven program in večjedern server na razpolago. Rad bi uporabil ostalih 7 jeder. Kasneje bi laufalo na klastru.
Zgodovina sprememb…
- spremenil: terryww ()
Karlos ::
Na FRI-ju sem za eno seminarsko napisal program, ki reši igrico preskakovanja žebljičkov Peg Game, vzporedno na poljubno mnogo računalnikov (cluster) s pomočjo LAM - MPI v C++.
Stvar je dokaj preprosta za inštalerat in uporabljat, nisem pa 100% če si mislil kaj takega.
Stvar je dokaj preprosta za inštalerat in uporabljat, nisem pa 100% če si mislil kaj takega.
Sai Baba: "Dam vam to, kar hočete, da boste hoteli to, kar vam želim dati."
terryww ::
Najlepša hvala za odgovor. Za MPI oz OpenMPI vem, ampak sem slišal da je razvojni čas zelo dolg. Trenutno se igram s Ct [http://techresearch.intel.com/articles/..., da vidim kak kaj to znese.
Gundolf ::
Za na cluster je več ali manj najbolj uporaben MPI (mišljeno kot standard, katerokol implementacijo že uporabljaš). Večjedrniki so pa v nasprotju s clustri shared-memory in to se splača izkoristit. Se pravi, če načrtuješ stvar nekoč dat na cluster začni kar takoj z MPI, sicer pa s čim primernim večjedrnikom, samo tu pa nimam pojma kaj se splača (za razliko od MPI ni moje področje).
MPI je pa drugače čist enostaven. Z dvema ukazoma (API funkcijama) za initializacijo in dvema za komunikacijo lahko narediš že praktično karkoli. Za kaj bolj advanced imaš potem tudi bolj specializirane ukaze. Ampak ponavadi uporabljaš zelo majhen subset MPIja zato se lahko vse sproti naučiš.
MPI je pa drugače čist enostaven. Z dvema ukazoma (API funkcijama) za initializacijo in dvema za komunikacijo lahko narediš že praktično karkoli. Za kaj bolj advanced imaš potem tudi bolj specializirane ukaze. Ampak ponavadi uporabljaš zelo majhen subset MPIja zato se lahko vse sproti naučiš.
terryww ::
Fino.
A uporablja kdo DTrace (na solarisu al pa fbsdju)?
In kake so vaše izkušnje s compilerji? Intel je za mat op dosti hitrejši kot recimo GCC...
A uporablja kdo DTrace (na solarisu al pa fbsdju)?
In kake so vaše izkušnje s compilerji? Intel je za mat op dosti hitrejši kot recimo GCC...
Zgodovina sprememb…
- spremenil: terryww ()
Gundolf ::
Morda lahko kvečjemu računaš, da zna intelov compiler nekatere stvari pretvorit v specializirane streaming ukaze, vendar moraš ponavadi znat ga okol prinest, da se to zgodi. Drugje sta si dokaj blizu. Pa še problem moraš imeti tak, da to omogoča. Zame je recimo gcc čisto zadosti dober. Kot vedno pa je najzaneslivejši način če take dele kode, ki se jih da v MMX/SSD/3Dnow! izvest sam pravilno designiraš in tudi v assemblerju skodiraš. Samo redko komu se to da...
dr.J ::
> Intel je za mat op dosti hitrejši kot recimo GCC...
Jaz uporabljam gcc, intelov ter portlandov fortranski prevajalnik,
vse na Linux platformi. Izkušnje:
Intel: najbolje podpira - jasno - svoje procesorje in naredi
najhitrejšo izvršilno kodo
portland: takoj so podprte vse arhitekture
gcc: dobra hitrostna optimizacija pride z zamikom in je boljša
od Portlandove.
Za matematične operacije uporabiš binarno Intelovo mkl ali (AMDjevo
ACML) (Math Kernel Library) - zadeva leti!
Pathscale in absoft prevajalnikov nisem preizkusil, ker enostavno
nimam časa. Prednost gcc in intelovega prevajalnika je, da sta free
(intelov za nekomercialno rabo).
Zanimiv pristop pa je recimo CUDA od Nvidie.
Jaz uporabljam gcc, intelov ter portlandov fortranski prevajalnik,
vse na Linux platformi. Izkušnje:
Intel: najbolje podpira - jasno - svoje procesorje in naredi
najhitrejšo izvršilno kodo
portland: takoj so podprte vse arhitekture
gcc: dobra hitrostna optimizacija pride z zamikom in je boljša
od Portlandove.
Za matematične operacije uporabiš binarno Intelovo mkl ali (AMDjevo
ACML) (Math Kernel Library) - zadeva leti!
Pathscale in absoft prevajalnikov nisem preizkusil, ker enostavno
nimam časa. Prednost gcc in intelovega prevajalnika je, da sta free
(intelov za nekomercialno rabo).
Zanimiv pristop pa je recimo CUDA od Nvidie.
In theory, there is no difference between practice and theory.
terryww ::
No, pred kratkim sem naletel na članek o programiranju SMP serverjev v klastru (nisem si mislil, da obstajajo cele študije o tem kako programirat na supercomupu ali klastru..). Ugotovitev je bila, da najhitreje program leti, če se programira hibridno (MPI (za globalno)+OpenMP(za lokalno)), ampak to je verjetno tudi odvisno od tega, kaj bo program delal.. V glavnem, zdaj me zanima primerjava OpenMP vs. Intel Threading Building Blocks. Nekje sem zasledil, da obstaja tudi več vrst niti (recimo POSIX). Zna kdo kaj več o tem povedat oz priporočiti literaturo za paralelno programiranje(razen OpenMP in TBB dokumentacije)?
Zgodovina sprememb…
- spremenil: terryww ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | ARSO - nov superračunalnik, 640.000 EUROddelek: Strojna oprema | 3471 (2652) | jest10 |
» | Nov najhitrejši superračunalnik zmore 20 petaflops (strani: 1 2 )Oddelek: Novice / Znanost in tehnologija | 12794 (10466) | Isotropic |
» | Rusija gradi drugi najhitrejši superračunalnik na svetuOddelek: Novice / Znanost in tehnologija | 7800 (5977) | Bistri007 |
» | Napovedan prevajalnik CUDA C za x86Oddelek: Novice / Procesorji | 4745 (3666) | noraguta |
» | Larrabee s približno 1,7 milijarde tranzistorjevOddelek: Novice / Procesorji | 5117 (3734) | PrimozR |