Capitulos de este wiki
  1. 1 Comunicación entre Tareas
  2. 2 Balanceo de Carga
  3. 3 Consideraciones en Cuanto a Rendimiento
  4. 4 Recursos

1 - Comunicación entre Tareas

[editar]
Tutorial creado por unixOZ. Extraido de: http://www.tux.cl/doku.php?id=articulos:clusters:tutorial_de_un_cluster_beowulf_casero_3ra_parte
28 de Febrero de 2006
Después del inicio, la tarea para mandar debe tomar toda la información que se quiera mandar y convertirla a un buffer especial para distribuirlo entre las taras (ie: A & B); esto se hace con la función pvm_pack() (la cual es muy parecida a la famosa printf()). También hay funciones para arreglos (arrays en inglés) de tipos de datos únicos; como la pvm_pkdbl(). Para mayor información recomiendo buscar en las páginas man. Cuando ya esta todo esto listo, la tarea esta preparada para ser enviada, esto se hace por medio de pvm_send().

info=pvm_send(tid, msgtag)

Esta función enviará el mensaje en el buffer a la tarea con la task id (ver 2da parte) de la tid. Esta nombra la tarea con la variable (tipo int) msgtag. Un mensaje tag es útil para decirle a la tarea cual recibirá el mensaje que tipo de dato va a recibir.

Por ejemplo, un mensaje de tag 9 puede significar la suma de los números en el mensaje, mientras que un tag 3 puede significar la su división. pvm_mcast() es una función bastante parecida ya que hace los mismo que la pvm_send(), solo que la pvm_cast() toma varios tids en vez de uno. Conviene usarla cuando se envien varios mensajes a un conjunto de tareas.

La tarea que recibe el mensaje llama a la función pvm_recv() para recibirlo. bufid=pvm(tid,msgtag) esperará que la tarea llame a la función anterior. Con la nueva PVM3.3 se añadió la pvm_trecv(), la cual se deja de esperar a la tarea que reciba en un periodo de tiempo determinado, así permitiendo mayor fluidez en los programas. También esta la pvm_probe(), esta sólo le dice a la tarea que ha llegado un mensaje, y luego se termina.

Ya cuando la tarea ha recibido un mensaje, debe desempacar la información con pvm_unpack() (la opuesta a pvm_pack()).
[editar]

1 opinión

Excelente.

Mis respetos amigo, esta super tu tutorial, te agradesco publicar informacion tan improtante y util, se te agradece grandemente.

Tutoriales relacionados con 'Tutorial de un Cluster Beowulf Casero [3ra parte]'

Ya es la hora de ponerse a programar aplicaciones que realmente valen la pena. Para... Más »

Autor y licencia de 'Tutorial de un Cluster Beowulf Casero [3ra parte]'

Copyleft 2000-2006 Tux.cl
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.