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.8 K Visitas
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 18 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 18 años

El empleo de ejecutables me está dando problemas, he intentado usar _execl() para ejecutar otros procesos, pero al pasar al proceso hijo, éste mata al proceso padre, además arranca en la zona de memoria donde estaba éste.
Los sockets creo se usan para conectar redes externas, no lanzar tareas dentro de un PC. Imagino te refieres a escribir en una cola hasta que alguien lo lee y demás.

Se me está ocurriendo hacer como un sistema operativo a base de una matriz donde dentro vaya una función y como parámetro la zona de memoria que usa y el tiempo máximo de ejecución y un semáforo.
En principio lo estoy haciendo como un Struct. La idea es que para acceder a esa zona de memoria, si el semáforo está verde, lo pones rojo, entras dentro, manejas la matriz y sales poniendo el semáforo en verde.
La función puede ser un pointer dentro del struct. Pondría aquí el código pero no me funciona debido al problema con el _execl()

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

Si usas Qt puedes usar la clase QProcess que hace lo de los procesos muy sencillo. De todas formas, si lo quieres hacer a la vieja usanza también puedes hacerlo. No puede ser que estén arrancando en la misma zona de memoria. Quizás los ves (si estás haciendo algún printf) en la misma zona de memoria porque usan direcciones de memoria virtual, pero no física.

Se usan sockets también para la comunicación dentro de un mismo ordenador muy comunmente. Cuando se hace esto se usa la dirección loopback 127.0.0.1 y no pasa por la red, va diréctamente por memoria todo. A pesar de no ir por red, sigue siendo TCP/IP, pero el impacto de la sobrecarga del protocolo de comunicación es mínimo. A cambio de esta *mínima* *mínima* pérdida se gana mucha plasticidad en la arquitectura del software.

Respecto a lo de la tabla... No te lo aconsejo para nada, pero para nada nada nada. Sí es cierto que podrías conseguir algo más eficiente, pero el uso de la CPU probablemente no se vería afectado en más de un 1%. Creeme cuando digo que Ice está muy bien pensado. A mi al principio tampoco me gustaba eso de usar una tecnología más potente de lo necesaria, pero con el tiempo me he dado cuenta de que ese 1% que pierdes no es nada comparado con lo cómodo y rápido que se desarrolla.

Responder
Página 5 / 5
Compartir: