2011-11-08 7 views
6

Mi pregunta no es sobre GPGPU. Entiendo GPGPU bastante decentemente y eso no es lo que estoy buscando. El puente de arena de Intel tiene supuestamente algunas características que le permiten realizar cálculos directamente en la GPU.Cargando el código en la GPU (Intel Sandy Bridge)

¿Es eso realmente cierto?

El código que planeo escribir va a estar en ensamblaje en línea (en C). ¿Hay instrucciones de montaje que, en lugar de ejecutar en la CPU, envíen material a la GPU?

Parte de la documentación relacionada:

El PDF tiene el conjunto de instrucciones.

Respuesta

2

Respondiendo a su primera pregunta: No, no es verdad.

Permítanme citar los recursos que ha vinculadas:

La unidad de procesamiento gráfico es controlado por la CPU a través de una interfaz directa de registros mapeados en memoria IO, e indirectamente mediante el análisis de los comandos que la CPU tiene colocado en la memoria. (Capítulo 2.2 del manual de SB GPU)

No hay ejecución directa del código de la GPU en el contexto de la CPU.

Para su segunda pregunta: "Extraer cosas a la GPU" se realiza con la instrucción mov. El objetivo es un registro IO asignado a la memoria, fuente de las cosas que desea escribir. Es posible que necesite insertar algunas instrucciones similares o de "defensa" para asegurarse de que no se produzca un reordenamiento de memoria débil.

+0

Esto va a sonar increíblemente estúpido, pero la parte que ha citado, ¿en qué manual lo encontró? Así que supongo que lo que tengo que hacer es en realidad "colocar esos comandos en la memoria" a través de la CPU (?) – user813182

+0

Volumen 1, Parte 1: el primero en la página que vinculó. Utiliza la CPU para colocar el código de la GPU que desea ejecutar en algún lugar de la memoria. Casi lo mismo que cargar y ejecutar un programa para la CPU. – hirschhornsalz

3

No creo que el conjunto de instrucciones detallado en el PDF que ha vinculado se pueda usar directamente desde "espacio de usuario". Es lo que el controlador de GPU en su sistema operativo puede * usar para implementar interfaces de nivel superior como OpenGL y DirectX.

Por lo que vale, la GPU Sandy Bridge es bastante débil. No es compatible con OpenCL **, que es una biblioteca GPGPU estándar que es compatible con ATI/nVidia. Recomiendo que programes en esa biblioteca (en el hardware que la admite), ya que es mucho más portátil (¡y más fácil de usar!) Que intentar programar en la interfaz básica que estás viendo.


*: Es posible, aunque poco probable, que hay una interfaz diferente de lo que se describe en ese PDF que se utiliza en los controladores de código cerrado de Intel.

**: No es lo mismo que OpenGL, aunque fue diseñado por el mismo grupo.

+0

¿dónde viste que la GPU de SNB admite OpenCL? – Bahbar

+0

Mi error; no es así Corregido – duskwuff

Cuestiones relacionadas