Šta je novo?

An Introduction to Multiprocessor Systems...

drfedja

Čuven
Učlanjen(a)
05.07.2000
Poruke
4,719
Poena
736
multi sta?
neee.. taman sam zaboravio na taj ispit i bio sam srecan dok me sad nisi podsetio....
onako... nije lose.. ali mislim da smo sad na ogromnoj prekretnici i da je bas pitanje koji trend ce da se nastavi... sa multiprocesorima je uvek bilo tako za razliku od obicnih uniprocesora koji su isli dosta pravolinijski... nesto mi se cini da terascale ima veze sa onim sto ce biti buducnost, da opticke veze unutar i van cipa imaju isto veze i da ce filozofija programiranja drasticno da se preokrene u skladu sa arhitekturom... e sad ja licno navijam za Ei Nis ali ipak su i Intel i Amd tu negde 🙂
 
Samo ne znam ko ce da natera kamaru programera da pisu kod na novi nacin iz pocetka, paralelizovano.
 
Naterace ih po principu koji se primenjuje na zapadu, dal od skora ili od ranije ne znam, ali radi a glasi: "Do your work or get fired"🙂
 
Poslednja izmena:
Da, ali takvo copy paste programiranje je politika koju vode ogromne firme, poput Micro$ofta. Sto nisu threadovali explorer.exe za pocetak ! :d
 
Pa pazi ovako, programeri ce morati da se prilagode novom hardveru u svakom sluchaju jer ako nece da se prilagode ovi koji sada programiraju bice novo pokoljenje koje hoce.
 
Programeri ce da napisu takav softver da ce ti trebati jaca masina da bi radio isto ono sto radi stara verzija na slabijoj masini. Jednostavno, lakse je nadrkati nove "kobasice" koda u neoptimizovanom programu, nego optimizovati ga iz pocetka. :d Jos uzmu i lepe parice za to, a za sve to ti treba i nova masina, pa tako onda cela IT industrija opet napravi novi ciklus mlacenja love (i prazne slame) ! 😀 Optimizacija se svodi samo na /arch SSE :d ,a da bi se optimizovalo za threaded arhitekture, potrebno je malo vise znanja koji neki imaju, a neki ne. Moze Intel, GNU, Borland i ostali da se trude da naprave dobar C++ kompajler, ali dzabe .
 
Poslednja izmena:
e evo ti jedan deo koda koji sam cisto budzio da bi video koliko je tesko programirati za vise nitne aplikacije :
bez podrske :
for ( i=0;i<10000;i++) {
v[i*2+1].set(i*0.01f -5 , 0.5f + sinf(i*0.2f+t) , cosf(i*0.2f+t) ) ;
v[i*2+2].set(i*0.01f +0.01f-5 , 0 - sinf(i*0.2f+t), cosf(i*0.2f+t)) ;
}

sa podrskom:
#pragma omp parallel for private(i) schedule(static,32)
for ( i=0;i<10000;i++) {
v[i*2+1].set(i*0.01f -5 , 0.5f + sinf(i*0.2f+t) , cosf(i*0.2f+t) ) ;
v[i*2+2].set(i*0.01f +0.01f-5 , 0 - sinf(i*0.2f+t), cosf(i*0.2f+t)) ;
}

razlika je samo u ovom:
#pragma omp parallel for private(i) schedule(static,32)
ako se radi o paralelnim petljama... neka ubace samo ovaj kod i imace dosta ubrzanja.. kod mene je to reda 80% sa ovim u odnosu na bez istog
p.s.
u pitanju je openmp podrzan i na pc, mac-u i cell-u
openmp sam provaljuje koliko imas procesora i pravi toliko niti ( thread pool )
vise na www.openmp.org

kada je u pitanju kooperacija vise niti na zajednickom poslu onda se malo komplikuje ali bre nije to toliko *****a.o
 
Poslednja izmena:
Jesu. Sve sto se moze threadovati jesu threadovali (inace bi imao brzi file copy, ali gori response time ostatka sistema).
Nije to prosto kao sto je genuine postavio, barem nije za ne-matematicke stvari.
Sto nisu threadovali explorer.exe za pocetak ! :d
 
www.rapidmind.net interesantno!

"Developers are provided a single, simple and standard way to program, which the RapidMind platform then maps onto all available computational resources in a given system."

ima jako interesantnih primera!
 
Jesu. Sve sto se moze threadovati jesu threadovali (inace bi imao brzi file copy, ali gori response time ostatka sistema).
Nije to prosto kao sto je genuine postavio, barem nije za ne-matematicke stvari.

Znam na sta mislis. Problem kako da deset radnika nateras da jedan posao zavrse za deset puta krace vreme ! :d Tacno je da se ne moze sve threadovati, ali, mnogo toga moze, a nije. Provereno!
 
sto ti blokira eksplorer kada te *****ava citanje diskova? to nije tredovano sigurno 🙂
 
To sto blokira explorer ima veze sa interuptom koji je dodeljen za rad sa IDE uredjajima koji ima najveci prioritet. Explorer blokira, kao i svi procesi dok windows odradjue CRC korekciju nad ostecenim optickim mediumom. Recimo u Linuxu, kod nekih distribucija, je prilikom instalacije isklucen CRC, pa disk mora da ti bude u perfektnom stanju da bi instalirao OS.
Dakle, paralelno programiranje nema veze sa interrupt-om najvece vaznosti. 🙂
E sad, nisam siguran da li je problem do windowsa ili je generalno to problem PC arhitekture.
 
Poslednja izmena:
evo sta mi nije jasno... kada dodje do crc greske kako to moze da se popravi? crc valjda moze da provali 2n+1 greske i da otkloni maksimalno n stim sto za velike blokove poput sektora (512bajta ) ako se koristi crc16 ne verujem da moze vise od jedne greske da provali tako da ako dodje do iste nema leba.. a i da moze da provali 3 greske i da popravi 1 opet ako se desilo 10 gresaka nema leba od popravljanja istih. meni se vise cini da io procedura zadaje citanje za blokom ili nizom blokova a cd/dvd paca prekid za kraj operacije a ovaj ga hvata sa informacijom da je greska i restartuje citanje tog sektora nekoliko puta.. kilavo ide jer se sada io obraca jednom po jednom sektoru dok je pre to istlo u blokovima...(seek time + ko zna sta sve)
storage je kod pc preemptibilan uredjaj tako da nema tu nekog razloga za zakljucavanjem dok se ne zavrsi citanje fajla i sl...(osim defragmentacije koja moze da lokuje ceo disk za svaki fajl kome se obrati) bilo bi ok da je explorer isprogramiran da zada u posebnoj niti citanje sadrzaja diska i da dok ona radi on prikazuje neki loading....D disk... ako pukne ta nit jer ne moze da se procita disk (recimo ili veliki timeout ili sta vec ) onda explorer javi gresku...

p.s.
kod modernih os-ova dozvoljeno je prekidanje ( tj. nezavrsavanje kompletnog koda ) prekidne rutine ( ali ne svih i ne na svakom mestu vec u tacno odredjenim tackama , recimo nema prekidanja blokova koji lokuju data strukture)
 
Poslednja izmena:
p.s.
kod modernih os-ova dozvoljeno je prekidanje ( tj. nezavrsavanje kompletnog koda ) prekidne rutine ( ali ne svih i ne na svakom mestu vec u tacno odredjenim tackama , recimo nema prekidanja blokova koji lokuju data strukture)
Pa moguce da je to razlog zasto windows ima prekid prilikom citanja sa optickog uredjaja, i uopste sa ide grane.
Cinjenica je da je ceo prekid vezan za IDE uredjaj, slicno kocenje se dogadja i sa neispravnim hard diskovima, kada OS pokusava da odradi CRC. S' druge strane, prekid ne postoji kada se vrsi citanje sa recimo flash diska preko USB inteface-a.
 
pa ja stvarno ne znam arhitekturu windows-a ali je cinjenica da prekid moze da prekine bilo koju aplikaciju.. tipa eksplorer oce da cita nesto sa diska.. zahtev se ubaci u red zahteva za drajver diska i tu eksplorer se blokira... e sad kad drajver diska dobije upravljanje on zahtev prosledjuje disku.. disk *****e i vrati prekid koji prekine recimo solitaire.. prekid samo obavesti drajver diska da je disk *****ao i sad ili nastavi solitaire ili drajver diska... znaci solitaire nema razloga da prsne ( samo imam ja posto 4 dana nisam resio ni jednom ).. sad drajver pokusava da izmoli disk za podatke ali ovaj se ne da .. za to vreme eksplorer je blokiran na semaforu koja se nalazi u api proceduri za zahtev fajlova sa diska...svaki sledeci zahtev za diskom bice ubacen u red drajvera za disk ali ne i obradjen jer jos ni prethodnu brljotinu nije resio pa ce se svi ti koji su trazili disk opet da se blokiraju...
e sad... kada imas dve niti u jednom procesu kao eksplorer i kad jedna radi ui a druga obradjuje zahteve tada ce da se blokira ova sa zahtevima a ui ce i dalje da radi... mozda bi trebalo cak na svaki zahtev da se napravi nova nit....
 
jel ocekujes da ti sad neko odgovori 😛 🙂
 
pa ja stvarno ne znam arhitekturu windows-a ali je cinjenica da prekid moze da prekine bilo koju aplikaciju.. tipa eksplorer oce da cita nesto sa diska.. zahtev se ubaci u red zahteva za drajver diska i tu eksplorer se blokira... e sad kad drajver diska dobije upravljanje on zahtev prosledjuje disku.. disk *****e i vrati prekid koji prekine recimo solitaire.. prekid samo obavesti drajver diska da je disk *****ao i sad ili nastavi solitaire ili drajver diska... znaci solitaire nema razloga da prsne ( samo imam ja posto 4 dana nisam resio ni jednom ).. sad drajver pokusava da izmoli disk za podatke ali ovaj se ne da .. za to vreme eksplorer je blokiran na semaforu koja se nalazi u api proceduri za zahtev fajlova sa diska...svaki sledeci zahtev za diskom bice ubacen u red drajvera za disk ali ne i obradjen jer jos ni prethodnu brljotinu nije resio pa ce se svi ti koji su trazili disk opet da se blokiraju...
e sad... kada imas dve niti u jednom procesu kao eksplorer i kad jedna radi ui a druga obradjuje zahteve tada ce da se blokira ova sa zahtevima a ui ce i dalje da radi... mozda bi trebalo cak na svaki zahtev da se napravi nova nit....
Problem je sto je IDE podsistem "legacy", a za takve uredjaje prioritet interrupt-a je najveci. Isto vazi i za FDD.
Ono sto mi nisam sto posto siguran je to da li mora kernel OS-a da se zabode ako "legacy" drajver ne odradi posao do kraja.
Jos jedna stvar. Zarad kompatibilnosti unazad, PC arhitekura vuce repove iz doba dinosaurusa, pa se to ispoljava kao smetnja u vidu takvih interrupta. Zaniam me kada ce vec jednom poceti da se prave maticne ploce i operativni sistemi koji nisu bazirani na "legacy" arhitekturi. Jednostavno, moglo bi se sve to lepo emulirati, bas kao sto to radi na MAC-u.

P.S. Ovaj thread je definitivno otisao predaleko od teme.
 
Poslednja izmena:
Nazad
Vrh Dno