Algoritmos de hash en GPU, 32 bits frente a 64 bits

5

Leí aquí en ¿Qué algoritmos se pueden descifrar mejor? ¿GPU? que, los algoritmos de hash como SHA1, SHA224, SHA256 que realizan operaciones aritméticas y lógicas de enteros de 32 bits se implementan mejor en GPU que los algoritmos de hashing SHA512 que funcionan en enteros de 64 bits.

¿Cuál es la razón detrás de esto? ¿Las GPU no proporcionan un buen soporte para el desarrollo utilizando enteros de 64 bits?

Leí en la Preguntas frecuentes del desarrollador de CUDA de Nvidia la pregunta: ¿CUDA admite números enteros largos?

Y la respuesta es Sí, sin embargo, dice que las operaciones en enteros de 64 bits de longitud compilan en múltiples secuencias de instrucciones. ¿Es esa la razón por la que las GPU pueden manejar enteros de 32 bits mucho mejor que los enteros de 64 bits?

Más información sobre esto sería útil. Además, si hay alguna referencia que discuta esto más a fondo, me gustaría saberlo.

    
pregunta Neon Flash 26.05.2012 - 10:55
fuente

2 respuestas

5

Para mí, su pregunta se reduce a: "¿Por qué los sistemas GPU de 32 bits?"

La respuesta a las múltiples instrucciones para un número de 64 bits es la misma que una CPU normal. Si la arquitectura es de 64 bits, entonces todo encaja en los registros. Si la arquitectura es de 32 bits, no se ajusta todo y se deben realizar varias pasadas para cargar y procesar todo.

¿Cuál es el razonamiento? Al igual que con la progresión de todos los procesadores, la arquitectura de GPU ha crecido hasta el tamaño que debe ser. En la actualidad, las GPU de 32 bits realizan un trabajo fantástico de procesamiento de gráficos y nadie realmente clama por una tarjeta de video de 64 bits.

Considere mirar su pregunta de otra manera: ¿por qué las CPU modernas no son sistemas de 128 bits? Estoy seguro de que hay personas que quieren ejecutar operaciones de 128 bits, pero simplemente no tiene sentido para los límites de la tecnología tal como está ahora.

    
respondido por el Jeff Ferland 26.05.2012 - 14:37
fuente
1

La GPU tiene registros de 32 bits y operaciones de 32 bits porque esto es suficiente para sus necesidades. La función principal de una GPU es realizar la representación en 3D, que consiste en el funcionamiento en valores de punto flotante con requisitos limitados para Precisión - 32 bits son suficientes para eso. Hay algunos GPU que ofrecen registros de 64 bits, pero los utilizan solo para operaciones de punto flotante, y no para cálculos aritméticos como los que necesitan las funciones hash de "64 bits" como SHA-512.

Una adición es algo relativamente caro en hardware; la propagación por acarreo se puede realizar con tiempo logarítmico, por lo que una adición de 64 bits induce un poco más de latencia que una adición de 32 bits, y sustancialmente muchos más transistores. La fuerza impulsora para las operaciones aritméticas en grandes registros, en la CPU, es la necesidad de abordar una gran cantidad de RAM: cuando una computadora tiene más de 4 GB de RAM, y quiere usarla como una gran matriz de bytes contigua y plana, entonces debe calcular las compensaciones y las direcciones con enteros de 64 bits. Esta es la razón por la que la CPU moderna puede realizar operaciones aritméticas de 64 bits. La misma CPU viene con registros de 256 bits pero no puede hacer adiciones de 256 bits eficientes, lo que muestra que el tamaño del registro no es En sí mismo, el tema principal.

La GPU será buena para computar hashes de 64 bits cuando tengan más de 4 GB de RAM con los que lidiar. Lo que no debería tomar muchos años en suceder, al ritmo actual.

    
respondido por el Thomas Pornin 16.02.2013 - 23:01
fuente

Lea otras preguntas en las etiquetas