MPI并行实现枚举排序,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
/*
* 函数名: main
* 功能: 主函数,实现枚举排序
* 输入:argc为命令行参数个数;
* argv为每个命令行参数组成的字符串数组
* 输出:返回1代表程序正常结束
*/
int main(int argc,char *argv[])
{
int DataSize, MyLength; /*DataSize:数组长度;MyLength:处理器分配到的数据长度*/
int *data_in, *data_out; /*输入和输出数组指针*/
int *rank; /*秩数组*/
int MyID, SumID;
int i, j;
MPI_Status status;
MPI_Init(&argc,&argv); /*MPI 初始化*/
MPI_Comm_rank(MPI_COMM_WORLD,&MyID); /*每个处理器确定各自ID*/
MPI_Comm_size(MPI_COMM_WORLD,&SumID); /*每个处理器确定总处理器个数*/
if(MyID==0) /*主处理器*/
DataSize=GetDataSize(); /*读入待排序序列的长度*/
MPI_Bcast(&DataSize, 1, MPI_INT, 0, MPI_COMM_WORL