PDA

View Full Version : Applicazioni che sfruttino multiprocessore ?


honny
04-11-2004, 10:09
domanda idiota...

da quello che ho potuto capire scrivendo un programma normalmente, supponiamo in C, utilizzando la classica forma main + funzioni , in pratica il so "crea" un singolo thread che viene eseguito, per cui anche avendo piu' processori il compito dell' esecuzione sara' assegnato ad uno solo di essi .

volendo sfruttare anche gli altri processori dovrei creare piu' threads. ( ? )

1)per esempio mi basta su *nix utilizzare delle fork ?
cioe' una fork mi assicura "automaticamente" una applicazione che puo' sfruttare piu' processori ?

2) ho visto che SDL tra le varie potenzialita' ha anche questo : http://sdldoc.csn.ul.ie/thread.php
essendo indipendente dalla piattaforma mi garantisce lo stesso comportamento su so diversi ? ( indipendentemente da come il so gestisce i threads )

3)mi devo preoccupare io io in qualche modo oltre che della creazione di piu' threads di altro che il so non puo' fare autonomamente ?

4)avre piu' threads mi assicura di poter sfruttare piu' processori oppure non e' la giusta via ?

5)dove trovo degli esempi pratici in c molto elementari ?

honny
05-11-2004, 10:29
forse le mie domande sono un po' arzigogolate,riassumiamole cosi' :

"per essere certo di sfruttare le potenzialita' di un multiprocessore mi basta usare thread separati o no?"

beppegrillo
05-11-2004, 13:55
No un thread non ti garantisce che venga eseguito su un'altro processore, ma garantisce solamente lo "sdoppiamento" del flusso di informazioni, che nessuno vieta venga eseguito sullo stesso processore. Per utilizzare il calcolo parallelo, ci sono librerie apposite che ti garantiscono l'esecuzione di codice su più cpu, cerca in rete mpi (librerie standard) ed ovviamente il sistema presuppone che ci sia un software di base che garantisca la comunicazione tra varie cpu, io personalmente uso openmosix sotto sistemi unix like.
Ciao. :)

honny
05-11-2004, 14:13
grazie per le dritte !!!

ilsensine
05-11-2004, 14:22
Originariamente inviato da beppegrillo
No un thread non ti garantisce che venga eseguito su un'altro processore
Vero, ma puoi facilmente forzare il bind su un particolare processore (o gruppo di processori).
Non è sempre una buona idea farlo. Se il sistema operativo decide che i tuoi thread devono girare sullo stesso processore, c'è un motivo.