|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Montecatini terme
Messaggi: 309
|
[C] - Utilizzo programmi con processori dual core!!
Salve a tutti, vi voglio porre una domanda, forse anche banale, ma fatto sta che risposte anche con google non ne ho trovate (di chiare intendo). Sto sviluppando alcuni applicativi creati in C. Poiché fanno uso intensivo del processore (le elaborazioni mi durano qualche minuto) volevo sapere se fosse possibile, nei computer muniti di CPU dual core, compilarle in modo tale per cui una volta lanciate vadano ad usare entrambe in parallelo i due core della cpu e non soltanto uno solo.
Saluti, Marco.
__________________
Asus M2N-SLI DELUXE - Athlon 64 X2 4600+ - 2x1GB Corsair XMS2 PC6400 - ATI HD3650 - 2x250GB SATA2 RAID-0 |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Ciao Marco,
Non è possibile farlo automaticamente con un'opzione del compilatore. Devi progettare l'applicazione in modalità multithreading. Puoi utilizzare diverse librerie. Io preferisco OpenMP che è pienamenta supportata dalla maggior parte dei compilatori C, è portabile e di facile utilizzo: http://openmp.org/wp/ http://en.wikipedia.org/wiki/OpenMP http://msdn.microsoft.com/en-us/library/tt15eb9t.aspx Intel Tutorials: http://software.intel.com/en-us/arti...ed-with-openmp http://software.intel.com/en-us/arti...ng-with-openmp http://software.intel.com/en-us/arti...mp-programming |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
ma non sbasta creare più thread?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6514
|
Quote:
Ultima modifica di Unrue : 08-12-2008 alle 10:35. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Montecatini terme
Messaggi: 309
|
Oggi mi cimento con openMP. Vedo cosa tiro fuori.
Saluti.
__________________
Asus M2N-SLI DELUXE - Athlon 64 X2 4600+ - 2x1GB Corsair XMS2 PC6400 - ATI HD3650 - 2x250GB SATA2 RAID-0 |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Montecatini terme
Messaggi: 309
|
Quindi in poche parole mi state dicendo che l'utilizzo di più thread in parallelo equivale ad usare entrambi i core della CPU???
__________________
Asus M2N-SLI DELUXE - Athlon 64 X2 4600+ - 2x1GB Corsair XMS2 PC6400 - ATI HD3650 - 2x250GB SATA2 RAID-0 |
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quote:
Esattamente quale thread mappa in quale core a te non deve interessare, a meno di particolari esigenze ma in quel caso ti devi "sbattere" di più per avere quel tipo di controllo.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2005
Città: Montecatini terme
Messaggi: 309
|
io ho fatto questi passaggi (banali passaggi):
void prodotto(long double** A, long double** B, long double** AB, int N) { //Prodotto fra matrici int i,j,k; long double x; #pragma omp parallel for default(none) private(i,j,k,x) shared(A,B,AB,N) for(i = 0;i < N; ++i) { for(j = 0;j < N; ++j) { x = 0; for(k = 0;k < N; ++k) { x = A[ i ][ k ] * B[ k ][ j ] + x; } AB[ i ][ j ] = x; } } } il tempo di esecuzione è diventato un quarto... bene....con così poco ho ottenuto così tanto.
__________________
Asus M2N-SLI DELUXE - Athlon 64 X2 4600+ - 2x1GB Corsair XMS2 PC6400 - ATI HD3650 - 2x250GB SATA2 RAID-0 |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
La indipendenza delle istruzioni non e' condizione sufficiente per bilanciare il carico tra i diversi core.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Se il grosso del lavoro consiste nel moltiplicare delle matrici, potresti anche voler considerare algoritmi più efficienti di quello naive.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2005
Città: Montecatini terme
Messaggi: 309
|
tipo?
__________________
Asus M2N-SLI DELUXE - Athlon 64 X2 4600+ - 2x1GB Corsair XMS2 PC6400 - ATI HD3650 - 2x250GB SATA2 RAID-0 |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Tipo:
http://en.wikipedia.org/wiki/Matrix_...multiplication Ovviamente sono molto più complicati da implementare, vedi tu se ne vale la pena.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#14 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
P.S. per curiosità, in quale ambiente e con quale compilatore l'hai compilato? Ultima modifica di Vincenzo1968 : 09-12-2008 alle 18:21. |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
in questo caso è banale.. prova ad implementare il parallelismo su programmi + complessi e vedi se non ti escono i capelli bianchi
__________________
|
|
|
|
|
|
|
#16 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
|
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 530
|
Scusate ... in questo piccolo esempio fatto da marco83pt mi spiegate cosa fa un processore e cosa fa l'altro
mi potete spiegare il #pragma utilizzato come funziona ? |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
le problematiche da affrontare in caso di codice multi-threaded sono moltissime, tanto è vero che praticamente tutti i sistemi per gestire l'interfaccia grafica girano in modalità single-thread (swing e windows forms in primis...)
__________________
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
mai usato openMP, ma a leggere il pragma si direbbe che definisce come risorse condivise le 3 matrici quadrate e la loro dimensione ed esegue in parallelo i 3 cicli for che utilizzano le variabili i,j,k come contatori e x che contiene il valore della moltiplicazione.
__________________
|
|
|
|
|
|
#20 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
La programmazione multithreading richiede comunque, e con librerie particolari, e con le API, molta più attenzione rispetto a quella tradizionale.
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:05.



















