Programa en PVM que calcula el producto de dos matrices cuadradas de nmeros enteros . Las matrices se suponen conocidas y son matriz_A y matriz_B . El producto se obtiene en otra matriz llamada matriz_C . La dimensin se introduce como una constante . El programa principal se llama "maestro.c" y los otros "esclavo.c" .
****************************************************************************************
//Programa maestro.c

#INCLUDE "pvm3.h"

#DECLARE DIMENSION 10

main(){
	int n_nodos,tid,dato;
	int *arraytids;
	int matriz_C[DIMENSION][DIMENSION];
	n_nodos=DIMENSION*DIMENSION;
	tid=pvm_mytid();
	arraytids=(int *)malloc(n_nodos*sizeof(int));
	pvm_spawn("esclavo","",0,"",n_nodos,arraytids);
	for(int f=0;f<DIMENSION;f++){
		for(int c=0;c<DIMENSION;c++){
			pvm_initsend(PvmDataDefault);
			pvm_pkint(&DIMENSION,1,1);
			for(int v=0;v<DIMENSION;v++){
				pvm_pkint(&matriz_A[f][v],1,1);
				pvm_pkint(&matric_B[v][c],1,1);
			}
			pvm_send(arraytids[(f*DIMENSION)+c],1);
		}
	}
	for(int i=0;i<n_nodos;i++){
		pvm_recv(arraytids[i],1);
		pvm_upkint(&dato,1,1);
		matriz_C[i/DIMENSION][i%DIMENSION]=dato;
	}
	pvm_exit();
	exit(0);
}
****************************************************************************************
//Programa esclavo.c

#INCLUDE "pvm3.h"

main(){
	int tid,padre,tamano,m_A,m_B,suma;
	suma=0;
	tid=pvm_mytid();
	padre=pvm_parent();
	pvm_recv(padre,1);
	pvm_upkint(&tamano,1,1);
	for(int i=0;i<tamano;i++){
		pvm_upkint(&m_A,1,1);
		pvm_upkint(&m_B,1,1);
		suma=suma+(m_A*m_B);
	}
	pvm_initsend(PvmDataDefault);
	pvm_pkint(&suma,1,1);
	pvm_send(padre,1);
	pvm_exit();
	exit(0);
}
