View Full Version : dubbio su ottimizzazioni dual-quad core
L'altro giorno, pensando alle lezioni di sistemi dell'ITIS, mi sono tornati in mente gli esercizietti con le FORK e le JOIN che ci insegnavano a parallelizzare il codice che si poteva eseguire contemporanemanete in modo da ottimizzare l'utilizzo di più processori e mi ricordo che non ci imponevano un limite di processori ma più riuscivamo a parallelizzare meglio era perchè ci avevano spiegato che se uno aveva tanto processori non sfruttava al meglio il programma mentre se uno ne aveva uno solo anche se era erano paralleli non si aveva una perdita di prestazioni ma semplicemnte il processore eseguiva le istruzioni parallele nei tempi morti o nelle attese di imput. Quindi negli esercizi più complicati si avevano anche 7/8 linee parallele!
Ora, leggendo alcune discussioni dove si dice che i Quad core adesso sono inutili perchè non vengono sfruttati come i Dual core mi chiedo.....
Ma a noi hanno insegnato stupidate a scuola?
non so se mi sono spiegato bene, se non sono stato chiaro tenterò di rispiegare....
Ma nessuno sa rispondere o mi sono espresso talmente male che nessuno ha capito cosa ho scritto?:D
albert78
24-02-2007, 11:06
no
a cosa è riferito questo no?:confused:
asdfghjkl
26-02-2007, 02:05
Immagino che il problema sia che non hanno voglia di sforzarsi a parallelizzare. Dopo tutto sono dei lavori enormi fatti da gente abituata da tanto tempo a lavorare in un certo modo, che deve fare in fretta e che magari spesso ricicla e riadatta cose già fatte. Comunque stò tirando a indovinare...
Ok se il codice il codice non è parallelizzato, ma secondo quello che mi insegnavano se è parallelizzato va bene sia per un dual che per un quad core! E' questo quello che non capivo, non la differenza tra un codice lineare e uno parallelizzato....
Cmq mi sa che è meglio se metto i miei dubbi da barte xchè entrare nella mente dei programmatori sarà molto dura........:D
albert78
26-02-2007, 11:06
a cosa è riferito questo no?:confused:
alla tua domanda "Ma a noi hanno insegnato stupidate a scuola?"
quelli da te indicati sono pochi processi leggeri e "fermi" (forte interazione con l'utente, o in attesa di risultati di altri thread o in attesa di acceso alle periferiche condivise ecc), il carico cpu è minimo non avresti risultati migliori dedicando una cpu a ciascun processo
la cosa cambia se
-il numero di quei processi aumenta considervolmente ( situazione da SERVER più che da DESKTOP )
-cambia il tipo di processi: non leggeri e fermi ma con max carico cpu (anche uno solo o analogamene pochi ma che ti saturano la cpu)
e per questi puoi sfruttare i multiprocessori in 2 modi: distribuire(dovrebbe farlo lo scheduler del SO) i vari processi i alle varie cpu in base al carico ma su un desktop difficile che un utente medio si metta a fare 4 processi pesanti, l'altra + interssante è quella di dividere un singolo processo pesante in sottoprocessi da svolgerli in // assegnandoli a ciascuna cpu per poi unire i risultati (tipico algoritmo in cui si usano join fork processi thread),
ma tali algoritmi vanno implementati da zero (non proprio da zero x' i sys multiprocessore-socket- esistono già tempo per altri scopi, vedi x esempio rendering 3d dove infatti il risultato è doppio 3dstuiomax &co)
ma in altri applicativi si è iniziato appunto da zero, uno fra tutti il campo ludico dove gli stessi dual ci hanno messo del tempo ad integrarsi e ancora non lo sono pienamente,
al momento i core2quadro di intel non hanno mostrato miglioramenti nei confronti dei rispettivi core2duo in campo ludico (della serie per ora è già tanto se ne sfruttano due)
in ogni caso ormai la strada è quella, col tempo come sempre il passaggio sarà obbligato ( +sw ottimizzato, prezzi + bassi, altri miglioramenti per es freq /bus/cache + alte grandi o veloci)
Paolobody
26-02-2007, 11:51
ciao, anche io ho fatto l'ITIS e mi dicevano le stesse cose.
Questo ragionamento (fork e join) non vale solo per i dual o quad core, ma anche per i single core, poichè i processori sono concepiti per fare lavori multitread, dando l'impressione all'utente esterno che più processi vengono eseguiti contemporanemente. Solo che per i singlecore è appunto una impressione, mentre il discorso per i dual/quad è che nella realtà i processi vengono davvero contemporanemante. A questo punto anche il complilatore deve essere studiato per il dual/quad core perchè deve gestire flussi di dati
che cercano di viaggiare in parallelo. Mi sono spiegato?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.