Resultados 1 al 18 de 18

Tema: Físicas por CPU: AVX vs SSE

  1. #1
    The Lament Configuration

    Moderador
    Avatar de necronomicon
    Fecha de ingreso
    25 jun, 06
    Ubicación
    Lima - Perú
    Mensajes
    7,583

    Físicas por CPU: AVX vs SSE

    La nuevas instrucciones de cálculo vectorial AVX presentes en los modernos CPU Intel Sandy Bridge y próximamente en los CPU AMD Vision FX (Bulldozer), prometen llevar a las físicas por CPU a un nuevo nivel de rendimiento, el que podría rivalizar ante las físicas por GPU. Desde la web Geeks3D nos llega una interesante comparativa donde se aprecian las diferencias de rendimiento entre los set de instrucciones SSE y el reciente AVX.




    Artículo Completo: Físicas por CPU: AVX vs SSE

  2. #2
    alcoholer
    Moderador
    Avatar de virustec
    Fecha de ingreso
    13 ago, 08
    Ubicación
    Bogota Colombia
    Mensajes
    5,208

    Re: Físicas por CPU: AVX vs SSE

    oson... esto del avx fue un gran acierto, lo que me llega a la cabeza es como tomara esto Nvidia... y cini intentara con su marketing contrarrestar esto. esperando nuevas diapositivas fisicas por gpu de nvidia en 3..2 ...1...
    Visita la web donde laborowww.tu-nube.com
    La Vida Humana es una lucha entre la ignorancia y la iluminación.

  3. #3
    living in a happy nation Avatar de 3k.mark.3k
    Fecha de ingreso
    19 mar, 09
    Ubicación
    Santiasco de SHILE XD
    Mensajes
    267

    Re: Físicas por CPU: AVX vs SSE

    Me esta tentando intel pasarme a su plataforma con sus sandy bitch xDDD, uta que son monstruosos xDD

  4. #4
    Gamer Avatar de RazorClaw
    Fecha de ingreso
    19 jul, 09
    Mensajes
    73

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por 3k.mark.3k Ver mensaje
    Me esta tentando intel pasarme a su plataforma con sus sandy bitch xDDD, uta que son monstruosos xDD
    Tentador, pero falta el golpe de AMD, depende de eso a ver quien se lleva la corona esta vez. (le tengo fe a AMD, vamos que estan haciendo un buen trabajo -No se dejen guiar por mi firma )
    i7-930 Bloomfield 2.8GHz | GIGABYTE GA-X58A-UD3R - SATA 6Gb/s USB 3.0 | G.Skill® PI 6GB DDR3 1600 3x2 Triple Channel | MSI N570GTX-M2D12D5 GeForce GTX 570 (Fermi) | WD Caviar Black 1TB 7200 RPM 64MB SATA 6.0Gb/s | CoolerMaster® GX 750 Watts PFC Active 80 Plus | CoolerMaster HAF 932 | LG FLATRON W2353V

  5. #5
    @Stock-man Avatar de neolandes
    Fecha de ingreso
    24 oct, 08
    Ubicación
    stgo de chili
    Mensajes
    658

    Re: Físicas por CPU: AVX vs SSE

    ahora los cpu de programacion general estan (estaran) haciendo la pega de un gpu (o su chip aliado) y los gpu estan haciendo parte de la pega de los cpu.
    falta poco para que los computadores vengan con un SoC que reemplazandolo va a llegar un upgrade completo.
    aparte, nvidia

  6. #6
    The Lament Configuration

    Moderador
    Avatar de necronomicon
    Fecha de ingreso
    25 jun, 06
    Ubicación
    Lima - Perú
    Mensajes
    7,583

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por virustec Ver mensaje
    oson... esto del avx fue un gran acierto, lo que me llega a la cabeza es como tomara esto Nvidia... y cini intentara con su marketing contrarrestar esto. esperando nuevas diapositivas fisicas por gpu de nvidia en 3..2 ...1...
    Desde el lanzamiento de las instrucciones SSE no salia un cambio que potenciara el poder de cálculo vectorial en los CPU x86, AVX es el 1º cambio importante desde SSE y es de suponerse que en los próximos meses los nuevos softwares les saquen provecho, y viendo estas demos es obvio que Havok será uno de los primeros softwares compilados para aprovechar AVX y su mayor poder de cálculo, ello sumado al soporte de hasta 16 núcleos que ofreció Intel (actualmente Havok está limitado a 6 núcleos) podrían hacer de Havok un serio rival ante las físicas por CPU (PhysX y las próximas Bullet y DMM de AMD), a la vez que dejará en muy mala posición a PhysX por CPU el cual aún continua usando x87 (aunque el nuevo SDK con soporte a SSE debe salir dentro de poco, pero Nvidia nada ha mencionado sobre el soporte AVX).

    En cuanto al marketing ya veremos, pero con su nuevo acuerdo dudo que Intel y Nvidia se muestren las uñas por un tiempo, aunque Intel ya tiene casi listo su OpenCL por AVX, aún se desconoce si gracias al acuerdo también implementará CUDA por AVX (aunque Nvidia CUDA x86 usará SSE), en fin con la evolución de los conjuntos de instrucciones vectoriales en los CPU x86 algunas aplicaciones GPGPU irán perdiendo sentido; aunque la idea de AMD de en un futuro reemplazar las instucciones vectoriales por implementaciones basadas en sus núcleos gráficos suena como una sólida apuesta a futuro, me imagino que ello algo tuvo que ver para que Intel decidiera realizar dicho acuerdo con Nvidia.


    Saludos

  7. #7
    Coolfacecompany
    Avatar de monaita
    Fecha de ingreso
    29 nov, 07
    Ubicación
    curico
    Mensajes
    3,671

    Re: Físicas por CPU: AVX vs SSE

    Interesante ver como Intel sigue desarrollando sus tecnologías y las va homologando a otras para que mas aplicaciones hagan uso de estas, espero que Physx sea compilado para AVX y de esta forma mas desarrolladores de juegos se interesen en tomar esta herramienta y se atrevan a implementarlas en sus juegos.

  8. #8
    Usuario Avatar de Megacubo
    Fecha de ingreso
    09 may, 09
    Mensajes
    173

    Re: Físicas por CPU: AVX vs SSE

    Esto solo es valido para Intel Sandy Bridge y AMD Bulldozer?

    De ser así significa que yo con mi Phenom IIX6 no voy a poder disfrutar de esto
    Última edición por Megacubo; 16/01/2011 a las 16:13

  9. #9
    Gran Maestro Overclockero Avatar de Lugaidster
    Fecha de ingreso
    04 jul, 06
    Ubicación
    Santiago
    Mensajes
    176

    Re: Físicas por CPU: AVX vs SSE

    El artículo parece salido del departamento de marketing de Intel. La diferencia en rendimiento absoluta entre SSE y AVX no es tan grande.

    SSE 128-bits: 72 FPS
    AVX 128-bits: 82 FPS
    AVX 256-bits: 85 FPS

    Lo de SSE 256-bits es una emulación, pero no un caso real ya que eso no existe. El mejor caso para ambos set de instrucciones se separa por sólo un 18%. AVX no es el doble de SSE. Y que no vengan con la falacia que el código del futuro va a venir optimizado para 256-bits, los CPUs que no soportan AVX sólo tienen registros de 128-bits, y estos requerirán un camino especial codificado para ellos. El que se de la lata de programar utilizando instrucciones especiales, se va a dar la lata de elegir el mejor camino para la arquitectura de destino. Siempre ha sido así hasta ahora y eso no cambiará. Las instrucciones AVX tienen ventajas, pero la diferencia es notoria en otros casos de uso, especialmente en el área que requiere cálculos con números de 64-bits de precisión como el trabajo científico, en donde probablemente sea más rápido usar una GPU Tesla, pero es debatible.

    Los cálculos de física son principalmente en vectores de 4 componentes con matrices de transformación de 4x4 (Si no sabes por qué, estudia Álgebra Lineal). Dado que la precisión por defecto en la industria es de 32-bits (64-bits no tiene sentido en un juego ya que las tarjetas de video de consumidores soportan sólo 32-bits o son mucho más lentas con 64-bits de precisión, y ellas son las que dibujan estos vectores). Con 128-bits alcanza para meter un vector de 4 componentes justo. Como los cálculos se realizan entre vectores, no tiene mayor ventaja tener registros de 256-bits, cosa que vemos en los benchmarks (82 FPS vs 85 FPS, sólo un 4% de ventaja). Por el otro lado, si los números que componen los vectores son de 64-bits, ahí nos damos cuenta que nos conviene tener 256-bits, pero ese no es el caso con los motores de física para juegos.
    ----
    @monaita dado que Physx no usa ni siquiera SSE ni multithreading automático, no veo en el futuro que utilicen AVX, claro que todo puede cambiar con Physx 3, pero dado que no se habla de ello desde hace meses, no sé... Le tengo más fe a Bullet.
    Última edición por Lugaidster; 16/01/2011 a las 20:22 Razón: Post unidos

  10. #10
    x
    x está desconectado
    Blue Gene user
    Avatar de x
    Fecha de ingreso
    29 may, 04
    Ubicación
    Cambridge, MA, EE. UU.
    Mensajes
    2,893

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por Lugaidster Ver mensaje
    Las instrucciones AVX tienen ventajas, pero la diferencia es notoria en otros casos de uso, especialmente en el área que requiere cálculos con números de 64-bits de precisión como el trabajo científico, en donde probablemente sea más rápido usar una GPU Tesla, pero es debatible.
    La diferencia no es tan clara. Las CPUs estan acercandose de forma considerable a las GPUs. Un Sandy Bridge o un Bulldozer de 8 cores a 3 GHz hace casi 100 GFlops de doble precision. La GTX 580 hace unos 200 GFlops. Pero en la CPU es mucho más fácil lograr una parte significativa de ese rendimiento. Y la generación posterior de CPUs probablemente volvera a doblar el rendimiento por core y muy posiblemente además incrementará el numero de cores por procesador.

    Cita Iniciado por Lugaidster Ver mensaje
    Los cálculos de física son principalmente en vectores de 4 componentes con matrices de transformación de 4x4 (Si no sabes por qué, estudia Álgebra Lineal). Dado que la precisión por defecto en la industria es de 32-bits (64-bits no tiene sentido en un juego ya que las tarjetas de video de consumidores soportan sólo 32-bits o son mucho más lentas con 64-bits de precisión, y ellas son las que dibujan estos vectores). Con 128-bits alcanza para meter un vector de 4 componentes justo. Como los cálculos se realizan entre vectores, no tiene mayor ventaja tener registros de 256-bits, cosa que vemos en los benchmarks (82 FPS vs 85 FPS, sólo un 4% de ventaja). Por el otro lado, si los números que componen los vectores son de 64-bits, ahí nos damos cuenta que nos conviene tener 256-bits, pero ese no es el caso con los motores de física para juegos.
    No se de donde sacas lo de las cuatro componentes, depende del problema el tamaño de vectores que quieres usar. Pero siempre tienes que trabajar con mucho más de cuatro valores (aunque la unidad básica pueden ser 4 valores). Si ya puedes usar SSE, es muy posible que puedas fusionar dos operaciones en un vector AVX fácilmente.

    De hecho, una GPU se puede pensar como un procesador vectorial de largo 32 (Nvidia) o 64 (AMD). Dificilmente lo llenas con 4 valores.

    De todas formas la principal ventaja de AVX no es que los vectores sean más grandes, sino que el tiempo de procesar un vector el doble de largo es el mismo, duplicando el rendimiento máximo.

    Cita Iniciado por Lugaidster Ver mensaje
    @monaita dado que Physx no usa ni siquiera SSE ni multithreading automático, no veo en el futuro que utilicen AVX, claro que todo puede cambiar con Physx 3, pero dado que no se habla de ello desde hace meses, no sé... Le tengo más fe a Bullet.
    Nvidia tiene que balancear la necesidad de vender sus tarjetas gráficas con la supervivencia de PhysX, si se va por lo segundo, es muy probale que usen AVX.

  11. #11
    Gran Maestro Overclockero Avatar de Lugaidster
    Fecha de ingreso
    04 jul, 06
    Ubicación
    Santiago
    Mensajes
    176

    Re: Físicas por CPU: AVX vs SSE

    Un Sandy Bridge o un Bulldozer de 8 cores a 3 GHz hace casi 100 GFlops de doble precision.
    Dado que los Bulldozer todavía no salen al mercado, sacarlos en este tema no tiene sentido. No puedes hablar sobre un producto que todavía no ha salido y de lo que sólo hay especulaciones de como va a rendir.

    En cualquier caso, lo de 8 cores en el caso de los bulldozer sólo se aplica a las instrucciones de números entero. En un Bulldozer se comparte una unidad FPU por cada dos "núcleos":



    Si se ejecutan instrucciones de 128-bits, cada "núcleo" puede ejecutar su propio hilo, pero en el caso de 256-bits, se comparten, o sea, 1 instrucción por cada dos núcleos.

    La GTX 580 hace unos 200 GFlops. Pero en la CPU es mucho más fácil lograr una parte significativa de ese rendimiento. Y la generación posterior de CPUs probablemente volvera a doblar el rendimiento por core y muy posiblemente además incrementará el numero de cores por procesador.
    Si nos ponemos a hablar a futuro, estoy seguro de que también habrán versiones nuevas con mejor rendimiento por parte de las GPU, pero tal y como dije, el tema es debatible. De cualquier forma, una Radeon 5870 ya tiene en forma teórica ~500 GFLOPS en DP y es de hace un año y medio. Me imagino que una Radeon 6970 tenga más. En cualquier caso, para que la CPU llegue a los números teóricos, se requieren condiciones especiales tal y como en el caso de la GPU. En la vida real, va a depender del programa. Pero hay algo que es casi seguro, para aplicaciones que tienen enormes cantidades de datos, casi siempre es mejor usar una GPU. La latencia con la GPU es mayor, pero esto se mitiga si la cantidad de datos es enorme y los cálculos son paralelizables.

    No se de donde sacas lo de las cuatro componentes
    Lo explico. Los motores físicos de hoy en día generalmente son para juegos en un espacio de tres dimensiones. Las posiciones en este espacio son representadas en tres coordenadas: x, y, z en el sistema de coordenadas cartesiano. Entonces tenemos 3 componentes. El punto es que para poder hacer transformaciones lineales en estos vectores, se necesitan matrices de 4x4 (existen versiones de 3x3, pero son simplificaciones). Además, los cuaterniones que se utilizan para representar la orientación, entre otras cosas, son de cuatro componentes (x, y, z, w). Por lo tanto, para poder realizar los cálculos correspondientes, generalmente la cuarta componente del vector es una constante. Ahí está. La unidad básica de las Radeon actuales (VLIW5) Tienen cuatro unidades simples para procesar un vector de 4 componentes. Las Radeones VLIW4 siguen teniendo 4 unidades de proceso para procesar un vector de 4 componentes con una instrucción.

    Intel se la jugó por rendimiento con 256-bits. AMD se la jugó por 128-bits. A 256-bits Intel tiene el doble de rendimiento que AMD, a 128 AMD tiene el doble que Intel. De cualquier manera, si hablamos de rendimiento SP (El formato usado por los motores de física actuales) una GPU sobrepasa los 2 TFLOPS, un Sandy Bridge en comparación a 3.8 GHz no supera los 60,8 GFLOPS por núcleo (con cuatro son 243,2 GFLOPS), es grande la diferencia.

    Si ya puedes usar SSE, es muy posible que puedas fusionar dos operaciones en un vector AVX fácilmente.
    Posible sí. Fácil, definitivamente no. Es por eso que AMD y Intel hicieron cosas distintas.

    Nvidia tiene que balancear la necesidad de vender sus tarjetas gráficas con la supervivencia de PhysX, si se va por lo segundo, es muy probale que usen AVX.
    Si lo llegan a hacer, tienen que ir por SSE primero (Un tema de compatibilidad y mercado). Todavía no llegan ahí, así que no espero soporte para AVX en el futuro cercano.

  12. #12
    x
    x está desconectado
    Blue Gene user
    Avatar de x
    Fecha de ingreso
    29 may, 04
    Ubicación
    Cambridge, MA, EE. UU.
    Mensajes
    2,893

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por Lugaidster Ver mensaje
    Dado que los Bulldozer todavía no salen al mercado, sacarlos en este tema no tiene sentido. No puedes hablar sobre un producto que todavía no ha salido y de lo que sólo hay especulaciones de como va a rendir.
    Las especificaciones de Bulldozer ya fueron liberadas y podemos saber su rendimiento teorico.

    Cita Iniciado por Lugaidster Ver mensaje
    En cualquier caso, lo de 8 cores en el caso de los bulldozer sólo se aplica a las instrucciones de números entero. En un Bulldozer se comparte una unidad FPU por cada dos "núcleos":

    http://images.anandtech.com/reviews/...zerthreads.jpg

    Si se ejecutan instrucciones de 128-bits, cada "núcleo" puede ejecutar su propio hilo, pero en el caso de 256-bits, se comparten, o sea, 1 instrucción por cada dos núcleos.
    Bulldozer tiene FMA, por lo que son dos operaciones de 128 bits por ciclo por nucleo.

    Cita Iniciado por Lugaidster Ver mensaje
    Si nos ponemos a hablar a futuro, estoy seguro de que también habrán versiones nuevas con mejor rendimiento por parte de las GPU, pero tal y como dije, el tema es debatible. De cualquier forma, una Radeon 5870 ya tiene en forma teórica ~500 GFLOPS en DP y es de hace un año y medio. Me imagino que una Radeon 6970 tenga más. En cualquier caso, para que la CPU llegue a los números teóricos, se requieren condiciones especiales tal y como en el caso de la GPU. En la vida real, va a depender del programa. Pero hay algo que es casi seguro, para aplicaciones que tienen enormes cantidades de datos, casi siempre es mejor usar una GPU. La latencia con la GPU es mayor, pero esto se mitiga si la cantidad de datos es enorme y los cálculos son paralelizables.
    En una CPU cualquier implementacion razonable de DGEMM es capaz de alcanzar un rendimiento cercano al maximo teorico (y es probablemente la rutina mas usada en HPC).

    Cita Iniciado por Lugaidster Ver mensaje
    Lo explico. Los motores físicos de hoy en día generalmente son para juegos en un espacio de tres dimensiones. Las posiciones en este espacio son representadas en tres coordenadas: x, y, z en el sistema de coordenadas cartesiano. Entonces tenemos 3 componentes. El punto es que para poder hacer transformaciones lineales en estos vectores, se necesitan matrices de 4x4 (existen versiones de 3x3, pero son simplificaciones). Además, los cuaterniones que se utilizan para representar la orientación, entre otras cosas, son de cuatro componentes (x, y, z, w). Por lo tanto, para poder realizar los cálculos correspondientes, generalmente la cuarta componente del vector es una constante. Ahí está. La unidad básica de las Radeon actuales (VLIW5) Tienen cuatro unidades simples para procesar un vector de 4 componentes. Las Radeones VLIW4 siguen teniendo 4 unidades de proceso para procesar un vector de 4 componentes con una instrucción.
    Pero tienes mucho mas de 4 valores para trabajar. Tu idea de que 4 es suficiente y los vectores mas largos no sirven esta errada.


    Cita Iniciado por Lugaidster Ver mensaje
    Intel se la jugó por rendimiento con 256-bits. AMD se la jugó por 128-bits. A 256-bits Intel tiene el doble de rendimiento que AMD, a 128 AMD tiene el doble que Intel.
    AMD esta usando la misma tecnica que hizo antes con x87 y SSE2. Usar dos FPUs como una FPU del doble de largo, lo que le funciono bastante bien. A 256 bits el rendimiento es el mismo, por que AMD tendra FMA.

    Cita Iniciado por Lugaidster Ver mensaje
    De cualquier manera, si hablamos de rendimiento SP (El formato usado por los motores de física actuales) una GPU sobrepasa los 2 TFLOPS, un Sandy Bridge en comparación a 3.8 GHz no supera los 60,8 GFLOPS por núcleo (con cuatro son 243,2 GFLOPS), es grande la diferencia.
    Y? Esa diferencia no se capitaliza en rendimiento real. Nvidia tuvo que usar x87 para hacer parecer que PhysX por GPU es mas rapido que por CPU.

  13. #13
    Gran Maestro Overclockero Avatar de Lugaidster
    Fecha de ingreso
    04 jul, 06
    Ubicación
    Santiago
    Mensajes
    176

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por x Ver mensaje
    Bulldozer tiene FMA, por lo que son dos operaciones de 128 bits por ciclo por nucleo. [...] AMD esta usando la misma tecnica que hizo antes con x87 y SSE2. Usar dos FPUs como una FPU del doble de largo, lo que le funciono bastante bien. A 256 bits el rendimiento es el mismo, por que AMD tendra FMA.
    Eso no significa que lo que dije no sea cierto. Son cuatro unidades Flex-FP. Entonces tienes 2x128x4 = 256x4, en definitiva, lo mismo que dije aplica.

    Si te quieres poner técnico:

    Usando AVX:

    Bulldozer: 256-bits / 64-bits * 4 unidades Flex-FP = 16 FLOPS DP x ciclo

    Sandy Bridge: 256-bits / 64-bits * 4 unidades FPU * 2 puertos (uno para fadd y otro para fmul) = 32 FLOPS DP x ciclo.

    Usando SSE:

    Bulldozer: 128-bits / 64-bits * 4 unidades Flex-FP * 2 instrucciones simultaneas = 16 FLOPS DP x ciclo

    Sandy Bridge: 128-bits / 64-bits * 4 unidades FPU * 2 puertos (uno para fadd y otro para fmul) = 16 FLOPS DP x ciclo

    En donde AMD tiene la ventaja es que puede ejecutar 2 FADD o 2 FMUL de 128-bits por unidad Flex por ciclo mientras que Sandy Bridge puede sólo 1 FADD y 1 FMUL o cada uno por separado, pero dado que los cpus son OOO, existe la posibilidad para Sandybridge de mejorar su rendimiento al reordenar las instrucciones. La prueba de verdad va a ser cuando ambas arquitecturas estén puestas frente a frente, pero, al menos en papel, Sandybridge tiene más rendimiento. En el caso de que los cálculos sean de un tipo o de otro (FADD ó FMUL), tenemos lo siguiente:

    SB: 128-bits / 64-bits * 4 unidades FPU = 8 FLOPS DP x ciclo.

    O sea, mientras que Bulldozer va a 16 FLOPS, independiente de la carga, Sandy Bridge se mueve entre 8 y 32 FLOPS.

    La información está ahí: The New Flex FP | Business Blog y aquí: Intel's Sandy Bridge Architecture Exposed - AnandTech :: Your Source for Hardware Analysis and News

    Intel sigue teniendo rendimiento superior en un caso teórico para 256-bits.

    Cita Iniciado por x Ver mensaje
    Pero tienes mucho mas de 4 valores para trabajar. Tu idea de que 4 es suficiente y los vectores mas largos no sirven esta errada.
    Nunca negué que existan muchos más valores. Sólo hablé de los vectores. Ventajas por tener registros más anchos, existen, pero no creo que se apliquen a todos los casos de uso, especialmente si hablamos de cálculos de precisión simple. Un ejemplo de ello, Flex-FP.

    Cita Iniciado por x Ver mensaje
    En una CPU cualquier implementacion razonable de DGEMM es capaz de alcanzar un rendimiento cercano al maximo teorico (y es probablemente la rutina mas usada en HPC).
    Estoy tratando de encontrar los resultados de un Linpack ejecutado en un Tesla y compararlo con uno ejecutado en un Sandybridge. El otro día leí como 500 GFLOPS DP para el Tesla y como 120 GFLOPS DP para Sandybridge, cuando los encuentre los posteo aquí. El punto es que la diferencia sigue siendo bastante grande.

    En cualquier caso, tomando el siguiente link como evidencia empírica:
    CPU PhysX: x87, SSE and PhysX SDK 3.0 - 3D Tech News, Pixel Hacking, Data Visualization and 3D Programming - Geeks3D.com

    Vemos que usando physx multi-core con x87 es cerca de 8 veces más lento que una Geforce gtx480. Metiendole AVX y asumiendo escalabilidad casi perfecta, llegamos a un rendimiento similar. Sin embargo, la GPU está dibujando mientras que el CPU no. Las GPUs son buenas para procesar grandes cantidades de datos, debido a la latencia que involucra mandar las instrucciones y recibir los resultados, a veces no conviene utilizarlas. Para una gran cantidad de datos, es irrefutable la ventaja que tienen las GPU. No en vano el supercomputador más rápido del mundo está basado en Nvidia Tesla (los números para el ranking se calculan usando el HPCC benchmark que incluye un componente DGEMM).

    Aún así, el tema original era AVX vs SSE, y la realidad es que los números mostrados no muestran la ventaja descarada que se dice que AVX tiene por sobre SSE. La verdadera pelea va a ser cuando llegue Bulldozer, y viendo sus números, no me sorprendería la diferencia de rendimiento entre SSE 128-bits y AVX de 256-bits sea mucho más pequeña de lo que se dice en el presente artículo y se limite a la eficiencia del set de instrucciones más que el tamaño de los registros, nuevamente, sólo aplica a Bulldozer.

    Cita Iniciado por x Ver mensaje
    Y? Esa diferencia no se capitaliza en rendimiento real. Nvidia tuvo que usar x87 para hacer parecer que PhysX por GPU es mas rapido que por CPU.
    Estoy de acuerdo en el caso de Physx, sin embargo eso no se aplica a todos los casos de uso. Los motores físicos no son buenos ejemplos de tareas paralelizables. El rendimiento no incrementa linearmente con el incremento en hilos de ejecución debido a interdependencias en los cálculos. Como se ve en el link posteado más arriba, cuando el número de partículas sube, los CPUs son mucho más lentos que los GPUs, pero cuando el número de partículas es pequeño, el CPU es más apto para ejecutar los cálculos.

    Ahora, esa diferencia es notoria cuando hablamos de rendimiento gráfico... Nuevamente, depende del caso de uso y de que tan paralelizable sea ésta.

  14. #14
    x
    x está desconectado
    Blue Gene user
    Avatar de x
    Fecha de ingreso
    29 may, 04
    Ubicación
    Cambridge, MA, EE. UU.
    Mensajes
    2,893

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por Lugaidster Ver mensaje
    Eso no significa que lo que dije no sea cierto. Son cuatro unidades Flex-FP. Entonces tienes 2x128x4 = 256x4, en definitiva, lo mismo que dije aplica.

    Si te quieres poner técnico:

    Usando AVX:

    Bulldozer: 256-bits / 64-bits * 4 unidades Flex-FP = 16 FLOPS DP x ciclo

    Sandy Bridge: 256-bits / 64-bits * 4 unidades FPU * 2 puertos (uno para fadd y otro para fmul) = 32 FLOPS DP x ciclo.
    Antes de ponerte técnico deberias averiguar que es una FMA. Con eso Bulldozer duplica el numero de operaciones por ciclo e iguala a SB.

  15. #15
    Gran Maestro Overclockero Avatar de Lugaidster
    Fecha de ingreso
    04 jul, 06
    Ubicación
    Santiago
    Mensajes
    176

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por x Ver mensaje
    Antes de ponerte técnico deberias averiguar que es una FMA. Con eso Bulldozer duplica el numero de operaciones por ciclo e iguala a SB.
    Compadre, John Fruehe de AMD y Anand Lal Shimpi de Anandtech lo dicen, dejé los links. ¿Tan siquiera te has informado? FMA es Fused Multiply Add y viene soportado en Bulldozer por el set de instrucciones FMA4. Yo hablo específicamente de AVX contra SSE (en todos mis post lo dice). FMA está sólo a través de otro set de instrucciones aparte, que no existe en Sandybridge, por lo tanto, no es comparable. Hemos estado hablando de AVX y de SSE desde el infinito y con esos sets no hay instrucciones FMA... Y la unidad FMAC sólo se usa en ese caso.
    ----
    FMA4 está destinado a tener el mismo futuro que 3DNow en generaciones anteriores...
    Última edición por Lugaidster; 18/01/2011 a las 08:20 Razón: Post unidos

  16. #16
    x
    x está desconectado
    Blue Gene user
    Avatar de x
    Fecha de ingreso
    29 may, 04
    Ubicación
    Cambridge, MA, EE. UU.
    Mensajes
    2,893

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por Lugaidster Ver mensaje
    Compadre, John Fruehe de AMD y Anand Lal Shimpi de Anandtech lo dicen, dejé los links. ¿Tan siquiera te has informado? FMA es Fused Multiply Add y viene soportado en Bulldozer por el set de instrucciones FMA4. Yo hablo específicamente de AVX contra SSE (en todos mis post lo dice). FMA está sólo a través de otro set de instrucciones aparte, que no existe en Sandybridge, por lo tanto, no es comparable. Hemos estado hablando de AVX y de SSE desde el infinito y con esos sets no hay instrucciones FMA... Y la unidad FMAC sólo se usa en ese caso.
    ----
    FMA4 está destinado a tener el mismo futuro que 3DNow en generaciones anteriores...
    Que demostración de ignorancia. Mostraste que no sabes que es FMA ni que es una instrucción.

    FMA es una operación que hace una suma y una multiplicación en la misma operación, la mayoria de los procesadores la usan por que permite duplicar el rendimiento sin aumentar casi nada la complejidad del procesador y por que la mayoria de los codigos usan operaciones FMA. Los x86 son probablemente los unicos procesadores que no la usan, hasta ahora.

    FMA4 es una instruccion que opera sobre los registros YMM de AVX, eso de que "no es parte" de ese set de instrucciones no tiene nada que ver. En bulldozer puedes usarla para calculo numerico y sería estupido no hacerlo solo por que no existe en Sandy Bridge. Para aplicaciones numericas intensivas normalmente se usa código especifico por procesador.

    Dudo que FMA4 desaparezca, a lo mas se usara FMA3 que se supone Intel incluira en la proxima generación. Pero no hay duda que la FMA llego a x86 para quedarse.

  17. #17
    The Lament Configuration

    Moderador
    Avatar de necronomicon
    Fecha de ingreso
    25 jun, 06
    Ubicación
    Lima - Perú
    Mensajes
    7,583

    Re: Físicas por CPU: AVX vs SSE

    Creo el tema se desvio hacia otra dirección, debido al tipo de cálculos que se requieren para las físicas, el simplemente recompilar el actual PhysX para que soporte AVX quizá no reporte grandes ganancias. Dado que Havok es de Intel, es muy probable que si lo optimize para sacar el mayor partido posible a AVX, ya veremos en su momento como se comporta esa futura versión optimizada ante las actuales.

    En cuanto a FMA, AMD tiene ya algo de experiencia en dicho tipo de cálculos pues sus GPUs vienen usandolo desde sus Radeon HD 4000 Series, aunque no de forma nativa sino a travez de la combinación de sus ALUs/SFU (aunque en Cayman lo hacen en base a la combinación de sus 4 ALUs), y era tan sólo cosa de tiempo en que implementaran dicho avance en sus CPU, aunque hace tiempo leí que en futuros CPUs AMD usará una mayor integración de sus unidades de cálculo vectoriales presentes en sus CPU y GPUs.


    Saludos.

  18. #18
    Gran Maestro Overclockero Avatar de Lugaidster
    Fecha de ingreso
    04 jul, 06
    Ubicación
    Santiago
    Mensajes
    176

    Re: Físicas por CPU: AVX vs SSE

    Cita Iniciado por x Ver mensaje
    Que demostración de ignorancia. Mostraste que no sabes que es FMA ni que es una instrucción.
    Ni yo te conozco, ni tu me conoces. No es necesario hablar en ese tono cuando, supuestamente, tenemos una discusión seria.

    La unidad FMAC en Bulldozer que se encarga de ejecutar las instrucciones FMA no se usa con el set de instrucciones AVX. Dado que la discusión fue sobre SSE vs AVX (set de instrucciones nuevamente), FMA no pinta nada. Tu sacas FMA en un contexto que no tiene relevancia. FMA como concepto no lo niego, pero no nos salgamos del contexto de la discusión ya que no tiene que ver...

    Si quieres ver las instrucciones de AVX y corroborar que no existe ninguna que haga operaciones de suma y multiplicación fusionadas, aquí tienes: Intel® AVX - Intel® Software Network (Capitulo 5 de la guía de programadores)
    Si lo tuviera entonces Sandy Bridge tendría una unidad FMAC, y no la tiene. (Estoy seguro que lo sabes, pero ya que me llamas ignorante, lo pongo para asegurarme de veas que no estoy inventando cosas).

    Démosle de nuevo, los números que puse son en el contexto de AVX vs SSE. Ninguno de los dos set de instrucciones tiene instrucciones específicas para fusionar una suma con una multiplicación. Además eso no se puede hacer automáticamente por la diferencia que se produciría en los resultados en cuyo caso no serían compatibles entre procesadores que lo hacen y procesadores que no.

    FMA4 es una instruccion que opera sobre los registros YMM de AVX
    FMA4 al igual que FMA3 son un set de instrucciones, no una instrucción. Ambos operan sobre los mismos registros, YMM, como lo hacen SSE, SSE2, SSE3, SSSE3 y SSE4.x sobre los registros XMM. Sin embargo, SSE2 como set de instrucciones, trae operaciones nuevas que SSE no trae y que por lo tanto requieren unidades de procesamiento nuevas (Caso similar con AVX y FMA3/4).

    Extrapolemos, AVX como set de instrucciones trae nuevos registros de 256-bits (YMM), FMA3 es una extension (se podrían llamar AVX2, el nombre da lo mismo) que incluyen instrucciones de suma y multiplicacion fusionadas. Pero esas instrucciones no están en lo que se llama AVX (como set) ni mucho menos en SSE (tema de discusión). Como la discusión se trata sobre AVX y SSE, la unidad de ejecución FMAC del Bulldozer y las instrucciones que ésta ejecuta, no pintan nada en este contexto. Más claro no puede ser.

    eso de que "no es parte" de ese set de instrucciones no tiene nada que ver.
    Tiene que ver y mucho ya que un programa compilado para usar AVX no usará la unidad FMAC del Bulldozer y por lo tanto podría llegar a ser mucho más lento comparado con un Sandy Bridge.

    En bulldozer puedes usarla para calculo numerico y sería estupido no hacerlo solo por que no existe en Sandy Bridge.
    De nuevo, toda tu crítica sobre mis números fue porque no puse FMA en la mesa, dado que un programa compilado con AVX no incluirá instrucciones FMA, los números que puse se mantienen igual.

    Usarlos o no usarlos depende de si el programador utiliza FMA3/4, pero , y sé que me estoy repitiendo, dado que AVX no incluye operaciones FMA y la discusión es sobre SSE contra AVX, FMA no pinta nada.

    Dudo que FMA4 desaparezca, a lo mas se usara FMA3 que se supone Intel incluira en la proxima generación. Pero no hay duda que la FMA llego a x86 para quedarse.
    Era un comentario anecdótico basado en la historia pasada. El set de instrucciones 3DNow era más rápido que SSE en procesadores AMD y (casi)nadie lo usó, si FMA4 sufre el mismo destino, no lo sé, puede ser como puede no ser. Tal vez Intel soporte FMA4 en el futuro...

    [...]no hay duda que la FMA llego a x86 para quedarse.
    No lo niego, pero mientras ambas compañías no se estandaricen, la tasa de adopción va a ser baja. Especialmente en el tipo de mercado que se menciona en el artículo sobre el cual se basa esta discusión (Juegos y motores de física enfocados a juegos).

    PD: Por favor, la próxima vez que me trates de ignorante, al menos ten la decencia de poner por qué.

    Edit: Sólo para dejarlo aún más claro. La unidad Flex-FP que trae el Bulldozer tiene tres unidades de ejecución internas, FMUL, FADD y FMAC. Las primeras dos se encargan de SSE1/2/3/4.x, SSSE3 y AVX. Las tres en conjunto se encargan de ejecutar la completitud de SSE5, que incluye FMA4, XOP y CVT16.

    El máximo común entre ambas arquitecturas hasta el momento es AVX. La comparación se hace teniendo eso en mente.
    Última edición por Lugaidster; 18/01/2011 a las 14:37 Razón: Información adicional


Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
*