Algoritmi di hash su GPU, 32 bit contro 64 bit

5

Ho letto qui in Quali algoritmi sono meglio craccati da GPU? che, algoritmi di hashing come SHA1, SHA224, SHA256 che eseguono operazioni aritmetiche e logiche a 32 bit interi sono meglio implementati su GPU rispetto all'algoritmo di hashing SHA512 che funziona su interi a 64 bit.

Qual è la ragione di questo? Le GPU non forniscono un buon supporto per lo sviluppo utilizzando numeri interi a 64 bit?

Ho letto su Domande frequenti sullo sviluppatore di Nvidia CUDA la domanda: CUDA supporta gli interi lunghi?

E la risposta è Sì, tuttavia dice che le operazioni su interi a 64 bit vengono compilate in più sequenze di istruzioni. È questo il motivo per cui le GPU sono in grado di gestire interi a 32 bit molto meglio degli interi a 64 bit?

Ulteriori informazioni in merito potrebbero essere utili. Inoltre, se ci sono riferimenti che discutano di questo in modo più approfondito, mi piacerebbe sapere.

    
posta Neon Flash 26.05.2012 - 10:55
fonte

2 risposte

5

Per me, la tua domanda si riduce a "Perché le GPU sono sistemi a 32 bit?"

La risposta alle istruzioni multiple per un numero a 64 bit è la stessa di una normale CPU. Se l'architettura è a 64 bit, allora tutto si adatta ai registri. Se l'architettura è a 32 bit, non tutto si adatta e devono essere eseguiti più passaggi per caricare ed elaborare tutto.

Qual è il ragionamento? Come con la progressione di tutti i processori, l'architettura della GPU è cresciuta fino alle dimensioni che deve essere. Attualmente, le GPU a 32 bit fanno un ottimo lavoro di elaborazione grafica e nessuno sta chiedendo a gran voce una scheda video a 64 bit.

Considera di guardare la tua domanda in un altro modo: perché i moderni sistemi a 128 bit non sono CPU? Sono sicuro che ci sono persone là fuori che vorrebbero eseguire operazioni a 128 bit, ma semplicemente non ha senso per i limiti della tecnologia così com'è in questo momento.

    
risposta data 26.05.2012 - 14:37
fonte
1

Le GPU hanno registri a 32 bit e operazioni a 32 bit perché questo è sufficiente per le loro esigenze. Il ruolo principale di una GPU è di eseguire il rendering 3D, che riguarda l'operazione sui valori a virgola mobile con requisiti limitati per precisione - 32 bit sono sufficienti per questo. Esistono alcuni GPU che offrono registri a 64 bit, ma li usano solo per operazioni in virgola mobile, e non per calcoli aritmetici come quelli necessari per le funzioni hash "a 64 bit" come SHA-512.

Un'aggiunta è qualcosa di relativamente costoso nell'hardware; la propagazione può essere effettuata con il tempo logaritmico, quindi un'aggiunta a 64 bit induce un po 'più di latenza di un'aggiunta a 32 bit e sostanzialmente molti più transistor. La forza trainante per operazioni aritmetiche su grandi registri, in CPU, è la necessità di indirizzare molta RAM: quando un computer ha più di 4 GB di RAM e vuole usarlo come una grande matrice di byte contigui, allora ha bisogno di calcolare offset e indirizzi con numeri interi a 64 bit. Questo è il motivo per cui la moderna CPU può eseguire operazioni aritmetiche a 64 bit. La stessa CPU viene fornita con registri a 256-bit ma non è possibile eseguire efficaci aggiunte a 256 bit, il che dimostra che la dimensione del registro non è, di per sé, il problema principale.

GPU è in grado di calcolare gli hash a 64 bit quando hanno più di 4 GB di RAM da gestire. Il che non dovrebbe richiedere molti anni, al ritmo attuale.

    
risposta data 16.02.2013 - 23:01
fonte

Leggi altre domande sui tag