Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
MultiProceso: Usando Procesos Para Realizar Calculos Paralelos...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Bueno, la idea es la siguiente:

En los ordenadores actuales, es frecuente que tengamos varios nucleos. En gambas, en principio, solo usamos un nucleo para ejecutar nuestras aplicaciones ya que no existen los hilos (por ahora)....

Se me ha ocurrido usar procesos en gambas, para que simultaneamente se puedan ejecutar subprogramas  y que resuelvan un problema de calculo en menos de tiempo.

Os lo explico con un sencillo ejemplo:
Supongamos que tenemos que realizar esta operación: 345+234*34 -345+2*34 , y nuestro ordenador tiene 2 nucleos

Si lo resolvieramos en un programa realizado en gambas, solo usariamos un microprocesador, y calcularia la expresion  345+234*34 -345+2*34  el solito, tardando "T "tiempo (por no poner una cantidad).

Ahora bien, si dividimos la operacion inicial en dos partes. 1: (345+234*34) y 2: ( -345+2*34 ), y cada una de ellas la ejecuta un nucleo de nuestro ordenador, en teoria se tardaria "T/2" tiempo (la mitad del tiempo inicial mas o menos)

Evidentemente para un calculo sencillo, como el del ejemplo, no merece la pena... Pero para calculos de arboles (minimax, poda alphabeta) o algoritmos que sea posible trabajarlos  de manera "paralela", el ahorro de tiempo puede ser considerable...

Si quereis ver el ejemplo completo: enlace

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Hmmm! Tengo mis dudas sobre si eso pueda ser rentable... Me refiero al hecho de manejar archivos para realizar las operaciones por separado, puesto que los tiempos de lectura/escritura pueden suponer más que las operaciones en sí.

Además ¿qué pasa cuando un fichero se ejecuta y devuelve el resultado antes que el otro? Que tendrás que esperar a recibir dicho resultado para poder operar. No lo sé, pero no veo el beneficio con el ejemplo que propones.

Aquí tienes un ejemplo del uso del nuevo componente gb.task (creo que ya no es un componente y ahora forma parte del intérprete) para manejar "tareas" o procesos en paralelo, que es lo más parecido al multiproceso. Este ejemplo fue publicado en la lista de correo de gambas por Ivan Kern, así que los créditos van para él.

Intenta reescribir tu programita usando este componente y evitarás tener que recurrir a escribir y leer ficheros en disco.

Documentación oficial sobre el componente: http://www.gambasdoc.org/help/comp/gb/task?en&v3

Ahí va el adjunto:


Saludos

TaskTest.zip
Descripción: Ejemplo de uso de gb.task (multiproceso en gambas) 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 63 veces
TaskTest.zip
Descripción: Ejemplo de uso de gb.task (multiproceso en gambas) 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 63 veces
TaskTest.zip
Descripción: Ejemplo de uso de gb.task (multiproceso en gambas) 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 63 veces

 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
jguardon:

Citar:
Me refiero al hecho de manejar archivos para realizar las operaciones por separado, puesto que los tiempos de lectura/escritura pueden suponer más que las operaciones en sí.....  no veo el beneficio con el ejemplo que propones ....  


Para lo que voy a usarlo es para el juego de damas, para repartir el arbol de posibles movimientos entre los microprocesadores, haré pruebas contabilizando el tiempo que se tarda en una u otra forma... ya te cuento los resultados que obtengo..

Citar:
un ejemplo del uso del nuevo componente gb.task (creo que ya no es un componente y ahora forma parte del intérprete) para manejar "tareas" o procesos en paralelo, que es lo más parecido al multiproceso

Estupendo... lo estudio a ver si me vale...

Gracias
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Esto, ¿ y como demuestra el multi proceso en el ejemplo de TaskTest ?.
Me parece que no lo llego a ver.  

Yo solo veo un numero, luego un espacio en blanco, hasta el infinito..
¿ Sera que faltaba des-comentar las lineas comentadas ?.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Buscando multiproceso encontré:

http://es.wikipedia.org/wiki/Multiprocesamiento

Y una explicación que no encontré la fuente.Parece que hay dos tipos:

Citar:

Existen dos tipos de multiproceso, el asimétrico y el simétrico. En el asimétrico hay un procesador (maestro) en el cual se ejecuta el sistema operativo y los demás (esclavos) donde se ejecutan las demás tareas. La ventaja de éste es que al aumentar más procesadores se tiene que hacer un cambio mínimo y fácil para el manejo de éstos y en general se eliminan muchos problemas de integridad de datos. La gran desventaja es que al haber sólo una copia del sistema operativo en un sólo procesador (maestro) cuando este procesador falla todo el sistema falla porque todos los recursos que son manejados por el sistema operativo no pueden ser accesados.

