欢迎来到天天文库
浏览记录
ID:24827021
大小:434.95 KB
页数:12页
时间:2018-11-15
《里仁多核程序设计实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、多核程序设计实验报告Multi-coreProgrammingExperimentReport学生所在学院:里仁学院学生所在班级:学生姓名:学生学号:指导教师:教务处2014年4月实验一Windows多线程编程模块一:基础练习一.实验目的与要求二.实验环境及软件三.实验内容四.实验代码·#include ·#include ·#include ·#include ·void test(int n) ·{ · for (int i = 0;
2、 i< 10000; i++) { · } ·} ·int main() { · double dResult; · long lBefore = clock(); ·#pragma omp parallel for · for (int i = 0; i < 10000; i++) · test(i); · dResult = (double)(clock() - lBefore); · printf("Total Time: %f ms.", dRe
3、sult); · system("pause"); · return 0; ·} 五.结果分析运行时间是串行的一半。明显降低了时间的消耗。-10-实验二各种同步机制的性能比较一.实验目的与要求二.实验环境及软件三.实验内容以矩阵乘进行并行串行比较四.实验代码和结果实验代码://juzhencheng.cpp:定义控制台应用程序的入口点。#include"stdafx.h"#include#include#include#defineNN2000intA[NN][NN],
4、B[NN][NN];longlongC[NN][NN];voidsolve(intn,intnum_thread){inti,j,t,k,paralleltime,serialtime;clock_tstartTime,endTime;longlongsum;omp_set_num_threads(num_thread);//--------------对矩阵A和矩阵B进行初始化-------------for(i=0;i5、----------------矩阵乘法并行算法------------------startTime=clock();sum=0;#pragmaompparallelshared(A,B,C)private(i,j,k)-10-{#pragmaompforschedule(dynamic)for(i=0;i6、m+=C[i][j];endTime=clock();paralleltime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld并行计算时间time=%dms",sum,paralleltime);startTime=clock();sum=0;for(i=0;i7、C[i][j];endTime=clock();serialtime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld串行计算时间time=%dms",sum,serialtime);printf("相对加速比为:%d/%d",serialtime,paralleltime);-10-}int_tmain(intargc,_TCHAR*argv[]){intn,num_thread;printf("请输入矩阵的节数(整数N<=2000),再输入并行的线程数。");while(sca8、nf("%d%d",&n,&num_thread)!=EOF){printf("你输入的矩阵节数为:%d并行线程数为:%d",n,num_thread);solve(n,num_thread);}return0;}实
5、----------------矩阵乘法并行算法------------------startTime=clock();sum=0;#pragmaompparallelshared(A,B,C)private(i,j,k)-10-{#pragmaompforschedule(dynamic)for(i=0;i6、m+=C[i][j];endTime=clock();paralleltime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld并行计算时间time=%dms",sum,paralleltime);startTime=clock();sum=0;for(i=0;i7、C[i][j];endTime=clock();serialtime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld串行计算时间time=%dms",sum,serialtime);printf("相对加速比为:%d/%d",serialtime,paralleltime);-10-}int_tmain(intargc,_TCHAR*argv[]){intn,num_thread;printf("请输入矩阵的节数(整数N<=2000),再输入并行的线程数。");while(sca8、nf("%d%d",&n,&num_thread)!=EOF){printf("你输入的矩阵节数为:%d并行线程数为:%d",n,num_thread);solve(n,num_thread);}return0;}实
6、m+=C[i][j];endTime=clock();paralleltime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld并行计算时间time=%dms",sum,paralleltime);startTime=clock();sum=0;for(i=0;i7、C[i][j];endTime=clock();serialtime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld串行计算时间time=%dms",sum,serialtime);printf("相对加速比为:%d/%d",serialtime,paralleltime);-10-}int_tmain(intargc,_TCHAR*argv[]){intn,num_thread;printf("请输入矩阵的节数(整数N<=2000),再输入并行的线程数。");while(sca8、nf("%d%d",&n,&num_thread)!=EOF){printf("你输入的矩阵节数为:%d并行线程数为:%d",n,num_thread);solve(n,num_thread);}return0;}实
7、C[i][j];endTime=clock();serialtime=endTime-startTime;printf("矩阵C所有元素和为sum=%lld串行计算时间time=%dms",sum,serialtime);printf("相对加速比为:%d/%d",serialtime,paralleltime);-10-}int_tmain(intargc,_TCHAR*argv[]){intn,num_thread;printf("请输入矩阵的节数(整数N<=2000),再输入并行的线程数。");while(sca
8、nf("%d%d",&n,&num_thread)!=EOF){printf("你输入的矩阵节数为:%d并行线程数为:%d",n,num_thread);solve(n,num_thread);}return0;}实
此文档下载收益归作者所有