Programa en PVM que calcula el producto escalar de dos vectores de nmeros enteros . Se suponen conocidos y son vector_A y vetor_B . Se debe cumplir que el nmero de elementos sea divisible por el nmero de nodos . 
****************************************************************************************
//Programa maestro.c

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

#DEFINE N_NODOS 5
#DEFINE N_ELEMENTOS 1000

main(){
	int bloque,tid,suma,dato;
	int arraytids[N_NODOS];
	bloque=N_ELEMENTOS/N_NODOS;
	tid=pvm_mytid();
	pvm_spawn("esclavo","",0,"",N_NODOS,arraytids);
	for(int i=0;i<N_NODOS;i++){
		pvm_initsend(PvmDataDefault);
		pvm_pkint(&bloque,1,1);
		pvm_pkint(&vector_A[i*bloque],bloque,1);
		pvm_pkint(&vector_B[i*bloque],bloque,1);
		pvm_send(arraytids[i],1);
	}
	suma=0;
	for(int i=0;i<N_NODOS;i++){
		pvm_recv(-1,1);
		pvm_upkint(&dato,1);
		suma=suma+dato;
	}
	printf("El producto escalar es %d",suma);
	pvm_exit();
	exit(0);
}
****************************************************************************************
//Programa esclavo.c

#INCLUDE "pvm3.h"

main(){
	int padre,tid,bloque,suma;
	int *vector_A,*vector_B;
	suma=0;
	tid=pvm_mytid();
	padre=pvm_parent();
	pvm_recv(padre,1);
	pvm_upkint(&bloque,1,1);
	vector_A=(int *)malloc(bloque*sizeof(int));
	vector_B=(int *)malloc(bloque*sizeof(int));
	pvm_upkint(&vector_A[0],bloque,1);
	pvm_upkint(&vector_B[0],bloque,1);
	for(int i=0;i<bloque;i++){
		suma=suma+(vector_A[i]*vector_B[i]);
	}
	pvm_initsend(PvmDataDefault);
	pvm_pkint(&suma,1,1);
	pvm_send(pafdre,1);
	pvm_exit();
	exit(0);
}