En el simétrico se ejecuta el sistema operativo - o una gran parte de él - en cualquiera de los procesadores disponibles y todos ellos tienen acceso a los recursos a menos que cada recurso sea asignado a un procesador específico. Aunque es mas difícil de implementar tiene muchas más ventajas. Primero, este tipo de sistemas tienden a ser más eficientes porque las tareas tanto del sistema operativo como de los usuarios pueden ser distribuídas en forma balanceada a todos los procesadores. Debido a que las demandas del sistema operativo pueden ser repartidas a todos los procesadores, el tiempo de inactividad de un procesador mientras otro está sobretrabajando es mínimo. Segunda, si un procesador falla, es posible que sus tareas sean repartidas entre los demás y no es necesario que todo el sistema sea parado o que falle el sistema. Y finalmente, la portabilidad del sistema es mayor debido a que no sigue la arquitectura de mastrer/slave. NT implementa este modelo de multiproceso.


¿ Y esto no es lo mas parecido a multi-tarea ?. Ademas del sistema OS/2 Warp no he llegado a ver "concretamente" una multi-tarea real.
Habría que ser bastante meticuloso para apreciar la ejecución. Solo lo vi en un ejemplo en OS/2 en el cual eran dos aplicaciones que se ejecutaban
a la vez, cada una emitía un beep. Estas aplicaciones estaban hechas en shell.No había un atraso ni un adelanto,no había un atropello.
Cada beep se sincronizaba como un reloj a gran velocidad.

En aquel tiempo, el del win 3.1 al ejecutar aplicaciones a la vez, se atropellaban.lo quera conocido como multi-tarea preventiva.
Algunos ejemplos que hice en Linux, que casi se las pueda llamar un poco de excentricidad..  (ah, la ciencia)..   

Buscando demostraciones de aplicaciones que no se atropellaban o ver una multi-tarea. Coloque varias ejecuciones de un misma aplicación de Mame32
con diferentes recreativas antiguas, cada una en una ventana, así hasta un gran grupo.Aparentemente se ejecutaban correctamente
todas a la vez. Casi recuerda a las pruebas del laboratorio de Q, ahora que estamos con los 50 años de James Bond.

Después de ver tanto árcade ejecutándose  a al vez   , pues que si no es casi, se puede decir que tenemos una multi-tarea buena en Linux.

Parece que ya oigo a alguien decir..varias instancias de..y es que esto de la POO, mola.  

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 01 Noviembre 2012, 20:43; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Shell escribió: [Ver mensaje]
Esto, ¿ y como demuestra el multi proceso en el ejemplo de TaskTest ?.
Me parece que no lo llego a ver.  

Yo solo veo un numero, luego un espacio en blanco, hasta el infinito..
¿ Sera que faltaba des-comentar las lineas comentadas ?.  

Saludos


Pues instanciando cualquier clase que herede de Task. Puedes crear varias clases que cada una haga algo diferente y lanzarlas todas a la vez desde un botón, por ejemplo, para probar o realizar mediciones o "benchmarks". Pero hay que tener en cuenta un par de detalles que se explican en la documentación.

Evidentemente el ejemplo solo ilustra lo más básico.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Lo que seguro hay que tener en cuenta es:

  • Existe un costo de tiempo y memoria por "forkear" al intérprete.
  • Hay un costo asociado a la comunicación entre procesos (serialización/des-serialización).
  • Hay un sistema básico de bloqueo que no escala. Es decir, es difícil sincronizar los procesos (siempre es difícil no me refiero a que sólo sea difícil en gambas) y uno puede suponer que la complejidad de la sincronización de los procesos será, al menos, proporcional a la complejidad esencial de la aplicación.
  • ¿Qué pasa si en el sub Main de la tarea se llama a métodos de otras clases creados desde y fuera de la tarea?


Respecto de la última cuestión el punto es ¿los métodos que se invoquen desde la tarea estarán sincronizados con ella?
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MultiProceso: Usando Procesos Para Realizar Calculos Paralelos... 
 
Revisando el tema de hilos en gambas, subo de nuevo el ejemplo de jguardon que no sale usando su enlace...

TaskTest.zip
Descripción: Test Task 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 33 veces
TaskTest.zip
Descripción: Test Task 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 33 veces
TaskTest.zip
Descripción: Test Task 
Descargar
Nombre del archivo: TaskTest.zip
Tamaño: 7.45 KB
Descargado: 33 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Realizar Una Rutina De Busqueda Para ... JosueCR Bases de Datos 6 Domingo, 15 Agosto 2010, 17:38 Ver último mensaje
JosueCR
No hay nuevos mensajes Calculos Para Carga De Un TextBox Josec Controles/Librerías/Componentes 3 Miercoles, 16 Noviembre 2011, 20:57 Ver último mensaje
jsbsan
No hay nuevos mensajes Manual Básico Para Realizar Controles jsbsan Controles/Librerías/Componentes 6 Sabado, 05 May 2012, 11:51 Ver último mensaje
jsbsan
No hay nuevos mensajes Equema Para Realizar Una Aplicación En Ga... jsbsan General 4 Martes, 28 Agosto 2012, 12:23 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron