Domanda

Qual è il significato di "software parallelo"? e quali sono le differenze tra "software parallelo" e "software normale"?

Quali sono i suoi vantaggi e svantaggi?

Scrive "software parallelo" richiede un hardware specifico o un linguaggio di programmazione?

È stato utile?

Soluzione

http://en.wikipedia.org/wiki/Thread_(computer_science)

  

In informatica, un thread di   l'esecuzione deriva da un fork di a   programma per computer in due o più   attività in esecuzione contemporaneamente. Il   implementazione di thread e   i processi differiscono da uno operativo   sistema a un altro, ma nella maggior parte dei casi,   un thread è contenuto all'interno di a   processi. Possono esistere più thread   all'interno dello stesso processo e condividere   risorse come la memoria, mentre   processi diversi non condividono questi   risorse.

La maggior parte dei linguaggi di programmazione moderni supporta il multithreading in un modo o nell'altro (anche Javascript nelle versioni più recenti). : -)

Vantaggi e svantaggi possono dipendere dall'attività. Se hai molte elaborazioni che devi fare, il multithreading può aiutarti a suddividerlo in unità di lavoro più piccole su cui ciascuna CPU può lavorare indipendentemente allo stesso tempo. Tuttavia, il codice multithread sarà generalmente più complesso da scrivere e gestire rispetto al codice a thread singolo.

Puoi ancora scrivere / eseguire codice multithread su una macchina che ha un solo processore. Sebbene ci sia un solo processore per eseguire le attività, il sistema operativo assicurerà che si verifichino simultaneamente cambiando rapidamente contesto ed eseguendo alcune istruzioni per ogni thread alla volta.

Alcuni hardware specializzati che potresti avere familiarità con attività parallele sono la GPU che può essere trovata sulla maggior parte dei nuovi computer. In questo video, i Mythbuster mostrano la differenza tra disegnare su una CPU a thread singolo e una GPU multi-thread:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

Altri suggerimenti

  

Sono i "software parallelo"? richiede un hardware o un linguaggio di programmazione specifici?

Sì e Sì.

Il primo è banalmente facile. La maggior parte delle CPU moderne (dire qualcosa di più nuovo di m6800) hanno funzionalità hardware che consentono di fare più di una cosa alla volta, anche se non necessariamente entrambe allo stesso tempo. Ad esempio, quando si interrompe un allarme timer, una CPU potrebbe salvare ciò che sta facendo e quindi iniziare a fare qualcos'altro. Tali attività vengono eseguite contemporaneamente.

Anche senza quello, potresti semplicemente ottenere due macchine con una sorta di connessione tra loro (come una semplice connessione seriale tramite un adattatore modem Null) e possono entrambi lavorare sulla stessa attività in parallelo.

La maggior parte delle nuove CPU (non solo moderne ma recenti) hanno risorse di elaborazione parallele integrate. Queste CPU multi-core possono effettivamente lavorare su due o più attività contemporaneamente, un'attività per core e avere funzioni speciali che rendono è un po 'più efficiente cooperare per questi compiti.

Il secondo, che richiede strumenti software speciali come un linguaggio abilitato in parallelo, è in qualche modo la parte più difficile del calcolo parallelo. Se sei l'unica persona in cucina, è abbastanza facile cucinare un pasto, seguendo ogni ricetta dall'inizio alla fine, uno dopo l'altro, fino a quando tutti i piatti sono cotti. Se vuoi velocizzarlo aggiungendo più cuochi, devi essere un po 'più attento a non calpestare le dita dei piedi.

Il modo più semplice di gestirlo è utilizzare una libreria di threading che offre alcuni strumenti in modo che più attività possano organizzarsi in modo da non intasarsi l'un l'altro. Questo non è facile come contrassegnare un programma come parallelo e il sistema si occupa di tutto il resto, piuttosto, devi scrivere ogni attività per comunicare con ogni altra attività in ogni luogo in cui esiste la possibilità che interferiscano.

I software paralleli possono trarre vantaggio nativo su più core / cpus su un computer o talvolta su più computer. Esempi includono software di rendering grafico e software di progettazione di circuiti.

Non sono così sicuro degli svantaggi diversi dal software compatibile con più processori che tende ad essere un maiale alla CPU.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top