150 likes | 392 Views
V z poredno procesiranje s knji ž nico PyOPUS. Arpad Bűrmen FE Uni-Lj. 25 računalnikov +1 nadzorni. Specifikacije. Delavec i5 750 @ 2.66GHz 4 jedra, 1 nit/jedro = 4 procesi/računalnik Gbit Ethernet, stikalo, 48vrat
E N D
Vzporednoprocesiranje s knjižnicoPyOPUS Arpad Bűrmen FE Uni-Lj
25 računalnikov • +1 nadzorni
Specifikacije • Delavec i5 750 @ 2.66GHz4 jedra, 1 nit/jedro= 4 procesi/računalnik • Gbit Ethernet, stikalo, 48vrat • + 1 nadzorni računalnik = delavecdodaten mrežni vmesnik -> internetstrežnik za mrežni disk (NFS) • 25+1 kos, vsak cca 300W = 7.8kW
Programska oprema • OS = Debian Linux (AMD64) • Samodeja postavitev delavcev (15 min) – FAI konf. strežnik = glavni računalnik • OS (jedro+programi) - lokalni pogon • Domače mape uporabnikov – mrežni pogon • Pomožne datoteke (hitrost!) – lokalni pogon • Programiranje: C/C++ ali Python • Vzporedno procesiranje: knjižnica PVM ali MPI
PyOPUS simulator evaluator optimizer • Uvoz in izvoz rezultatov • Vmesniki • SPICE OPUS • HSPICE • SPECTRE • ADS • Upravljanje simulatorjev • Izračun lastnosti vezja • Izračun KF wxmplplot visual parallel • Vmesnik do Matplotlib-a • Prikazovanje grafov v oknih (wxPython) • Vtičnik za izris rezultatov med optimizacijo • Vmesnik do PVM in MPI • Razredi za opis na sporočilih temelječih vzporednih postopkov podanih v master-slave obliki • Razredi za opis postopkov podanih v paketni (batch) obliki
PVM • Knjižnica za vzporedno procesiranjezagon, komunikacija, nadzor • Od leta 1989 • Zadnja stabilna različica 3.4.6 (2009) • “samo” za sisteme UNIX (t.j. tudi Linux) • Dolgo veljala de de-facto standard • http://www.csm.ornl.gov/pvm/
MPI • Standard za programski vmesnik • Definira ga MPI forum http://www.mpi-forum.org/ • Zadnja različica: 3.0 (september 2012)852 strani • Izvedba v obliki knjižnice (brezplačna) • MPICH ... http://www.mpich.org/ izpeljanke: IBM, Cray, Microsoft, Intel, Myricom, ... • OpenMPI ... http://www.open-mpi.org/prispevki: ARM, IBM, Cray, Cisco, NVIDIA, Myricom, Oracle, ... • Mi uporabljamo OpenMPI.
MPI + Python Tolmač za Python • https://bitbucket.org/mpi4py/ Knjižnica MPI (OpenMPI) Vtičnik MPI4Py
MPI - programiranje from mpi4py import MPI comm=MPI.COMM_WORLD print( "Hello! I'm rank %d from %d running in total..." % (comm.rank, comm.size) ) comm.Barrier() # wait for everybody to synchronize
Zagon Zagon brez MPI (1 proces) python hello.py • Hello! I'm rank 0 from 1 running in total... Zagon v sistemu MPI (4 procesi) mpirun –n 4 python hello.py • Hello! I'm rank 0 from 4 running in total... • Hello! I'm rank 1 from 4 running in total... • Hello! I'm rank 2 from 4 running in total... • Hello! I'm rank 3 from 4 running in total...
MPI - komunikacija Funkciji send in recvdelata z Pythonovskimiobjekti. Uporabljata modul pickle/cPickle za pakiranje v binarnenize, ki se natopošiljajo med računalniki. • from mpi4py import MPI • comm = MPI.COMM_WORLD • rank = comm.rank • if rank == 0: • data = {'a': 7, 'b': 3.14} • comm.send(data, dest=1, tag=11) • elif rank == 1: • data = comm.recv(source=0, tag=11)
PyOPUS in vzporedni postopki simulator evaluator optimizer • Uvoz in izvoz rezultatov • Vmesniki • SPICE OPUS • HSPICE • SPECTRE • ADS • Upravljanje simulatorjev • Izračun lastnosti vezja • Izračun KF wxmplplot visual parallel • Vmesnik do Matplotlib-a • Prikazovanje grafov v oknih (wxPython) • Vtičnik za izris rezultatov med optimizacijo • Vmesnik do PVM in MPI • Razredi za opis na sporočilih temelječih vzporednih postopkov podanih v master-slave obliki • Razredi za opis postopkov podanih v paketni (batch) obliki
Primer: vzporedna globalna optimizacija (PSADE) • AlgoritemOlenšek J., Tuma T., Puhan J., Buermen A.: A new asynchronous parallel global optimization meth od based on simulated annealing and differential evolution. Applied Soft Computing Journal, vol. 11, pp. 1481-1489, 2011. • Izvedba s pomočjo modulapyopus.parallel.evtdrvms • 600 vrstic kode v Pythonu • Lahko uporablja samo en proces, ali več procesov -> pospešitev • Podpora za MPI in PVM