fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Multicores e inteli...
 
Avisos
Vaciar todo

Multicores e inteligencia distribuida

22 Respuestas
8 Usuarios
0 Reactions
17.5 K Visitas
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

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?

Responder
21 respuestas
luison
Respuestas: 495
(@luison)
Reputable Member
Registrado: hace 17 años

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.

Responder
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

fusion,

Eso es lo que estamos haciendo en http://robocomp.wiki.sourceforge.net/

Responder
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

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

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

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

Responder
linutux
Respuestas: 61
(@linutux)
Trusted Member
Registrado: hace 18 años

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?

Responder
Página 2 / 5
Compartir: