资源简介
并行计算大作业,MPI矩阵转置,效果很好
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#define MAX 5001
using namespace std;
int pnummlnfirst[MAX][MAX]*tmp;
double t_start t_end;
int ans[MAX][MAX];
MPI_Status status;
int main(int argc char* argv[]){
int my_rankgroup_size;
int i jp1p2xyt;
n = atoi(argv[1]);
MPI_Init(&argc&argv);
MPI_Comm_size(MPI_COMM_WORLD&group_size);
MPI_Comm_rank(MPI_COMM_WORLD&my_rank);
pnum = group_size;
m = sqrt(pnum);
l = n/m;
tmp = (int *)malloc(sizeof(int)*l*l);
if(my_rank == 0){
FILE *fp = fopen(“Parallel_compumatrix.txt““r“);
if(!fp){
printf(“error“);
exit(1);
}
else
{
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
fscanf(fp“%d “&(first[i][j]));
//printf(“%2d “first[i][j]);
}
//printf(“\n“);
}
fclose(fp);
}
t_start = MPI_Wtime();
for(i = 0; i < m; i++){
for(j = 0; j < m; j++){
p1 = j*l p2 = i*l;
//printf(“%d is sending.\n“i*m+j);
for(x = 0; x < l; x++){
for(y = 0;y < l; y++){
tmp[x*l+y] = first[p1][p2];
p2++;
//printf(“%2d “tmp[x*l+y]);
}
//printf(“\n“);
p1++;
p2 = i*l;
}
if(i!=0 || j!=0)
MPI_Send(tmpl*lMPI_INTi*m+ji*m+jMPI_COMM_WORLD);
}
}
}
//所有进程给主进程发自己转置部分的数组
else{ //printf(“l = %d“l);
MPI_Recv(tmpl*lMPI_INT0my_rankMPI_COMM_WORLD&status);
int t;
for(i = 0; i < l; i++){
for(j = i+1; j < l; j++){
t = tmp[i*l+j];
tmp[i*l+j] = tmp[j*l+i];
tmp[j*l+i] = t;
}
}
MPI_Send(tmpl*lMPI_INT0my_rankMPI_COMM_WORLD);
}
if(my_rank==0){
for(i = 0; i < l; i++){
for(j = 0; j < l; j++){
ans[i][j] = first[j][i];
}
}
for(i = 0; i < m; i++){
for(j = 0; j < m; j++){
if(i!=0 || j!=0){
MPI_Recv(tmpl*lMPI_INTi*m+ji*m+jMPI_COMM_WORLD&status);
for(x = 0; x < l; x++){
for(y = 0; y < l; y++){
ans[i*l+x][j*l+y] = tmp[x*l+y];
}
}
}
}
}
}
t_end = MPI_Wtime();
if (my_rank==0)
{
printf(“Matrix order:%d Time cost:%lf\n“nt_end-t_start);
}
free(tmp);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-04-18 23:57 实验三\
文件 17324 2017-04-07 16:51 实验三\hw3
文件 3025 2017-04-18 23:57 实验三\hw3.cpp
文件 1130 2017-04-07 08:44 实验三\hw3.o46502
文件 1130 2017-04-07 08:45 实验三\hw3.o46506
文件 1130 2017-04-07 08:45 实验三\hw3.o46508
文件 1130 2017-04-07 09:36 实验三\hw3.o46535
文件 1835 2017-04-07 16:51 实验三\t3.pbs
文件 612165 2017-04-20 20:54 实验报告三.pdf
相关资源
- TCC(Tiny C Compiler)0.9.26源码 原版和
- 枚举排序的并行算法MPI程序实现
- Writing A Compiler In Go
- protues中AMPIRE12864液晶数据手册及程序
- 矩阵相乘cannon算法的mpi实现
- MPI实现nbody
- nVIDIA Cg Compiler 2.0 Source
- MPI时间函数的测试
- compiler gcc5.h
- BinCompiler
- 缺少compiler-gcc5.h文件
- 实现快速排序MPI并行计算
- 并行计算_mpi编程手册完整版.pdf
- 并行计算八皇后,N皇后
- Fortran_C_NETCDF_MPI_tests.tar
- 旅行商问题并行实现
- Microsoft ACPI Source Language (ASL) Compi
- TCC(Tiny C Compiler)0.9.26源码 VS版工程
- TCC(Tiny C Compiler)0.9.26源码 VS版工程
- 通过减少问题规模形式,做并行计算
- ARM汇编实现矩阵转置
- MPI并行计算教程与
- 二维二阶VTI介质拟声波正演模拟与逆
- 二维VTI介质拟声波正演模拟与逆时偏
- 《并行算法实践》mpi源程序
- OpenMP程序
- CompilerTool源码(Delphi).7z
- MPI并行遗传算法
- 基于MPI得并行矩阵乘法 Cannon算法实现
-
Estimation of Dependences ba
sed on Empirica
评论
共有 条评论