博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MPI】并行奇偶交换排序
阅读量:6824 次
发布时间:2019-06-26

本文共 1779 字,大约阅读时间需要 5 分钟。

typedef long long __int64;#include "mpi.h"#include 
#include
#include
using namespace std;int Compute_partner(int phase,int my_rank,int comm_sz){//根据趟数的奇偶性以及当前编号的编号得到partner进程的编号 int partner; if(!(phase&1)){ if(my_rank&1){ partner=my_rank-1; } else{ partner=my_rank+1; } } else{ if(my_rank&1){ partner=my_rank+1; } else{ partner=my_rank-1; } } if(partner==-1 || partner==comm_sz){ partner=MPI_PROC_NULL; } return partner;}int main(int argc, char* argv[]){ int my_rank=0, comm_sz=0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &comm_sz); int np,n,local_n;//分别为进行奇偶交换排序的趟数和读入的数据总量以及分成的每段的长度 FILE* fp; if(my_rank==0){ fp=fopen("Sort.txt","r"); fscanf(fp,"%d%d",&np,&n); local_n=n/comm_sz; } MPI_Bcast(&np,1,MPI_INT,0,MPI_COMM_WORLD); MPI_Bcast(&local_n,1,MPI_INT,0,MPI_COMM_WORLD); int* keys; int* my_keys=new int[local_n]; if(my_rank==0){ keys=new int[n]; for(int i=0;i
my_keys[j+1]){ swap(my_keys[j],my_keys[j+1]); } } } else{ for(int j=1;j+1
my_keys[j+1]){ swap(my_keys[j],my_keys[j+1]); } } } } int* recv_keys=new int[local_n]; int* temp_keys=new int[local_n]; for(int i=0;i
=0){ if(my_keys[e1]>=recv_keys[e2]){ temp_keys[e]=my_keys[e1]; --e; --e1; } else{ temp_keys[e]=recv_keys[e2]; --e; --e2; } } for(int j=0;j

转载于:https://www.cnblogs.com/autsky-jadek/p/8150990.html

你可能感兴趣的文章
mysql用SQLyog导入数据时报错(文件太大)
查看>>
Shell 相关技巧的总结应用(1)
查看>>
oc代码风范
查看>>
VS2010插件及快捷键持续更新
查看>>
技术栈累积
查看>>
nginx处理别人域名解析到你的ip
查看>>
jQuery的简单小结
查看>>
LNMP架构(架构介绍,mysql安装,php安装,nginx介绍)
查看>>
Linux下查看用户列表
查看>>
svn图标显示问题
查看>>
卷积神经网络在图像分割中的进化史:从R-CNN到Mask R-CNN
查看>>
OpenSSH详解
查看>>
JavaScript Tips
查看>>
继续上章节的ospf重分布实验演示一
查看>>
RHEL6 64位ASM方式安装oracle 11gR2(二)
查看>>
玩转日志第一步,通过fluentd转存nginx日志
查看>>
awk 应用
查看>>
网站常见漏洞 -- 文件上传漏洞
查看>>
Struts2学习(六):访问隐藏的request和session
查看>>
结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)...
查看>>