2011-03-08 16 views
10

Busco un poco de google, pero ahora no tengo claro si algunas GPU programadas con CUDA pueden aprovechar o pueden usar instrucciones similares a las de las extensiones SIME de SSE; por ejemplo, si podemos resumir dos vectores de flotantes en doble precisión, cada uno con 4 valores. Si es así, me pregunto si sería mejor usar hilos más ligeros para cada uno de los 4 valores anteriores del vector o usar SIMD.¿Puede CUDA usar extensiones SIMD?

+0

SSE es una característica de la CPU, no de las GPU. Supongo que te refieres a si hay controladores CUDA que usan instrucciones SSE en la CPU en lugar de las tarjetas de video (GPU). –

+0

no. No sé muy bien el hardware de la GPU. Me preguntaba si las instrucciones SIMD pueden usarse en hilos CUDA en la GPU. – flow

Respuesta

16

Los programas CUDA se compilan al PTX instruction set. Ese conjunto de instrucciones no contiene instrucciones SIMD. Entonces, los programas CUDA no pueden hacer un uso explícito de SIMD.

Sin embargo, la idea de CUDA es hacer SIMD a gran escala. Los hilos individuales son parte de grupos llamados warps, dentro de los cuales cada hilo ejecuta exactamente la misma secuencia de instrucciones (aunque algunas de las instrucciones pueden ser suprimidas para algunos hilos, dando la ilusión de diferentes secuencias de ejecución). NVidia lo llama Single Instruction, Multiple Thread (SIMT), pero es esencialmente SIMD.

+9

PTX 3.0 agregó soporte para un conjunto limitado de instrucciones SIMD en una palabra que operan con datos de 8 y 16 bits dentro de un registro. Estas instrucciones se detallan en las páginas 178-182 de la última especificación PTX: http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdf El uso de estas instrucciones SIMD requiere GPU con capacidad informática 3.x. Los desarrolladores de CUDA registrados pueden descargar un archivo de encabezado con funciones de contenedor, (que también proporcionan rutas de emulación para las GPU sm_1x y sm_2x) como se anunció aquí: https://devtalk.nvidia.com/default/topic/535684/announcements/release-1- 1-de-simd-in-a-word-functions-posted/ – njuffa

+2

@njuffa: ¡Eso suena como una respuesta, no como un comentario! Publicarlo, y podemos persuadir flujo para cambiar su aceptar. –

5

Como se mencionó en a comment a una de las respuestas, NVIDIA GPU tiene algunas instrucciones SIMD. Operan en unsigned int en base por byte y por media palabra. En julio de 2015, hay several flavours de las siguientes operaciones:

  • valor absoluto
  • suma/resta
  • calcular el valor promedio
  • comparación
  • máximo/mínimo
  • negación
  • suma de la diferencia absoluta