Qual è il termine * corretto * per un programma che utilizza più core del processore hardware?

5

Voglio dire che il mio programma è in grado di suddividere un lavoro su più core CPU su un singolo sistema. Qual è il termine semplice per questo? Non è multi-thread, perché questo non implica automaticamente che i thread vengano eseguiti in parallelo. Non è multiprocesso, perché il multiprocessing sembra essere una proprietà di un sistema informatico, non un programma. "capace di operare in parallelo" sembra troppo prolisso, e con tutta la confusione della terminologia, non sono nemmeno sicuro se sia accurato.

Quindi esiste un termine semplice per questo?

Modifica: il framework di parallelizzazione usato dal mio programma implementa il parallelismo mediante la foratura di più processi e la comunicazione tra di essi.

Modifica 2: ho trovato quanto segue nell'articolo di Wikipedia su Concorrenza : "La programmazione simultanea è di solito considerato più generale della programmazione parallela ... "Basandoci su questo, sia" concurrent "che" parallel "sono descrizioni appropriate del mio programma, con" parallelo "che è il più preciso.

Tuttavia, mi rendo conto che Wikipedia, come qualsiasi altra enciclopedia, è appropriata per ottenere una panoramica di un argomento, ma potrebbe non essere la migliore fonte per risolvere tali sottigliezze. Quindi sarei grato se qualcuno potesse citare una fonte più autorevole che mostri la differenza tra questi due o se ci sia davvero una differenza.

    
posta Ryan Thompson 01.07.2011 - 02:32
fonte

6 risposte

8

Qui ci sono due cose diverse ma correlate:

  • Se il tuo programma esegue un singolo thread, sottoprocesso di fibra o qualsiasi altro meccanismo di sequenziazione delle istruzioni, allora è single-threaded , indipendentemente dal fatto che venga eseguito sempre sullo stesso core (affinità) o cicla attraverso diversi core. Se, al contrario, il tuo programma esegue più thread, sottoprocessi di fibre, ecc., Allora è multi-threaded , di nuovo indipendentemente dal fatto che lo faccia sullo stesso core o su uno diverso.

  • Se il tuo programma è multi-thread, e solo in quel caso, può eseguire più thread, fibre, processi secondari, ecc. simultaneamente . In questo caso, viene chiamato un programma parallelo .

Nota che un programma parallelo è sempre multi-thread, ma puoi avere programmi multi-thread che non sono paralleli.

    
risposta data 01.07.2011 - 02:39
fonte
4

Penso che sia un po 'difficile rispondere a questa domanda senza ulteriori informazioni. In che modo esattamente il lavoro deve essere suddiviso tra i core?

Ad ogni modo, ci sono due distinzioni principali che vorrei fare:

  • Programmi simultanei . Qui, diversi thread di controllo stanno operando contemporaneamente per raggiungere diversi compiti. Ogni thread può trovarsi in una posizione diversa nel programma in un dato momento. Un buon esempio di questo sarebbe un server web che genera thread per elaborare le richieste. I deadlock e l'imparzialità della programmazione sono preoccupazioni importanti qui.

  • Programmi paralleli . Queste stanno eseguendo operazioni parallele su un dataset (grande). Anche se questo potrebbe effettivamente essere implementato utilizzando più thread, questo non è necessariamente il caso. In particolare, può essere implementato direttamente sfruttando speciali istruzioni parallele della CPU (si pensi alle estensioni MMX / SSE e simili, o alla programmazione GPU). La programmazione di mappe / riduzioni è una scelta naturale in questa categoria. Il ciclo parallelo di Scala è un altro buon esempio di questo.

Questa distinzione viene spesso definita come parallelisys di compito m contro data parallelism .

    
risposta data 01.07.2011 - 08:26
fonte
4

Concorrente

In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other. The computations may be executing on multiple cores in the same chip, preemptively time-shared threads on the same processor, or executed on physically separated processors. A number of mathematical models have been developed for general concurrent computation including Petri nets, process calculi, the Parallel Random Access Machine model and the Actor model

.

    
risposta data 01.07.2011 - 02:51
fonte
0

Puoi usare il termine "programma concorrente / parallelo". I due termini sono leggermente diversi in quanto il parallelismo implica avere più di un core di CPU fisico mentre la concorrenza coinvolge più di un thread indipendentemente dal numero di core.

    
risposta data 01.07.2011 - 02:44
fonte
-3

Multi-core aware

La risposta di tutti gli altri finora sembra avere un avvertimento su ciò che descrive. Perché non entrare nel vivo della questione?

    
risposta data 01.07.2011 - 03:48
fonte
-5

Forse potresti dire che il tuo programma è Asincrono o che esegue il suo lavoro in modo asincrono. Non sono sicuro del tuo particolare programma / metodo.

    
risposta data 01.07.2011 - 02:40
fonte

Leggi altre domande sui tag