|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
[C] Multi Core
Salve a tutti, ho un piccolo problema, ho un programma con questa struttura:
Codice:
for(int i=0;i<4;i++){
//fai qualcosa
}
Ovviamente le diverse istanze dell'iterazione sono indipendendo l'una dall'altra, quindi non ho problemi di sincronizzazione.. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
sia sotto linux che windows è possibile settare l' affnità con il processore. Puoi sfruttare ciò per suddividere realmente il lavoro
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Quote:
Scusate, risolto.. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2008
Messaggi: 975
|
Anche a me interessa... Grazie mille
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Usa OpenMP:
#pragma omp parallel for for(int i=0;i<4;i++) { //fai qualcosa } |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
http://linux.die.net/man/2/sched_getaffinity Anche se sinceramente in questo caso non credo serva a molto, basta parallelizzare il contenuto del for e l'allocazione dei thread verrà gestita direttamente dal sistema operativo. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
|
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
"Fai qualcosa" può essere anche unsa serie di istruzioni con richiami a funzioni? O ci sono dei limiti nel tipo d'istruzioni eseguibili in parallelo con questa sintassi? Ultima modifica di Albitexm : 03-08-2010 alle 20:18. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
E per aprire due threads in parallelo con openMP, devono essere due threads riferiti allo stesso ambito, che agiscono sulle stese variabili? Ultima modifica di Albitexm : 03-08-2010 alle 20:17. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se non ci sono dipendenze e problemi di concorrenza, ci puoi mettere qualsiasi cosa nel mezzo.
Altrimenti ti devi studiare come funziona OpenMP |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Microsoft mette a disposizione per le sue librerie, della documentazione e del supporto, specifico e mirato. Mentre se io apro la voce openMp online, mi trovo dananti a un'oceano d'informazioni, dove senza "dritte" e incalanazione da qualcuno, rischio di perdere giorni solo per capire cosa devo prendere in considerazione e come. Un'oceano talmente vasto da scoraggiarmi da iniziare ad esplorarlo. |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sei tu che hai chiesto librerie portabili
Il compilatore Microsoft supporta direttamente OpenMP: http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx Qui le specifiche ufficiali: http://www.openmp.org/mp-documents/cspec20.pdf |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Settare l'affinità ha senso in particolari casi, ad esempio in situazioni in cui ci sono diversi produttori e dei produttori/consumatori che devono essere eseguiti in modo sequenziale sullo stesso workset. Per fare un esempio: - i produttori threadPk producono i workset - threadPC1 deve consumare un workset prodotto da threadPk - threadPC2 deve consumare un workset prodotto da threadPC1 - threadPC3 deve consumare un workset prodotto da threadPC2 e deve produrre un risultato In questi casi ha senso assegnare un processore a threadPC1, uno a thread PC2 e uno a thread PC3 e magari una priorità più alta. Non ha senso invece assegnarlo ai threadPk, che di fatto si comportano come un parallel for. |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
dopo quanto e quanti |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Però ha di buono che è talmente semplice che lo può utilizzare chiunque, basta un minimo di logica.
Utilizzare direttamente thread, semafori, shared memory, lock etc etc richiede conoscenze nettamente superiori. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:10.




















