Estoy escribiendo un kernel OpenCL que implica algunas barreras en un bucle. He probado el kernel en la CPU (8-core FX8150) y el resultado muestra que estas barreras reducen la velocidad de funcionamiento en un factor de 50 ~ 100 veces (esto lo compruebo al volver a implementar el kernel en Java usando multi-threading + CyclicBarrier) . Sospecho que la razón fue que la barrera esencialmente detiene la CPU aprovechando la ejecución fuera de orden, así que estoy un poco preocupado si pudiera observar la misma magnitud de disminución de velocidad en la GPU. Revisé algunos documentos oficiales y busqué en Google un poco, pero hay poca información disponible sobre este tema.¿La GPU moderna (por ejemplo, Fermi/Evergreen) admite la ejecución fuera de servicio?
5
A
Respuesta
7
actual estado de las GPU arte están en orden pipeline del procesador. Las GPU llenan la tubería de manera efectiva intercalando instrucciones de diferentes urdimbres (frentes de onda). En las comparaciones, las CPU utilizan la ejecución especulativa fuera de orden para llenar la tubería. Hay diferentes unidades funcionales como ALU y SFU que tienen tuberías separadas. Pero observe que la dependencia de la instrucción detiene el warp. Para obtener más información sobre la resolución de dependencia de instrucciones en GPU, consulte this NVIDIA patent.
2
de NVIDIA de próxima generación
CUDA Cálculo y Gráficos Arquitectura, cuyo nombre en código “Fermi”:
Nvidia GigaThread Engine tiene capacidades de (en la página 5)
- 10x contexto de aplicación más rápida conmutación
- Ejecución concurrente del kernel
- Ejecución del bloque de hilos fuera de servicio :)
- Dual solapadas motores de transferencia de memoria
Cuestiones relacionadas
- 1. adquisición-liberación par ejecución fuera de servicio
- 2. ¿Admite SQLDeveloper la ejecución de scripts?
- 3. ¿Es posible hacer 2d blitting de la vieja escuela en la GPU moderna?
- 4. Ejecución fuera de servicio y vallas de memoria
- 5. Apache Axis2 tiempo de ejecución de servicio Web en Tomcat v7.0 Server no admite la prueba de proyecto de servicio
- 6. ¿La versión moderna de WinDiff?
- 7. ¿Por qué wsHttpBinding no admite la transmisión?
- 8. ¿Por qué WCF no admite tiempos de espera de servicio?
- 9. Predicación de rama en la GPU
- 10. biblioteca CSS (por ejemplo: Bootstrap) que admite IE6?
- 11. la ejecución de tareas P2 Ant fuera Eclipse
- 12. ¿La forma moderna de borrar contenido flotante?
- 13. algoritmos de gráfico en la GPU
- 14. GPU lee desde CPU o CPU escribe en la GPU?
- 15. ejemplo de servicio web php
- 16. Diferencia entre la reflexión de ComponentModel (por ejemplo, PropertyDescriptor) y la reflexión estándar (por ejemplo, PropertyInfo)?
- 17. Ponerme al día sobre la arquitectura moderna
- 18. aritmética modular en la gpu
- 19. ¿Por qué usar la capa de servicio?
- 20. ¿Alternativa moderna a la biblioteca Java XStream?
- 21. mapa de golang imprime fuera de servicio
- 22. ¿Una muestra moderna de la aplicación web asp.net n-layer?
- 23. Equivalente .NET de la arquitectura web Java moderna
- 24. Memoria de asignación dinámica en la GPU
- 25. Programación de la GPU de Java
- 26. Clojure - Efectos secundarios sucediendo fuera de servicio
- 27. ¿Cómo soportan las GPU la ejecución de OpenGL y DirectX API?
- 28. ¿por qué la sobrecarga no admite en Actionscript?
- 29. Ejecución concurrente del kernel GPU desde procesos múltiples
- 30. ¿Factibilidad de la GPU como CPU?
Por supuesto que tiene. Debe dividir los cálculos de fuga de tiempo de forma heterogénea a través del código, de modo que pueda hacer cálculos enteros. mientras haces flotar al mismo tiempo –
@ tuğrulbüyükışık Gracias. ¿Puede indicarme un documento oficial que lo confirme (para fines de referencia)? – aaronqli