1 / 12
文档名称:

里仁多核程序设计实验报告.doc

格式:doc   大小:434KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

里仁多核程序设计实验报告.doc

上传人:qiang19840906 2017/11/22 文件大小:434 KB

下载得到文件列表

里仁多核程序设计实验报告.doc

相关文档

文档介绍

文档介绍:多核程序设计实验报告
Multi-core Programming Experiment Report
学生所在学院: 里仁学院
学生所在班级:
学生姓名:
学生学号:
指导教师:
教务处
2014年 4 月
实验一 Windows多线程编程
模块一:基础练****br/>一. 实验目的与要求
二. 实验环境及软件
三. 实验内容
四. 实验代码
· #include <>  
· #include <>  
· #include <>  
· #include <>     
· void test(int n)  
· {  
·     for (int i = 0; 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("\nTotal Time: %f ms.\n", dResult);  
·     system("pause");  
·     return 0;  
· } 
五. 结果分析
运行时间是串行的一半。明显降低了时间的消耗。
实验二各种同步机制的性能比较
一. 实验目的与要求
二. 实验环境及软件
三. 实验内容
以矩阵乘进行并行串行比较
四. 实验代码和结果
实验代码:
// : 定义控制台应用程序的入口点。
#include ""
#include <>
#include <>
#include <>
#define NN 2000
int A[NN][NN], B[NN][NN];
long long C[NN][NN];
void solve(int n, int num_thread){
int i, j, t, k, paralleltime, serialtime;
clock_t startTime, endTime;
long long sum;
omp_set_num_threads(num_thread);
//--------------对矩阵A和矩阵B进行初始化-------------
for (i = 0; i<n; i++){
t = i + 1;
for (j = 0; j<n; j++){
A[i][j] = t++;
B[i][j] = 1;
}
}
//----------------矩阵乘法并行算法------------------
startTime = clock();
sum = 0;
#pragma omp parallel shared(A,B,C) private(i,j,k)
{
#pragma omp for schedule(dynamic)
for (i = 0; i<n; i++){
for (j = 0; j<n; j++){
C[i][j] = 0;
for (k = 0; k<n; k++){
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum += C[i][j];
endTime = clock();
paralleltime = endTime - startTime;
printf("矩阵C所有元素和为sum=%lld 并行计算时间time=%dms\n", sum, paralleltime);
startTime = clock();
sum = 0;
for (i = 0; i<n; i++){
for (j = 0