es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existen beneficios reales al compilar una versión de 32 bits de mi DLL con AVX o superior?

Tengo una DLL heredada de Windows (escrita en c++) para la cual necesito mantener una versión de 32 bits, junto con la versión de 64 bits. Estoy actualizando el código pesado de matemáticas con simd utilizando la biblioteca de clases vectoriales de Agner, y no estoy viendo mejoras significativas de velocidad para la versión de 32 bits cuando compilo con AVX en comparación con SSE4.2. Soy consciente de que con el código de 32 bits siempre hay solo 8 registros de vector disponibles, pero no estoy seguro (después de mucha búsqueda) exactamente qué significa esto cuando se compila con AVX, AVX2 o AVX512. ¿Existen opciones de compilador (Microsoft o Clang) que me den algunas mejoras de velocidad valiosas sobre SSE4.2 (para bucles simples de operaciones de punto flotante), o debería ahorrarme problemas y compilar la versión de 32 bits con SSE4.2?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como mencionaste, el código de 32 bits tiene un número limitado de registros de vectores disponibles. Con AVX, aún solo hay 8 registros de vectores disponibles para el código de 32 bits, sin embargo, tienen el doble de ancho que los registros SSE. En otras palabras, los registros AVX de 256 bits se pueden dividir en dos mitades de 128 bits para su uso en el código de 32 bits. AVX2 y AVX512 también proporcionan opciones similares para el código de 32 bits.

    Sin embargo, si no estás viendo mejoras significativas de velocidad con AVX sobre SSE4.2 al compilar el código con la biblioteca de clases vectoriales de Agner, es poco probable que las opciones del compilador te brinden mejoras de rendimiento significativas. Puede ser mejor quedarse con SSE4.2 para la versión de 32 bits y usar AVX para la versión de 64 bits.

    En general, es importante probar diferentes opciones y medir el rendimiento para determinar la configuración óptima para tu código y hardware específicos.

Comments are closed.