Discussione: Programmazione multi-core
- 14-04-06, 10:29 #1Novizio
- Iscritto
- 04-06
- Messaggi
- 2
Programmazione multi-core
Ciao a tutti,
sono un ragazzo che da un paio di anni studia a scuola diversi linguaggi di programmazione, come il C++, il C, il Visual Basic e l'Assembler 8086. Ultimamente mi sono chiesto come si possano sviluppare dei programmi che sfruttino tutti i core presenti in un processore, oppure se non sia necessario utilizzare delle istruzioni specifiche in qunato è il compilatore a fare il tutto.
Chiunque conosca qualcosa in merito lo prego di rispondermi.
Grazie 1000
- 14-04-06, 12:27 #2
In linea di massima, il dual core viene sfruttato quando ci sono più thread (flussi di esecuzione) che possono andare in parallelo. Un vantaggio che ottieni automaticamente è a livello del computer in toto, nel senso che con i moderni sistemi operativi, se lanci due programmi, il S.O. è in grado di distribuirne l'esecuzione sui core o sui processori disponibili. La stessa funzione è fornita dal S.O. ai programmi, sotto forma di thread. Se vuoi il parallelismo internamente al tuo programma, devi realizzarlo in modo che sia multithreaded, e questo si fa con apposite istruzioni (in Java, la classe thread; in C e C++, mi pare che ci siano delle librerie specifiche per ogni S.O., non standard, ma non conosco bene).
Esistono compilatori ottimizzati che cercano di capire cosa può essere parallelizzato, e generano il codice di conseguenza, ma ovviamente non è il massimo, perché un algoritmo parallelo è in genere diverso da uno sequenziale.
Infatti non tutto può essere parallelizzato; devi progettare il programma in modo da capire cosa si può e cosa no, e quando un thread deve aspettare l'esito di un altro, e cose così. Un esempio (saltato fuori in un altro post, a proposito del fatto che le prestazioni di un dual core sono inferiori al doppio delle prestazioni di un core): supponi di dover calcolare (a+b)*(c+d). Potresti avere un thread che calcola a+b, uno che calcola c+d, però poi devi aspettare che entrambe le operazioni siano finite per fare la moltiplicazione.
Un esempio più pratico: supponi di avere un programma che prende in input una serie di immagini, le elabora, e poi le salva. Puoi immaginare di iniziare ad elaborare la prima immagine, poi crei un thread per salvarla mentre con un altro thread elabori la seconda, e così via.
- 16-04-06, 12:56 #3Novizio
- Iscritto
- 04-06
- Messaggi
- 2
Grazie molte per la risposta esaurientissima
Ciao
Discussioni simili
-
Da MBP Core Duo a MBP Core 2 Duo ??? E la scheda video downgrada ...
By itamair in forum MacBook ProRisposte: 1Ultimo messaggio: 20-11-06, 05:05 -
multi-camera (in fcp 5.0)
By ismael in forum Final Cut Pro / ExpressRisposte: 9Ultimo messaggio: 21-07-06, 13:37 -
Aggiornare il Mac mini da Core Solo a Core duo con scambio di processore
By felix7 in forum Mac MiniRisposte: 7Ultimo messaggio: 04-07-06, 10:31 -
multi hdmi
By spirale in forum TV LCD e PlasmaRisposte: 3Ultimo messaggio: 27-12-05, 17:18 -
scheda grafica per core image core video
By topolino in forum PowerMac (G3/G4/G5)Risposte: 7Ultimo messaggio: 03-12-05, 11:08



LinkBack URL
About LinkBacks
Replica con citazione
il programma che devo rinstallare é artlantis render 3 ma é sicuro perché lo...
problemi con usb e batteria