資源簡介
枚舉排序是一種最簡單的排序算法,該算法的具體思想是對每一個待排序的元素統(tǒng)計小于它的所有元素的個數(shù),從而得到該元素最終處于序列鐘的位置。對該算法的并行化是很簡單的,假設(shè)對一個長為n的輸入序列使用n個處理器進行排序,只需使每個處理器負責完成對其中一個元素的定位,然后將所有的定位信息集中到主進程鐘,由主進程負責完成所有元素的最終排位。
代碼片段和文件信息
#include?
#include?
#include?
/*
??*?函數(shù)名:?main
??*?功能:???主函數(shù),實現(xiàn)枚舉排序
??*?輸入:argc為命令行參數(shù)個數(shù);
??*????????????argv為每個命令行參數(shù)組成的字符串數(shù)組
??*?輸出:返回1代表程序正常結(jié)束
*/
int?main(int?argcchar?*argv[])
{
int?DataSize?MyLength;??????????????/*DataSize:數(shù)組長度;MyLength:處理器分配到的數(shù)據(jù)長度*/
int?*data_in?*data_out;?????????????/*輸入和輸出數(shù)組指針*/
int?*rank;???????????????????????????/*秩數(shù)組*/
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);?/*每個處理器確定總處理器個數(shù)*/
if(MyID==0)???????????????????????????/*主處理器*/
DataSize=GetDataSize();???????/*讀入待排序序列的長度*/
MPI_Bcast(&DataSize?1?MPI_INT?0?MPI_COMM_WORLD);
??????????????????????????????????????????????/*主處理器廣播待排序序列的長度*/
/*在各個處理器間劃分任務(wù)*/
MyLength=DataSize/SumID;??????????????
if(MyID==SumID-1)?????????????????????/*每個處理器確定各自要排序的序列長度*/
MyLength=DataSize-MyLength*(SumID-1);
data_in=(int?*)malloc(DataSize*sizeof(int));?/*分配待排序序列的空間*/
if(data_in==0)?ErrMsg(“Malloc?memory?error!“);
if(MyID==0){?????????????????????
data_out=(int?*)malloc(DataSize*sizeof(int));?/*主處理器分配排序后數(shù)組的空間*/
if(data_out==0)?ErrMsg(“Malloc?memory?error!“);
rank=(int?*)malloc(DataSize*sizeof(int));?????/*分配序號數(shù)組的空間*/
if(rank==0)?ErrMsg(“Malloc?memory?error!“);
}
else{
rank=(int?*)malloc(MyLength*sizeof(int));?????/*分配序號數(shù)組的空間*/
if(rank==0)?ErrMsg(“Malloc?memory?error!“);
}
if(MyID==0){
????????int?seed;
????????????????printf(“Please?Input?Seed:“);
????????scanf(“%d“&seed);???????????????????????/*獲得隨機數(shù)的種子*/
srand(seed);??????????????????????????
printf(“Random?Numbers:\n“);?
for(i=0;i data_in[i]=((int)rand())%10000;??/*生成隨機數(shù),并輸出*/
printf(“%10d?“da
- 上一篇:ZEMAX單透鏡設(shè)計詳細多圖
- 下一篇:飛行管理問題的線性化模型
評論
共有 條評論