Author Topic: OPENCL y porqué todas tus habilidades de programación se pueden volver obsoletas  (Read 4210 times)

0 Members and 1 Guest are viewing this topic.

Offline g00mba

  • The Communiter-
  • *
  • Posts: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
OpenCL es un estandard propuesto por el grupo khronos, que es un conglomerado de empresas de tecnología informática que se encarga de estándares abiertos tales como OpenGL que como todos sabemos es la libreria de programación 3d de facto en general y solo segunda a direct x en windows.

Dada la evolución que los GPU están teniendo, se comienzan a convertir en procesadores de propósitos más generales que solo el renderizado, OpenCL es el intento de estandarzar estos recursos, esto es más extenso que lo que prentende nvida con CUDA que por ser código cerrado tiene menos opciones a futuro que un estándard soportado por la mayoría de fabricantes.

básicamente los GPU son procesadores orientados a calcular una cantidad masiva de datos paralelamente, cosa en la que los cpu's x86 no son tan eficientes, si se pusiera un cpu a tratar de generar threads para un proceso con miles de datos, se tardaría demasiado tiempo solo tratando de ubicar recursos, en los gpu la instanciación de procesos con datos distintos es instantánea y realizada con una velocidad cientos de veces mayor a la de un cpu.

¿y eso en que afecta mis conocimientos de programación?
si OpenCL tiene éxito, las tarjetas gráficas dejarán de ser un artículo de entretenimiento y se convertirán en la piedra angular de los sistemas de bases de datos, diseño arquitectural, en la minería de datos y en la infinidad de campos de aplicación que una arquitectura masivamente paralela tiene. señores podríamos estar ante la siguiente revolución informática.

se pueden dar dos posibles escenarios:
1. la computación paralelizada puede cambiar completamente el paradigma de programación (principalmente a bajo nivel), las máquinas virtuales se volverían cosa de todos los días y pues los lenguajes actuales estarían en clara desventaja desde el punto de vista del desempeño de las aplicaciones, habría que empezar a forjar nuevas herramientas de programación para explotar los recursos enormes que tendriamos a la mano.

2. los lenguajes de programación se adaptan y simplemente hacemos un INCLUDE OPENCL en la cabecera de nuestro programa y usamos un par de librerías extra, esto a mi parecer sería talvez de las primeras iteraciones del OpenCL y no su forma final.

si este proyecto obtiene el apoyo necesario, los programadores no informados podemos quedar en una desventaja crítica, ciertamente vivimos en una era dorada de la tecnología, es realmente algo motivador.

Offline g00mba

  • The Communiter-
  • *
  • Posts: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
en caso de exito de el openCL, que desventaja representaria para los programadores? tener que aprender nuevamente?
tambien representaria una desventaja palpable en lo economico, cierto? significaria que para que de facto podas programar debas usar una gpu X cosa que a la que no todos tienen acceso, lease estudiantes que se hechan la carrera a base de su Pentium II.



o no capte bien... chispas.  :huh:


esque desventaja no es, es una gran ventaja, el problema es que las bases de la programación que es la conceptualización del problema se volverían más complicadas y su implementación no se parecería en nada a la aplicación que tiene ahora, toma por ejemplo una base de datos, aunque manejes miles de registros a la vez, el sistema va registro por registro en un determinado momento, usando un GPU podrías hacer una ENORME cantidad de operaciones en los registros a la vez y solo dando al cpu la tarea de mantener la coherencia, con ese ejemplo creo que se da una idea más clara de la diferencia en la aproximación que tendrías que tomar a la hora de programar.

asi q de hecho tendrías que aprender a pensar de una manera distinta, especialmente cuando la paralelización no es obvia, hay aplicaciones en donde es clara (como en la minería de datos) pero hay otras donde no lo es, en los procesadores de texto por ejemplo la paralelización no tiene mucho sentido, estoy hablando de aplicaciones donde se requiere manejar esquemas SIMD (simple instructions múltipes datos) miralo como cuando los procesadores no traían coprocesador matemático por ejemplo.
« Last Edit: January 16, 2009, 08:53:20 pm by g00mba »

Offline valencia

  • -<- SvPrincess ->-
  • The Communiter-
  • *
  • Posts: 1303
  • Se necesita avatar, interesados enviar curriculum
ahh  :shockd:
“Todas las religiones son obras humanas y, en el fondo, equivalentes; se elige entre ellas por razones de conveniencia personal o de circunstancias”. Averroes.

Offline juanca

  • The Communiter-
  • *
  • Posts: 1112
Tus derechos comienzan donde terminan tus responsabilidades......

Offline JED57

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 5808
Siempre he sentido que todos esos teraplops y millones de transistores tendrian que servir para algo mas que jugar Crysis a 30FPS...

Se vale soñar... pero recodificar pelis 720p en minutos, no se si se podra hacer lo mismo con el render y todas esas cosas que se tardan horas con quadcores, hacerlos en minutos con una 3850  :huh:

Offline g00mba

  • The Communiter-
  • *
  • Posts: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Se vale soñar... pero recodificar pelis 720p en minutos, no se si se podra hacer lo mismo con el render y todas esas cosas que se tardan horas con quadcores, hacerlos en minutos con una 3850  :huh:
lo de la recodificación ya casi casi lo tenemos, lo del renderizado que no es en tiempo real, gran parte del pipeline creo yo se podría descargar al gpu si no es que todo, claro, no se podría hacer en tiempo real dadas las increibles diferencias en la forma en que el renderizado real time y el offline funcionan.  por lo menos no en un futuro cercano.