2012-02-09 15 views
11

Considere un ejemplo simple: adición de vector.Dispositivo de CPU OpenCL vs dispositivo GPU

Si construyo un programa para CL_DEVICE_TYPE_GPU, y construyo el mismo programa para CL_DEVICE_TYPE_CPU, ¿cuál es la diferencia entre ellos (excepto que "programa de CPU" se está ejecutando en la CPU, y "GPU program" se está ejecutando en la GPU)?

Gracias por su ayuda.

Respuesta

35

Existen algunas diferencias entre los tipos de dispositivos. La respuesta simple a su pregunta vectorial es: use un gpu para vectores grandes y una CPU para cargas de trabajo más pequeñas.

1) copia de la memoria. Las GPU dependen de los datos en los que está trabajando para pasarlos, y los resultados se leen más tarde al host. Esto se hace a través de PCI-e, que produce alrededor de 5 GB/s para la versión 2.0/2.1. Las CPU pueden usar búferes 'en su lugar' - en DDR3 - usando cualquiera de los indicadores CL_MEM_ALLOC_HOST_PTR o CL_MEM_USE_HOST_PTR. Vea aquí: clCreateBuffer. Este es uno de los grandes cuellos de botella de muchos granos.

2) Velocidad del reloj. Actualmente, las CPU tienen una gran ventaja sobre el gpus en velocidad de reloj. 2Ghz en el extremo inferior para la mayoría de las CPUs, frente a 1GHz como un extremo superior para la mayoría de los gpus en estos días. Este es un factor que realmente ayuda a la CPU a "ganar" más de una GPU para pequeñas cargas de trabajo.

3) 'Hilos' concurrentes. El gpus de gama alta generalmente tiene más unidades de cómputo que sus contrapartes de CPU. Por ejemplo, el 6970 gpu (Cayman) tiene 24 unidades de computación opencl, cada una de estas se divide en 16 unidades SIMD. La mayoría de las mejores CPU de escritorio tienen 8 núcleos, y la CPU del servidor actualmente se detiene en 16 núcleos. (mapa de núcleos de CPU 1: 1 para calcular el recuento de unidades) Una unidad de cálculo en opencl es una parte del dispositivo que puede hacer un trabajo que es diferente del resto del dispositivo.

4) Tipos de subprocesos. gpus tiene una arquitectura SIMD, con muchas instrucciones orientadas a gráficos. Las CPU tienen gran parte de su área dedicada a la predicción de bifurcación y cálculos generales. Una CPU puede tener una unidad SIMD y/o unidad de punto flotante en cada núcleo, pero el chip Cayman que mencioné anteriormente tiene 1536 unidades con el conjunto de instrucciones gpu disponible para cada una. AMD los llama procesadores de flujo, y hay 4 en cada una de las unidades SIMD mencionadas anteriormente (24x16x4 = 1536). Ninguna CPU tendrá esa cantidad de unidades sin (x) o con capacidad de productos dot a menos que el fabricante quiera cortar alguna memoria caché o hardware de predicción de bifurcación. El diseño SIMD del gpus es probablemente el mayor 'win' para situaciones de adición de vectores grandes. Que el también haga otras funciones especializadas es una gran ventaja.

5) Ancho de banda de la memoria. CPU con DDR3: ~ 17 GB/s. Gpus de gama alta> 100 GB/s, las velocidades de más de 200 GB/s se están volviendo comunes últimamente. Si su algoritmo no es PCI-e limitado (vea el n. ° 1), el gpu sobrepasará la CPU en el acceso de memoria sin procesar. Las unidades de programación en un gpu pueden ocultar aún más la latencia de la memoria ejecutando solo tareas que no están esperando el acceso a la memoria. AMD llama a esto un frente de onda, Nvidia lo llama un warp. Las CPU tienen un sistema de caché grande y complicado para ayudar a ocultar los tiempos de acceso a la memoria en el caso de que el programa reutilice los datos. Para su problema de adición de vector, es probable que el bus PCI-e lo limite más, ya que los vectores generalmente se usan solo una o dos veces.

6) Eficiencia energética. Un gpu (usado correctamente) generalmente será más eficiente eléctricamente que una CPU. Debido a que las CPUs dominan la velocidad del reloj, una de las únicas maneras de reducir realmente el consumo de energía es reducir el tiempo del chip. Esto obviamente lleva a tiempos de cálculo más largos. Muchos de los principales sistemas de la lista Green 500 tienen un acelerado acelerado de GPU. mira aquí: green500.org

Cuestiones relacionadas