Programa en PVM que calcula el valor mnimo de un vector de enteros . Distribuye los datos en varios nodos de manera que el nmero de nodos ms el padre dividan al nmero de elementos del vector . Se supone conocido el vector , que se llama vector_A . Su dimensin se pone como una constante , al igual que el nmero de nodos .
****************************************************************************************
//Programa maestro.c

#INCLUDE "pvm3.h"
#INCLUDE <stdio.h>

#DECLARE N 1000
#DECLARE ESCLAVOS 24

main(){
	int tid,minimo,bloque,min;
	int arraytids[ESCLAVOS];
	tid=pvm_mytid();
	bloque=N/(ESCLAVOS+1);
	pvm_spawn("esclavo","",0,"",ESCLAVOS,arraytids);
	for(int i=0;i<ESCLAVOS;i++){
		pvm_initsend(PvmDataDefault);
		pvm_pkint(&bloque,1,1);
		pvm_pkint(&vector_A[i*bloque],bloque,1);
		pvm_mcast(arraytids,ESCLAVOS,1);
	}
	minimo=10000;
	for(int i=0;i<bloque;i++){
		if(vector_A[(ESCLAVOS*bloque)+i]<minimo){
			minimo=vector_A[(ESCLAVOS*bloque)+i];
		}
	}
	for(int i=0;i<ESCLAVOS;i++){
		pvm_recv(-1,1);
		pvm_upkint(&min,1,1);
		if(min<minimo){
			minimo=min;
		}
	}
	printf("El mnimo es el &d",minimo);
	pvm_exit();
	exit(0);
}
****************************************************************************************
//Programa esclavo.c

#INCLUDE "pvm3.h

main(){
	int padre,tid,minimo,min,bloque;
	minimo=10000;
	tid=pvm_mytid();
	padre=pvm_parent();
	pvm_recv(padre,1);
	pvm_upkint(&bloque,1,1);
	for(int i=0;i<bloque;i++){
		pvm_upkint(&min,1,1);
		if(min<minimo){
			minimo=min;
		}
	}
	pvm_initsend(PvmDataDefault);
	pvm_pkint(&minimo,1,1);
	pvm_send(padre,1);
	pvm_exit();
	exit(0);
}
