- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并行计算实验二报告
广东技术师范学院实验报告
学院: 计算机科学学院 专业: 计算机科学与技术 班级: 成绩: 姓名: 学号: 组别: 组员: 实验地点: 工业中心203 实验日期: 指导教师签名: 预习情况 操作情况 考勤情况 数据处理情况
实验 (二) 项目名称: 并行程序设计
1.编写一个计算矩阵乘积的并行程序。统计采用不同优化选项编译该程序生成的代码的运行时间,根据程序的计算量和运行时间计算出程序的实际浮点性能(以MFLOPS为单位)和效率(实际性能/处理器峰值性能),并将结果填写在下表中(根据需要加行)。
提示:用“time程序名”可以得到程序的运行时间。
优化选项 运行时间/s 性能/MFLOPS 效率/% 0.000978616 0.637 51.9 去掉不相关的输出 0 0.956 77.9
源程序代码:
#include mpi.h
#include iostream.h
#includestdlib.h
#include time.h
#include fstream.h
const int N=10, M=10,H=10,P=10;
void main(int argc, char *argv[])
{
int i, j, k, t ;
int a[N][M]; //矩阵A
int b[M][P]; //矩阵B
long int c[N][P]; //结果矩阵
int ArraySize[4]; //矩阵的行数和列数
int myid, rank, numprocs, namelen;
double mypi, pi;
double startwtime, endwtime;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(argc, argv);
MPI_Comm_size(MPI_COMM_WORLD, numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, myid);
MPI_Comm_rank(MPI_COMM_WORLD, rank);
MPI_Get_processor_name(processor_name, namelen);
ArraySize[0]=N;ArraySize[1]=M;ArraySize[2]=H;ArraySize[3]=P;
ofstream sinput;
sinput.open(sinput.txt); //新建一个sinput.txt
//**************************************************************
//使用的代码
/* for(i = 0; i ArraySize[0]; i++)
{
for(j = 0; j ArraySize[1]; j++)
{
sinput rand() % 100 ;
}
}
coutendl;
coutendl;
for(i = 0; i ArraySize[2]; i++)
{
for(j = 0; j ArraySize[3]; j++)
{
sinput rand() % 100 ;
}
}
*/
//**************************************************************
coutProcess:myid 主机名:processor_nameendl;
if(myid == 0)
{
t = 10000;
startwtime = MPI_Wtime();
}
if(rank == 0)
{
//******************************************************
ifstream in(sinput.txt);
// cout请输入矩阵a的行列数:\n行数:;
//cinArraySize[0];
// ArraySize[0]=N;
// cout列数:;
// cinArraySize[1];
// ArraySize[1]=M;
// cout请输入矩阵b的行列数:\n行数:;
//cinArraySize[2];
// ArraySize[2]=H;
// cout列数:;
// cinArraySize[3];
// ArraySize[3]=P;
//************
文档评论(0)