+ Replica alla discussione
Mostra risultati 1 a 3 di 3
  1. #1
    Novizio
    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

  2. #2
    vdm
    vdm non è connesso
    Guru vdm avatar
    Iscritto
    11-01
    Luogo
    , ,
    Messaggi
    1.143
    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.

  3. #3
    Novizio
    Iscritto
    04-06
    Messaggi
    2
    Grazie molte per la risposta esaurientissima

    Ciao

Discussioni simili

  1. Risposte: 1
    Ultimo messaggio: 20-11-06, 05:05
  2. multi-camera (in fcp 5.0)
    By ismael in forum Final Cut Pro / Express
    Risposte: 9
    Ultimo messaggio: 21-07-06, 13:37
  3. Risposte: 7
    Ultimo messaggio: 04-07-06, 10:31
  4. multi hdmi
    By spirale in forum TV LCD e Plasma
    Risposte: 3
    Ultimo messaggio: 27-12-05, 17:18
  5. scheda grafica per core image core video
    By topolino in forum PowerMac (G3/G4/G5)
    Risposte: 7
    Ultimo messaggio: 03-12-05, 11:08

Regole messaggi

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts