Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
He leido que AMD tendrá procesadores de 12 núcleos en el 2012, Intel vá más allá y prevé procesadores con miles de cores.
Por otro lado los sistemas operativos y lenguajes de programación no están especialmente pensados para trabajar con estos micros (windows no soporta más de cuatro, linux parece que se salva), y lo peor es que los programadores que a duras penas pueden estar al día con la evolución actual, pueden quedar todos obsoletos de golpe. Es duro esto ¿no?
Yo ante esto, mientras se arregla el follón propondría tratar de hacer una red inteligente: consiste en hacer ejecutables que se comuniquen entre sí por tcp-ip, así varios ordenadores corriendo programas de inteligencia artificial podrían compartir información. No hace falta que corran el mismo programa, puede ser que cada programador haga correr el suyo a ver cual es mejor concentrando información. El fin último es alimentar el sistema con ciertas acciones y que el sistema empleando inteligencia distribuida trate de averiguar por interpolación el resultado. Los programas que den un resultado más acertado ganan puntos, los demás mueren (selección natural)
Cada ejecutable es una neurona, pudiendo haber más ejecutables que núcleos.
Un ejecutable centralizado "evalúa el sistema", asignando puntos o matando neuronas inservibles.
Ahora bien ¿podrían varios programas corriendo en un mismo PC intercambiar información por tcp-ip como si pertenecieran a redes externas?
Luison, No te hace falta irte a virtualizadores ni muchos menos. Es más, me da que un core2Duo podría mover varias decenas de miles de neuronas, aunque claro, habria que probarlo...
Eso lo planteo como respuesta a querer tener en un mismo ordenador diferentes redes... para tener muchos núcleos planteo la tecnología CUDA. El Grid en éste caso no sería posible o al menos no sería muy lógico, ya que lo que me parece que se plantea es en un único ordenador.
Estamos haciendo un texto sobre programación orientada a componentes en robótica. Cuando lo tengamos medio terminado os lo paso.
Básicamente, un componente es un programa que ofrece un interfaz mediante el cual otros programas pueden comunicarse con él, y éste con otros mediante sus interfaces. Como son procesos separados se aprovechan los núcleos que haya. En el portatil de mi robot tengo 6 componentes, cada uno hace una cosa distinta y se acomodan en los diferentes núcleos que tiene. Tiene 2 núcleos y se reparten 3 y 3, pero se acomdarán de otra forma cuando tenga más núcleos y/o más componentes.
Intentaré darme prisa con el texto
utilizando la tecnología grid ya existente, de manera que se hiciera transparente al sistema operativo y permitiera el aprovechamiento eficiente de recursos.
Si bien, creo que el principal problema no vaya a ser gestionar los recursos de los diferentes núcleos, sino más bien los accesos de memoria, tanto de la caché como los accesos a memoria principal, que hoy día traen de cabeza a la gente que trabaja en arquitectura de computadores.
La empresa Abiquo ( http://www.abiquo.com/ ) ya tiene esto hecho para una red de máquinas (desde servidores a Foneras), y además es "open source", por lo que se puede ver el código y editarlo.
S2
Ranganok Schahzaman
Estamos haciendo un texto sobre programación orientada a componentes en robótica. Cuando lo tengamos medio terminado os lo paso.
Básicamente, un componente es un programa que ofrece un interfaz mediante el cual otros programas pueden comunicarse con él, y éste con otros mediante sus interfaces. Como son procesos separados se aprovechan los núcleos que haya. En el portatil de mi robot tengo 6 componentes, cada uno hace una cosa distinta y se acomodan en los diferentes núcleos que tiene. Tiene 2 núcleos y se reparten 3 y 3, pero se acomdarán de otra forma cuando tenga más núcleos y/o más componentes.
Intentaré darme prisa con el texto
¿como haces para decirle al sistema operativo que nucleo va a utilizar cada proceso?