YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Spanish subtitles

← Facilidad en la Programación - Introducción a la Programación Paralela

Get Embed Code
3 Languages

Showing Revision 2 created 04/18/2018 by Sandra Zuccato.

  1. Parte de la motivación es que va ser fácil de programar
  2. Específicamente de que manera es más fácil
    para alguien escribir un programa que tiene estas irregularidades
  3. estructuras de control complejas, estructuras de data, en comparadas a no tener paralelismo dinámico?
  4. En el pasado, antes del material dinámico de Keppler
  5. el cual es un nuevo GPU. En el pasado siempre que se necesitaba hacer un nuevo lote de trabajo
  6. se tenía que regresar al CPU, el cual era el controlador maestro, para iniciar el trabajo por ti.
  7. Si en algún momento en mi programa alcanzo un punto donde necesitaba ejecutar dicha inversión de la matriz o esta FFT
  8. Yo tenía que parar mi programa, regresar al CPU, obtener el control del CPU, lanzar este trabajo por mi que lo completaría
  9. regresar al CPU, quien tendría que volver a comenzar
  10. De hecho, si yo pudiese dividir mi programa en dos, donde yo necesitaría este paralelismo extra que debería hacerse
  11. y de pronto, en lugar de tener un programa,
    tengo 2 fragmentos de programa
  12. Hay que determinar que hay que guardar
    a lo largo de los dos
  13. Tengo mi CPU comprometido en controlar
    y organizar este trabajo
  14. De repente, con el paralelismo dinámico, puedo hacer esto de forma compacta mientras se esta ejecutando
  15. Si te gusta, el sistema lo hace todo por ti. Te economizará hacerlo en tu viejo programa.
  16. Ejecutará el FFT para ti. Te entregará el resultado y continuará donde lo dejaste.
  17. Desde la perspectiva del programador, ya no estoy programando en dos lugares al mismo tiempo
  18. Ya no tengo el GPU y el CPU
    estrechamente ligados en mi ejecución
  19. ya no tengo que controlar las porciones de mi programa
    donde requiero lanzar este nuevo trabajo
  20. Puedo solo alinearlos efectivamente y
    hacer un programa más simple y más directo
  21. Eso es fantástico.
    Y que hay de las implicaciones del desempeño?
  22. Siempre hay un costo adicional de desempeño que se mueve hacia atrás y adelante entre el CPU y el GPU
  23. Tienes las demoras del bus de PCI,
    el cual fue un enlace de comunicación
  24. Tienes los costos de apagar
    tu primera porción de tu programa
  25. partiendo de la siguiente porción y
    reasumiendo justo donde lo dejaste.
  26. Estos costos son amortizados. Tu ahorras, potencialmente
    data transferida a través de los buses.
  27. Y de alguna forma, siento que es realmente
    más importante que esto es con el GPU,
  28. Tu estás tratando de hacer tanto trabajo
    en ese GPU como sea posible
  29. Puedes superponer más fácilmente
    el nuevo trabajo que están haciendo con
  30. otras cosas que todavía continúan en el GPU
  31. Yo no tengo que apagar completamente y encender un FFT. Puedo en consonancia, hacer estas cosas mientras
  32. alguna otra cosa útil continúa al mismo tiempo
  33. Esta capacidad de asincronia para hacer
    este trabajo desde diferentes hilos al mismo tiempo
  34. Recordar que tienes miles de hilos en el GPU
  35. ellos pueden estar haciendo esto, lo que quiero decir recursos modulares, ellos pueden estar haciendo esto al mismo tiempo
  36. y puedes obtener una superposición de forma más fácil entre las diferentes de trabajo que están haciendo
  37. y es definitivamente mucho más fácil mantener el GPU ocupado
  38. y ello te da cantidades de potencial para más desempeño