亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? box.c

?? 并行算法下的box算法
?? C
字號:
#include <stdio.h>#include "math.h"#include "mpi.h"int forint ( float temp){    int outint;    if( temp >= (floor(temp) + 0.5))        outint=floor(temp) + 1;    else        outint=floor(temp);    return outint;}main ( argc, argv )int argc;char * argv[];{    MPI_Status status;    int     i,        group_size,        my_rank,        pnumber,                                  /* to store number of used slave processors */        h,        lp,        lop,        j,        t;    int     group_size1,                          /* number of rank*/        tmpp;    FILE    *fp;    int     lp1,        h1,        tmp1,        lop1,        high,        mid,        flag,        fflag;    int     tmpd,        d[100][100],        height,        m,                                        /* number of box*/        td;    int     f[100][100],        e[100][100],        r[100];                                   /*output array*/    float   a[100],                               /* input array*/        s[100],        b[100][100],        c[100][100],        tmp;    double starttime,endtime;    MPI_Init ( &argc , &argv );                   /* Initialze MPI. */    starttime = MPI_Wtime();                                                  /* Get the number of rank. */    MPI_Comm_size ( MPI_COMM_WORLD , &group_size1 );    MPI_Comm_rank ( MPI_COMM_WORLD , &my_rank );  /* get id of rank*/	/*if the number of slave processor is less than 2,Abort!*/    if ( group_size1 < 3 )    {        printf ( "not enough processor!\n" );        MPI_Abort ( MPI_COMM_WORLD,99 );    }	/* calculate the number of use slave processor and the size of input array*/    tmpp = 1;    for ( i = 1 ; ; i++ )    {        tmpp = tmpp * 2;        if ( tmpp > group_size1 - 1 ) break ;    }    pnumber = (int)( tmpp / 2 );    printf ( "processor number is %d\n",pnumber );    group_size = pnumber+1;	/*主進程:輸入數組,輸出結果*/    if(my_rank == 0)    {        printf ( "my_rank %d\n" , my_rank );        printf ( "Enter %d values(<=1):\n" , pnumber );        fp=fopen("data1","rb");        for(i = 1;i <= pnumber ; i++ )        {            fscanf(fp,"%f",&a[i]);            if ( a[i] > 1)            {                printf ( "input %f wrong!\n" , a[i] );                i = i-1 ;            }            b[0][i] = a[i];        }        printf ( "input a[%d]:\n" , pnumber );        for ( i = 1 ; i <= pnumber ; i++ )        {            printf ( "%f\n" , a[i] );        }        for ( i = 1; i <= pnumber ; i++ )        {            MPI_Send(&b[0][i],1,MPI_FLOAT,i,i,MPI_COMM_WORLD);        }        tmp = log( pnumber ) / log(2);        lp = forint( tmp);        printf("lp= %d \n",lp);        tmp = 1 ;        for ( h = 1;h <= lp ; h++ )        {            tmp = tmp * 2 ;            lop =(int)( pnumber / tmp  );            for ( j = 1 ;j <= lop ; j++ )            {                MPI_Send(&b[h-1][2*j-1],2,MPI_FLOAT,j,j+h*10,MPI_COMM_WORLD);            }            for( j = 1 ;j <= lop ; j++ )            {                MPI_Recv(&b[h][j],1,MPI_FLOAT,j,j+h*10+100,MPI_COMM_WORLD,&status);            }        }        for ( i = 1 ; i <= pnumber ; i++ )        {            MPI_Recv(&c[0][i],1,MPI_FLOAT,i,0,MPI_COMM_WORLD,&status);        }        for ( i = 1 ; i <= pnumber ; i++ )        {            MPI_Send(&c[0][1],pnumber,MPI_FLOAT,i,1,MPI_COMM_WORLD);        }        for ( i = 1 ; i <= pnumber ; i++ )        {            MPI_Recv(&f[0][i],1,MPI_INT,i,0,MPI_COMM_WORLD,&status);        }        for ( i = 1 ; i <= pnumber ; i++ )        {            MPI_Send(&f[0][1],pnumber,MPI_INT,i,2,MPI_COMM_WORLD);        }        MPI_Recv(&m,1,MPI_INT,1,0,MPI_COMM_WORLD,&status);        for ( i = 1 ; i <= m ; i++ )        {            MPI_Recv(&d[0][i],1,MPI_INT,i,0,MPI_COMM_WORLD,&status);            printf("d 0 %d:%d\n",i,d[0][i]);        }        for ( i = 1 ; i <= pnumber ; i++ )        {            MPI_Send(&d[0][1],m,MPI_INT,i,1,MPI_COMM_WORLD);        }    }	/* 根據主進程傳來的數據,計算,得出結果*/    else    {        if ( my_rank <= pnumber )        {			/* 求前綴和 c[0][j]<-a[1]+a[2]+...+a[j] */            printf ( "my_rank %d\n" , my_rank );            MPI_Recv(&b[0][my_rank],1,MPI_FLOAT,0,my_rank,MPI_COMM_WORLD,&status);            tmp1=1;            i=0;            for(;;)            {                if ( tmp1 < my_rank )                {                    i++;                    tmp1 = tmp1 * 2 ;                }                else break ;            }            tmp = log( group_size-1 ) / log(2);            lp1 = forint ( tmp );            for(h1=1;h1<=lp1-i;h1++)            {                MPI_Recv(&b[h1-1][2*my_rank-1],2,MPI_FLOAT,0,my_rank+h1*10,MPI_COMM_WORLD,&status);                b[h1][my_rank] = b[h1-1][2*my_rank-1]+b[h1-1][2*my_rank];                MPI_Send(&b[h1][my_rank],1,MPI_FLOAT,0,my_rank+100+h1*10,MPI_COMM_WORLD);            }            for(h1=lp1-i;h1>=0;h1--)            {                if ( my_rank == 1 )                {                    c[h1][my_rank] = b[h1][my_rank] ;                    if ( h1 > 0 )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2,my_rank+h1*10,MPI_COMM_WORLD);                    if ( h1 > 0 && 2*my_rank+1 < (group_size-1) )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2+1,my_rank+h1*10,MPI_COMM_WORLD);                }                if ( my_rank % 2 == 0 )                {                    MPI_Recv(&c[h1+1][my_rank/2],1,MPI_FLOAT,my_rank/2,my_rank/2+(h1+1)*10,MPI_COMM_WORLD,&status);                    c[h1][my_rank] = c[h1+1][my_rank/2];                    if ( h1 > 0 )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2,my_rank+h1*10,MPI_COMM_WORLD);                    if ( h1 > 0 && my_rank*2+1 < (group_size-1) )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2+1,my_rank+h1*10,MPI_COMM_WORLD);                }                if ( my_rank % 2 != 0 && my_rank > 1 )                {                    MPI_Recv(&c[h1+1][(my_rank-1)/2],1,MPI_FLOAT,(my_rank-1)/2,(my_rank-1)/2+(h1+1)*10,MPI_COMM_WORLD,&status);                    c[h1][my_rank] = c[h1+1][(my_rank-1)/2] + b[h1][my_rank] ;                    if ( h1 > 0 )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2,my_rank+h1*10,MPI_COMM_WORLD);                    if ( h1 > 0 && my_rank*2+1 < (group_size-1) )                        MPI_Send(&c[h1][my_rank],1,MPI_FLOAT,my_rank*2+1,my_rank+h1*10,MPI_COMM_WORLD);                }            }            MPI_Send(&c[0][my_rank],1,MPI_FLOAT,0,0,MPI_COMM_WORLD);			/*借助c[0][j],計算f[0][j]<-max{k|a[j]+a[j+1]+...+a[k] <= 1}*/            MPI_Recv(&c[0][1],group_size-1,MPI_FLOAT,0,1,MPI_COMM_WORLD,&status);            c[0][0]=0;            for ( i = 1 ; i <= group_size - my_rank ; i++ )            {                s[i] = c[0][my_rank+i-1] - c[0][my_rank-1] ;            }            if ( s[group_size-my_rank] <= 1 ) mid = group_size - my_rank ;            else            {                for ( i = 1 ; i <= group_size - my_rank ; i++ )                {                    if ( s[i] > 1 )  break ;                }                mid = i - 1 ;            }            f[0][my_rank] = mid + my_rank - 1 ;            MPI_Send(&f[0][my_rank],1,MPI_INT,0,0,MPI_COMM_WORLD);			/*計算下次適應算法使用的箱子數目 m*/            MPI_Recv(&f[0][1],group_size-1,MPI_INT,0,2,MPI_COMM_WORLD,&status);            f[0][group_size] = group_size - 1 ;            h = 0 ;            for ( i = 1 ; i < group_size ; i++ )            {                e[0][i] = 1 ;            }            fflag = 0 ;            while ( fflag == 0 )            {                if ( h > 0 )                {                    for ( j = 1 ; j <= group_size - 1 ; j++ )                    {                        MPI_Recv(&e[h][j],1,MPI_INT,j,j+h*1000,MPI_COMM_WORLD,&status);                        MPI_Recv(&f[h][j],1,MPI_INT,j,j+h*1000,MPI_COMM_WORLD,&status);                    }                }                if ( f[h][1] == group_size - 1 )                {                    fflag=1 ;                }                else                {                    h = h + 1 ;                    if ( f[h-1][my_rank] == group_size - 1 )                    {                        e[h][my_rank] = e[h-1][my_rank];                        f[h][my_rank]=f[h-1][my_rank];                    }                    else                    {                        t = f[h-1][my_rank] + 1 ;                        e[h][my_rank] = e[h-1][my_rank] + e[h-1][t] ;                        f[h][my_rank] = f[h-1][t] ;                    }                    for ( i = 1 ; i < group_size ; i++ )                    {                        MPI_Send(&e[h][my_rank],1,MPI_INT,i,my_rank+h*1000,MPI_COMM_WORLD);                        MPI_Send(&f[h][my_rank],1,MPI_INT,i,my_rank+h*1000,MPI_COMM_WORLD);                    }                }            }            height=h;            if ( my_rank == 1 )            {                m = e[height][1] ;                for ( i = 2 ; i < group_size ; i++ )                {                    MPI_Send(&m,1,MPI_INT,i,2,MPI_COMM_WORLD);                }            }            else            {                MPI_Recv(&m,1,MPI_INT,1,2,MPI_COMM_WORLD,&status);            }			/*計算d[0][j]=第j個箱子中第一個物品在輸入序列中的編號*/            tmpd = 1 ;            for ( h = height ; h >= 0 ; h-- )            {                if ( my_rank <= tmpd && my_rank <= m )                {                    if ( my_rank == 1 )                    {                        d[h][1] = 1 ;                        MPI_Send(&d[h][1],1,MPI_INT,2,h*100+1,MPI_COMM_WORLD);                    }                    if ( my_rank % 2 == 0 )                    {                        MPI_Recv(&d[h+1][my_rank/2],1,MPI_INT,my_rank/2,(h+1)*100+my_rank/2,MPI_COMM_WORLD,&status);                        td = d[h+1][my_rank/2] ;                        d[h][my_rank] = f[h][td] + 1 ;                        if ( my_rank*2 <= tmpd*2 && my_rank*2 <= m )                        {                            MPI_Send(&d[h][my_rank],1,MPI_INT,my_rank*2,h*100+my_rank,MPI_COMM_WORLD);                        }                        if ( my_rank*2 <= tmpd*2 && my_rank*2 - 1 <= m )                            MPI_Send(&d[h][my_rank],1,MPI_INT,my_rank*2-1,h*100+my_rank,MPI_COMM_WORLD);                    }                    if ( my_rank % 2 !=0 && my_rank > 1 )                    {                        MPI_Recv(&d[h+1][(my_rank+1)/2],1,MPI_INT,(my_rank+1)/2,(h+1)*100+(my_rank+1)/2,MPI_COMM_WORLD,&status);                        d[h][my_rank] = d[h+1][(my_rank+1)/2] ;                        if ( my_rank*2 <= tmpd*2 && my_rank*2 <= m )                        {                            MPI_Send(&d[h][my_rank],1,MPI_INT,my_rank*2,h*100+my_rank,MPI_COMM_WORLD);                        }                        if ( my_rank*2 <= tmpd*2 && my_rank*2-1 <= m )                            MPI_Send(&d[h][my_rank],1,MPI_INT,my_rank*2-1,h*100+my_rank,MPI_COMM_WORLD);                    }                }                tmpd = tmpd * 2 ;            }            if ( my_rank == 1 ) MPI_Send(&m,1,MPI_INT,0,0,MPI_COMM_WORLD);            if ( my_rank <= m )            {                MPI_Send(&d[0][my_rank],1,MPI_INT,0,0,MPI_COMM_WORLD);            }			/*計算r[j]=第j個物品所放入的箱子序號*/            MPI_Recv(&d[0][1],m,MPI_INT,0,1,MPI_COMM_WORLD,&status);            if ( d[0][m] <= my_rank )            {                r[my_rank] = m ;            }            else            {                for ( i = 0 ; i <= m ; i++ )                {                    if ( d[0][i] > my_rank ) break ;                }                r[my_rank] = i - 1 ;            }            printf ( "number %d goods put into box %d\n" , my_rank, r[my_rank] );        }    }    endtime = MPI_Wtime();    printf(" that tooks %f second!\n",endtime-starttime);    MPI_Finalize();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频网在线直播| 国产欧美精品一区aⅴ影院| 中文字幕第一区第二区| 亚洲一区二区三区四区的| 日韩一区二区在线看片| 色婷婷av一区二区三区大白胸| 免费久久精品视频| 一区二区三区成人在线视频| 91久久精品午夜一区二区| 国产成人在线免费观看| 免费成人美女在线观看| 亚洲va欧美va人人爽| 中文字幕欧美区| 欧美mv日韩mv| 日韩三级视频在线观看| 欧美日韩中文字幕精品| 欧美性色综合网| 91丨九色丨黑人外教| av电影天堂一区二区在线观看| 韩国成人精品a∨在线观看| 免费久久99精品国产| 日韩高清国产一区在线| 亚洲精品视频在线观看免费| 最新中文字幕一区二区三区| 国产精品美日韩| 国产精品欧美综合在线| 国产精品大尺度| 国产精品久久99| 亚洲日本va在线观看| 亚洲欧美日韩精品久久久久| 亚洲卡通动漫在线| 亚洲一区二区三区四区的| 午夜久久电影网| 亚洲国产精品久久一线不卡| 午夜国产不卡在线观看视频| 亚洲成人免费看| 香港成人在线视频| 精品制服美女丁香| 国产一区 二区 三区一级| 国产1区2区3区精品美女| 国产伦精品一区二区三区视频青涩| 国产一区二区三区在线观看免费视频| 国产资源在线一区| 国产xxx精品视频大全| av不卡在线播放| 欧美三级日韩在线| 欧美综合在线视频| 欧美精品一区二区三区在线 | 欧美怡红院视频| 国产精品免费久久久久| 亚洲精品福利视频网站| 色94色欧美sute亚洲线路二| 午夜久久久久久久久| 亚洲日本在线看| 日韩欧美视频一区| 国产日韩影视精品| 一卡二卡欧美日韩| 日本午夜一本久久久综合| 蜜桃91丨九色丨蝌蚪91桃色| 经典一区二区三区| 欧美在线综合视频| 久久综合资源网| 亚洲九九爱视频| 国产一区二区精品久久99| 91麻豆精品在线观看| 欧美一卡二卡三卡| 一个色综合av| av电影一区二区| 国产欧美一二三区| 丁香网亚洲国际| 精品电影一区二区三区| 蜜桃视频在线观看一区二区| 91.com在线观看| 午夜视频在线观看一区二区三区 | 乱一区二区av| 欧美一级日韩不卡播放免费| 天天影视涩香欲综合网| 欧美日韩国产影片| 午夜视频久久久久久| 欧美日韩激情一区| 五月综合激情婷婷六月色窝| 欧美日韩一区二区三区四区五区| 亚洲免费在线视频| 欧美怡红院视频| 日韩国产欧美一区二区三区| 日韩视频123| 国产麻豆精品在线观看| 国产欧美精品一区| 91色视频在线| 五月天网站亚洲| 亚洲精品在线观| 岛国av在线一区| 一区二区三区高清不卡| 欧美疯狂做受xxxx富婆| 裸体一区二区三区| 国产日产精品1区| 91在线你懂得| 日韩av在线播放中文字幕| 日韩美女视频一区二区在线观看| 国产在线播精品第三| ...中文天堂在线一区| 欧美午夜一区二区三区| 免费观看久久久4p| 国产精品卡一卡二| 欧美男男青年gay1069videost| 美国一区二区三区在线播放| 久久久久国产精品厨房| 日本精品一区二区三区四区的功能| 亚洲线精品一区二区三区八戒| 91精品国产综合久久福利| 国产夫妻精品视频| 偷拍一区二区三区四区| 国产精品素人视频| 在线播放中文字幕一区| 丁香婷婷综合色啪| 日韩—二三区免费观看av| 久久亚洲春色中文字幕久久久| 91蝌蚪porny九色| 韩国在线一区二区| 依依成人精品视频| 久久欧美中文字幕| 国产精品人成在线观看免费| 91精品国产综合久久久久久 | 亚洲大片精品永久免费| 久久久综合视频| 欧美三级视频在线观看| 不卡的电影网站| 久国产精品韩国三级视频| 亚洲国产乱码最新视频 | 国产精品福利一区| 日韩久久精品一区| 欧美无人高清视频在线观看| www.激情成人| 国内久久精品视频| 蜜臀久久久99精品久久久久久| 一区二区中文视频| 欧美国产丝袜视频| 久久综合狠狠综合久久综合88| 欧美色倩网站大全免费| 99热这里都是精品| 国产成人夜色高潮福利影视| 日韩不卡手机在线v区| 亚洲午夜久久久久久久久久久 | a亚洲天堂av| 国产高清精品在线| 国产一区二区美女诱惑| 蜜臀a∨国产成人精品| 亚洲一区二区av在线| 一区二区三区欧美| 亚洲精品亚洲人成人网在线播放| 中文字幕一区二区三区不卡| 欧美激情综合在线| 中日韩免费视频中文字幕| 国产农村妇女毛片精品久久麻豆| 久久影院视频免费| 久久一区二区视频| 精品三级av在线| 精品国产在天天线2019| 精品国产三级电影在线观看| 欧美videossexotv100| 91精品国产免费久久综合| 欧美巨大另类极品videosbest | 国产亚洲精品资源在线26u| 久久先锋影音av| 精品国产伦一区二区三区观看方式| 欧美一区二区精品久久911| 91精品国产91久久综合桃花| 91精品国产高清一区二区三区 | 另类中文字幕网| 激情深爱一区二区| 国产精品自拍av| 成人av在线一区二区| av亚洲精华国产精华| 在线免费不卡视频| 欧美一区二区三区四区视频 | 2021中文字幕一区亚洲| 久久久久久电影| 中文字幕一区二区三区不卡| 亚洲激情男女视频| 秋霞av亚洲一区二区三| 国产乱对白刺激视频不卡| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产欧美日韩卡一| 亚洲免费在线视频| 亚洲一级二级三级在线免费观看| 亚洲主播在线播放| 激情综合色综合久久综合| 国产成人av福利| 一本久久精品一区二区| 欧美大白屁股肥臀xxxxxx| 中文字幕av一区二区三区免费看| 亚洲免费观看在线观看| 美女尤物国产一区| av亚洲精华国产精华精华| 日韩视频在线一区二区| 国产精品国产成人国产三级 | 亚洲精品一区二区三区蜜桃下载 | 亚洲自拍偷拍网站| 国产乱国产乱300精品| 欧美视频三区在线播放|