matrix_mult_slave.c

来自「A Parallel program to multiply two matri」· C语言 代码 · 共 53 行

C
53
字号
#include<stdio.h>#include<pvm3.h>#include<malloc.h>main(){	int rows,ncola,ncolb,mtype,mtid,stid,retcode,*a,*b,*c,nelements,i,j,k;	FILE *fp;	mtype = 1;        if ((fp = fopen("matrix.log", "w")) == NULL){                        printf("Can't Open Output File \n");         }	stid = pvm_mytid();	mtid = pvm_parent();	retcode = pvm_recv(mtid,mtype);	retcode = pvm_upkint(&rows,1,1);	retcode = pvm_upkint(&ncola,1,1);	retcode = pvm_upkint(&ncolb,1,1);	a = (int*)malloc(rows*ncola*sizeof(int));	b = (int*)malloc(ncola*ncolb*sizeof(int));	retcode = pvm_upkint(a,rows*ncola,1);	retcode = pvm_upkint(b,ncola*ncolb,1);	fprintf(fp,"rows = %d\tcola=%d\tcolb=%d",rows,ncola,ncolb);	c = (int*)malloc(ncola*ncolb*sizeof(int));		for(i = 0; i < rows; i++)	for(j = 0; j < ncolb; j++){		c[i * ncolb+j] = 0;		for(k = 0; k < ncola; k++)			c[i*ncolb+j]+=a[i*ncola+k]*b[k*ncolb+j];	}		fprintf(fp,"\n the resulting matrix in the processor %d is",stid);	for(i = 0; i<rows;i++)        for(j = 0; j <ncolb;j++)       	fprintf(fp,"%d  ",c[i*ncolb+j]);        fprintf(fp,"\n");		mtype = 2;	nelements = rows*ncolb;	retcode = pvm_initsend(PvmDataDefault);	retcode = pvm_pkint(&nelements,1,1);	retcode = pvm_pkint(&c[0],nelements,1);	retcode = pvm_send(mtid,mtype);	pvm_exit();	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?