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
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

Muy interesante lo de luisj, (imagino con qt)

Asi resolveriamos el empleo de multicores en un pc, lo suyo seria poder comunicar con otros pcs para comunicaciones más lentas.
Varios robots con cpus con un par de nucleos trabajando a tope con vision podrian ser manejados por un ordenador central que decidiria las operaciones de mas inteligencia

Lo suyo es decidir un interfaz comun para que cada uno pueda ensayar sus algoritmos.

En un robot imagino cada componente podria ser un sensor (por ejemplo), y luego un componente central manejaria todos los demas modulos.
Si se hace un upgrade de la CPU a otra de mas cores, algunos componentes que comparten un core se irian a cores distintos.
Estamos haciendo un texto sobre programación orientada a componentes en robótica. Cuando lo tengamos medio terminado os lo paso.

luisj ¿usas threads o ejecutables?

Responder
joviwap
Respuestas: 301
(@joviwap)
Ardero
Registrado: hace 20 años

fusion, luisj trabaja en el proyecto RoboComp de la UEx. Y utilizan ICE al igual que yo, solo que yo lo utilizo enmascarado con ORCA2.

ICE utiliza ejecutables que utilizan sockets si no recuerdo mal.

linutux, El sistema para administrar los cores está interno en el core del kernel de linux y manda las tareas a uno u otro core dependiendo de lo ocupado que estén. Si los dos están ocupados al 100% entonces los pone en cola con una determinada prioridad.

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

No se tiene control de eso, quizás haya alguna forma, pero lo normal es que el scheduler de Linux lo haga él sólo. Si hay un núcleo con una carga baja durante cierto tiempo, el scheduler empieza a migrar procesos o hilos a ese núcleo. En la práctica, para nosotros es más que suficiente.

Responder
joviwap
Respuestas: 301
(@joviwap)
Ardero
Registrado: hace 20 años

bis

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

¿como haces para decirle al sistema operativo que nucleo va a utilizar cada proceso?

A menos que te montes tu propio sistema, estilo FPGA con varias decenas de picoBlace (o uBlace), por lo general es siempre en SO el que se encarga de mandar las diferentes tareas a los diferentes núcleos, tanto en win, mac y linux como te comentan. Lo que pasa es que si no se programa de forma correcta, el SO no podrá mandar "diferentes partes" de un mismo programa a diferentes núcleos.

Responder
Página 3 / 5
Compartir: