列舉排序各種並行之MPI

2021-06-26 22:04:03 字數 1529 閱讀 4375

宣告:執行mpi程式之前必須先將mpich配置好,可以參照

#include "stdafx.h"

#include "mpi.h" 一定好放到stafx.h後面

#include #include #include #include /*

* 函式名: getrank

* 功能: 計算所屬部分資料的秩(比該元素小的數的個數)

* 輸入: hx_data:指向待排序序列的指標

* hx_datasize為待排序序列的長度

mylength為該處理器要排序的序列的長度

rank:指向秩陣列的指標

sumid:總處理器個數

myid:處理器id

* 輸出:返回1代表程式正常結束

*/

int getrank(int *data,int datasize,int mylength,int *rank,int sumid,int myid)

} return 1;

} /*

* 函式名: getdatasize

* 功能: 讀入待排序序列的長度

* 輸入: 待排序序列的長度

* 輸出: 返回待排序序列的長度

*/

int getdatasize()

return i;

} /*

* 函式名: main

* 功能: 主函式,實現列舉排序

* 輸入:argc為命令列引數個數;

* argv為每個命令列引數組成的字串陣列

* 輸出:返回1代表程式正常結束

*/int main(int argc,char *argv)

else

if(myid==0){

int seed;

fprintf(stderr,"請輸入隨機數的種子:");

fflush(stderr);

scanf("%d",&seed); /*獲得隨機數的種子*/

srand(seed); /*srand初始化隨機種子*/

printf("獲取隨機數\n");

fflush(stderr);

for(i=0;i

測試結果正確性:

測試1個程序

測試2個程序

相對加速比:65.7/36..46=1.80

MPI並行實現列舉排序

mpi並行實現列舉排序,如下 include include include 函式名 main 功能 主函式,實現列舉排序 輸入 argc為命令列引數個數 argv為每個命令列引數組成的字串陣列 輸出 返回1代表程式正常結束 int main int argc,char argv else if m...

列舉排序各種並行之Win32API

利用createevent建立事件,createthread建立執行緒 1.cpp 定義控制台應用程式的入口點。include stdafx.h include include time.h include using namespace std handle hx finish 2 handle ...

MPI 列舉排序實現

dfdfdfssfd.cpp 定義控制台應用程式的入口點。include stdafx.h include stdlib.h include stdio.h include mpi.h void countrank int rank,int perlen,int len,int p,int tota...