optimization - Cosa significano i termini "CPU bound" e "I / O bound"?

Translate

Cosa significano i termini "CPU bound" e "I / O bound"?

This question and all comments follow the "Attribution Required."

Tutte le risposte

Translate

È abbastanza intuitivo:

Un programma è vincolato alla CPU se andrebbe più veloce se la CPU fosse più veloce, cioè trascorre la maggior parte del suo tempo semplicemente usando la CPU (facendo calcoli). Un programma che calcola nuove cifre di π sarà tipicamente legato alla CPU, si tratta solo di sgranocchiare numeri.

Un programma è vincolato all'I / O se andrebbe più veloce se il sottosistema I / O fosse più veloce. Quale sistema I / O esatto si intende può variare; In genere lo associo al disco, ma ovviamente anche la rete o la comunicazione in generale sono comuni. Un programma che cerca alcuni dati in un file enorme potrebbe diventare vincolato all'I / O, poiché il collo di bottiglia è quindi la lettura dei dati dal disco (in realtà, questo esempio è forse un po 'antiquato in questi giorni con centinaia di MB / s in arrivo da SSD).

fonte
Translate

CPU vincolatasignifica che la velocità di avanzamento del processo è limitata dalla velocità della CPU. È probabile che un'attività che esegue calcoli su un piccolo insieme di numeri, ad esempio moltiplicando piccole matrici, sia vincolata alla CPU.

I / O vincolatosignifica che la velocità con cui un processo procede è limitata dalla velocità del sottosistema I / O. Un'attività che elabora i dati dal disco, ad esempio, il conteggio del numero di righe in un file è probabile che sia associata a I / O.

Limitato alla memoriasignifica che la velocità con cui un processo procede è limitata dalla quantità di memoria disponibile e dalla velocità di tale accesso alla memoria. È probabile che un'attività che elabora grandi quantità di dati in memoria, ad esempio moltiplicando matrici di grandi dimensioni, sia Limite di memoria.

Vincolato alla cacheindica la velocità con cui l'avanzamento di un processo è limitato dalla quantità e dalla velocità della cache disponibile. Un'attività che elabora semplicemente più dati di quelli che si trovano nella cache verrà vincolata alla cache.

I / O Bound sarebbe più lento di Memory Bound sarebbe più lento di Cache Bound sarebbe più lento di CPU Bound.

La soluzione per essere vincolati a I / O non è necessariamente ottenere più memoria. In alcune situazioni, l'algoritmo di accesso potrebbe essere progettato attorno alle limitazioni di I / O, memoria o cache. VedereAlgoritmi ignari della cache.

fonte
Translate

CPU bound significa che il programma è bloccato dalla CPU o dall'unità di elaborazione centrale, mentreI / Obound significa che il programma è bloccato da I / O o input / output, come la lettura o la scrittura su disco, rete, ecc.

In generale, quando si ottimizzano i programmi per computer, si cerca di individuare il collo di bottiglia ed eliminarlo. Sapere che il tuo programma è vincolato alla CPU aiuta, in modo da non ottimizzare inutilmente qualcos'altro.

[E per "collo di bottiglia", intendo la cosa che rende il tuo programma più lento di quanto avrebbe fatto altrimenti.]

fonte
Translate

Un altro modo per esprimere la stessa idea:

  • Se accelerare la CPU non accelera il tuo programma, potrebbe esserloI / Olimite.

  • Se accelerare l'I / O (ad esempio utilizzando un disco più veloce) non aiuta, il programma potrebbe essere vincolato alla CPU.

(Ho usato "potrebbe essere" perché devi prendere in considerazione altre risorse. La memoria è un esempio.)

fonte
Translate

Quando il tuo programma sta aspettandoI / O(es. lettura / scrittura su disco o lettura / scrittura in rete, ecc.), la CPU è libera di svolgere altre attività anche se il programma è fermo. La velocità del tuo programma dipenderà principalmente dalla velocità con cui l'IO può avvenire e se vuoi accelerarlo dovrai accelerare l'I / O.

Se il tuo programma esegue molte istruzioni di programma e non aspetta I / O, allora si dice che sia legato alla CPU. Accelerare la CPU renderà il programma più veloce.

In entrambi i casi, la chiave per accelerare il programma potrebbe non essere velocizzare l'hardware, ma ottimizzare il programma per ridurre la quantità di IO o CPU di cui ha bisogno, o fargli fare I / O mentre fa anche un uso intensivo della CPU cose.

fonte
Alma Lee
Translate

Il limite di I / O si riferisce a una condizione in cui il tempo necessario per completare un calcolo è determinato principalmente dal periodo trascorso in attesa del completamento delle operazioni di input / output.

Questo è l'opposto di un'attività legata alla CPU. Questa circostanza si verifica quando la velocità con cui vengono richiesti i dati è più lenta della velocità con cui vengono consumati o, in altre parole, si impiega più tempo a richiedere i dati che a elaborarli.

fonte
dua
Translate

Processi associati a I / O: impiegano più tempo a eseguire operazioni di I / O rispetto ai calcoli, hanno molti brevi picchi di CPU. Processi vincolati alla CPU: dedica più tempo ai calcoli, pochi burst della CPU molto lunghi

fonte
Translate

Processo associato a I / O: - Se la maggior parte della durata di un processo viene trascorsa nello stato i / o, il processo è un processo vincolato ai / o. Esempio: -calculator, Internet Explorer

Processo vincolato alla CPU: - Se la maggior parte della vita del processo viene trascorsa nella CPU, allora è un processo legato alla CPU.

fonte
Leave a Reply
You must be logged in to post a answer.