91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 148KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-15
  • 語言: C/C++
  • 標簽: OpenMP,C??

資源簡介

OpenMP實現矩陣乘法,通過C語言編程,通過控制矩陣規模和計算量的調整觀察并行計算的加速比!研究生高性能計算的基礎實驗

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?
#include?
#include?

int?*generate_martix(int?mint?n);//聲明矩陣生成函數
void?show_martix(int?*arrint?mint?n);//聲明矩陣顯示函數
void?multi_martix(int?*arr1int?*arr2int?mint?n);//聲明矩陣乘法函數
int?main(int?argcchar?*argv[]){
int?rowcolumn;//矩陣行、列
printf(“二維數組的行數(m):“);
scanf(“%d“&row);
printf(“二維數組的列數(n):?“);
scanf(“%d“&column);
int?*martix1*martix2;
martix1=generate_martix(rowcolumn);//創建矩陣
martix2=generate_martix(columnrow);//創建矩陣
//show_martix(martix1rowcolumn);
//printf(“\n“);
//show_martix(martix2columnrow);

int?compute_scale;//矩陣乘法計算次數
printf(“請輸入矩陣乘法計算次數:“);
scanf(“%d“&compute_scale);
omp_set_num_threads(thread_num);

int?start=0;
int?end=0;

//開啟一個線程
omp_set_num_threads(1);
start=omp_get_wtime()*1000;
//int?count=0;
//printf(“運行多線程前時間(單位ms):%d\n“start);
#pragma?omp?parallel?for
for(int?i=0;i {
multi_martix(martix1martix2rowcolumn);//進行矩陣乘法
//count++;
}
//printf(“矩陣計算次數=%d\n“count);
end=omp_get_wtime()*1000;
//printf(“運行多線程后時間(單位ms):%d\n“end);
printf(“開啟一個線程的運行時間(單位ms):%d\n“end-start);

//開啟兩個線程
omp_set_num_threads(2);
start=omp_get_wtime()*1000;
#pragma?omp?parallel?for
for(int?i=0;i {
multi_martix(martix1martix2rowcolumn);//進行矩陣乘法
}
end=omp_get_wtime()*1000;
printf(“開啟兩個線程的運行時間(單位ms):%d\n“end-start);

//開啟四個線程
omp_set_num_threads(4);
start=omp_get_wtime()*1000;
#pragma?omp?parallel?for
for(int?i=0;i {
multi_martix(martix1martix2rowcolumn);//進行矩陣乘法
}
end=omp_get_wtime()*1000;
printf(“開啟四個線程的運行時間(單位ms):%d\n“end-start);

//開啟八個線程
omp_set_num_threads(8);
start=omp_get_wtime()*1000;
#pragma?omp?parallel?for
for(int?i=0;i {
multi_martix(martix1martix2rowcolumn);//進行矩陣乘法
}
end=omp_get_wtime()*1000;
printf(“開啟八個線程的運行時間(單位ms):%d\n“end-start);

//開啟十六個線程
omp_set_num_threads(16);
start=omp_get_wtime()*1000;
#pragma?omp?parallel?for
for(int?i=0;i {
multi_martix(martix1martix2rowcolumn);//進行矩陣乘法
}
end=omp_get_wtime()*1000;
printf(“開啟十六個線程的運行時間(單位ms):%d\n“end-start);

system(“pause“);
return?0;
}

//矩陣生成函數
int?*generate_martix(int?mint?n){
int?*tmp;
tmp=(int?*)malloc(sizeof(int)*m*n);
for(int?i=0;i for(int?j=0;j tmp[i*n+j]=i*(j+1)+1;//按此規則生成二維數組的各項
}
}
return?tmp;
}

//矩陣乘法函數
void?multi_martix(int?*arr1int?*arr2int?mint?n){
int?temp=0;
int?c[256][256];//最大運算256*256規模的矩陣
for(int?i=0;i for(int?j=0;j for(int?k=0;k temp?+=arr1[i*n+k]*arr2[k*m+j];
}
//printf(“temp=%d\n“temp);
c[i][j]?=?temp;
//printf(“%5d“?c[i][j]);
temp=0;//清理temp值

}
//printf(“\n“);
}
}

//矩陣顯示函數
void?show_martix(int?*arrint?mint?n){
for(in

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-09-25?20:49??OPenMP實現矩陣乘法\
?????文件??????182353??2017-09-23?10:46??OPenMP實現矩陣乘法\OpenMP實現矩陣乘法.docx
?????文件????????3513??2017-09-19?16:50??OPenMP實現矩陣乘法\OpenMP實現矩陣乘法.cpp

評論

共有 條評論

相關資源