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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jordan.c

?? 高性能計(jì)算程序示例之五
?? C
字號(hào):
#include "stdio.h"#include "stdlib.h"#include "mpi.h"#include "math.h"/* somethings convinient for programming use */#define a(x,y) a[x*M+y]#define b(x) b[x]#define A(x,y) A[x*M+y]#define B(x) B[x]#define floatsize sizeof(float)#define intsize sizeof(int)/* M*M matrix */int M;/* dimision for per node */int m;/* A, B array pointer */float *A;float *B;/* time starting to compute, and other virable for time use */double starttime;double time1;double time2;/* node rank */int my_rank;/* size of nodes */int p;int l;MPI_Status status;/* *Function: fatal() *Desc:     output some message for user to know, and exit *Param:    message-char pointer to msg going to print on the screen */voidfatal(char *message){    printf("%s\n",message);    exit(1);}/* *Function: Environment_Finalize() *Desc:     release some pointer before all be finished *Param:    a,b,x,f - float pointer * */voidEnvironment_Finalize(float *a,float *b,float *x,float *f){    free(a);    free(b);    free(x);    free(f);}/* *Function:  main() *Desc:      program entry *Param: */intmain(int argc, char **argv){    int i,j,t,k,my_rank,group_size;    int i1,i2;    int v,w;    float s;    float temp;    int tem;    float *f;    float lmax;    float *a;    float *b;    float *x;    int *shift;    FILE *fdA,*fdB;    /* initialize MPI , group_size, my_rank */    MPI_Init(&argc,&argv);    MPI_Comm_size(MPI_COMM_WORLD,&group_size);    MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);    if(my_rank==0)        printf("group size: %d\n",group_size);    /* node number */    p=group_size;    /*     for the node which my_rank==0, set starttime     and read A,B elements from file"dataIn.txt",     p.s. M=N-1    */    if (my_rank==0)    {        starttime=MPI_Wtime();        fdA=fopen("dataIn.txt","r");        fscanf(fdA,"%d",&M);        /* allocate memory for matrix A an B */        A=(float *)malloc(floatsize*M*M);        B=(float *)malloc(floatsize*M);        /* read A&B elements(M*(M+1)) from the file */        for(i = 0; i < M; i++)        {            /* the 0 to M-1 th element of each row is the element of A */            for(j = 0; j < M; j++)            {                fscanf(fdA,"%f", A+i*M+j);            }            /* the last one of each row  is the element of B */            fscanf(fdA,"%f", B+i);        }        fclose(fdA);    }    /* broadcast the value of M */    MPI_Bcast(&M,1,MPI_INT,0,MPI_COMM_WORLD);    /* allocate area for each node */    m=M/p;    if (M%p!=0) m++;    f=(float*)malloc(sizeof(float)*(M+1));    a=(float*)malloc(sizeof(float)*m*M);    b=(float*)malloc(sizeof(float)*m);    x=(float*)malloc(sizeof(float)*M);    shift=(int*)malloc(sizeof(int)*M);    /* initialize shift value for each column */    for(i=0;i<M;i++)        shift[i]=i;    /* node which my_rank==0 appoints the a,b matrix array */    if (my_rank==0)    {        for(i=0;i<m;i++)            for(j=0;j<M;j++)                a(i,j)=A(i*p,j);        for(i=0;i<m;i++)            b(i)=B(i*p);    }    if (my_rank==0)    {        for(i=0;i<M;i++)            if ((i%p)!=0)        {            i1=i%p;            i2=i/p+1;            /* send A, B elements to node i1(i1!=0) */            MPI_Send(&A(i,0),M,MPI_FLOAT,i1,i2,MPI_COMM_WORLD);            MPI_Send(&B(i),1,MPI_FLOAT,i1,i2,MPI_COMM_WORLD);        }    }                                             /*  my_rank==0 */    else                                          /*  my_rank !=0 */    {        /* receive A,B elements from node 0 */        for(i=0;i<m;i++)        {            MPI_Recv(&a(i,0),M,MPI_FLOAT,0,i+1,MPI_COMM_WORLD,&status);            MPI_Recv(&b(i),1,MPI_FLOAT,0,i+1,MPI_COMM_WORLD,&status);        }    }    time1=MPI_Wtime();                            /* computing start */    for(i=0;i<m;i++)        for(j=0;j<p;j++)    {        if (my_rank==j)                           /* node rank= j*/        {            /* find lmax of matrix a on this node */            v=i*p+j;            lmax=a(i,v);            l=v;            for(k=v+1;k<M;k++)                if (fabs(a(i,k))>lmax)            {                lmax=a(i,k);                l=k;            }            /* exchange the with the max */            if (l!=v)            {                for(t=0;t<m;t++)                {                    temp=a(t,v);                    a(t,v)=a(t,l);                    a(t,l)=temp;                }                /* record the shift in order to output the right x */                tem=shift[v];                shift[v]=shift[l];                shift[l]=tem;            }            for(k=v+1;k<M;k++)                a(i,k)=a(i,k)/a(i,v);            b(i)=b(i)/a(i,v);            a(i,v)=1;            /* record f array for future use */            for(k=v+1;k<M;k++)                f[k]=a(i,k);            f[M]=b(i);            /* broadcast f & l value to node which rank= my_rank */            MPI_Bcast(&f[0],M+1,MPI_FLOAT,my_rank,MPI_COMM_WORLD);            MPI_Bcast(&l,1,MPI_INT,my_rank,MPI_COMM_WORLD);        }        else /*rank!=j*/        {            v=i*p+j;            MPI_Bcast(&f[0],M+1,MPI_FLOAT,j,MPI_COMM_WORLD);            MPI_Bcast(&l,1,MPI_INT,j,MPI_COMM_WORLD);        }        if(my_rank!=j)            if (l!=v)        {            for(t=0;t<m;t++)            {                temp=a(t,v);                a(t,v)=a(t,l);                a(t,l)=temp;            }            tem=shift[v];            shift[v]=shift[l];            shift[l]=tem;        }        if (my_rank!=j)            for(k=0;k<m;k++)        {            for(w=v+1;w<M;w++)                a(k,w)=a(k,w)-f[w]*a(k,v);            b(k)=b(k)-f[M]*a(k,v);        }        if (my_rank==j)            for(k=0;k<m;k++)                if (k!=i)                {                    for(w=v+1;w<M;w++)                        a(k,w)=a(k,w)-f[w]*a(k,v);                    b(k)=b(k)-f[M]*a(k,v);                }    } /* for i j */    /* caculate x value at node which rank is zero */    if (my_rank==0)        for(i=0;i<m;i++)            x[i*p]=b(i);    /* node which rank is not zero send b() value to node zero */    if (my_rank!=0)        for(i=0;i<m;i++)            MPI_Send(&b(i),1,MPI_FLOAT,0,my_rank,MPI_COMM_WORLD);    else    {        /*         node which rank is  zero recieve b() value from node i         and caculate x value        */        for(i=1;i<p;i++)            for(j=0;j<m;j++)        {            MPI_Recv(&b(j),1,MPI_FLOAT,i,i,MPI_COMM_WORLD,&status);            x[j*p+i]=b(j);        }    }    /* write the result to the screen and to file "dataOut.txt" */    fdA=fopen("dataOut.txt","w");    if (my_rank==0)    {        printf("Input of file \"dataIn.txt\"\n");        printf("%d\n", M);        for(i=0;i<M;i++)        {            for(j=0;j<M;j++) printf("%f\t",A(i,j));            printf("%f\n",B(i));        }        printf("\nOutput of solution\n");        fprintf(fdA,"Output of solution\n");        for(k=0;k<M;k++)        {            for(i=0;i<M;i++)            {                if (shift[i]==k)                {                    printf("x[%d]=%f\n",k,x[i]);                    fprintf(fdA,"x[%d]=%f\n",k,x[i]);                }            }        }    }    time2=MPI_Wtime();    if (my_rank==0)    {        printf("\n");        printf("Whole running time    = %f seconds\n",time2-starttime);        printf("Distribute data time  = %f seconds\n",time1-starttime);        printf("Parallel compute time = %f seconds\n",time2-time1);        fprintf(fdA,"Whole running time    = %f seconds\n",time2-starttime);        fprintf(fdA,"Distribute data time  = %f seconds\n",time1-starttime);        fprintf(fdA,"Parallel compute time = %f seconds\n",time2-time1);    }    fclose(fdA);    /* finalize and release pointer */    MPI_Finalize();    Environment_Finalize(a,b,x,f);    return(0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区丝袜| 欧美日韩一级大片网址| 久久精品国产一区二区| 人人爽香蕉精品| 男人的天堂亚洲一区| 美腿丝袜亚洲三区| 久久激情五月激情| 国产在线观看免费一区| 国产成人精品一区二区三区四区 | 91视频在线看| 色香蕉久久蜜桃| 欧美在线影院一区二区| 欧美乱妇一区二区三区不卡视频| 91超碰这里只有精品国产| 欧美一区二区三区日韩| 久久综合色天天久久综合图片| 国产亚洲精品资源在线26u| 中文字幕欧美国产| 亚洲欧美日韩国产中文在线| 亚洲一区二区三区国产| 日韩av成人高清| 国内精品视频一区二区三区八戒| 国产成人免费9x9x人网站视频| 成人av电影在线观看| 91豆麻精品91久久久久久| 91精品国产91久久综合桃花| 欧美不卡一区二区三区四区| 中日韩av电影| 亚洲国产sm捆绑调教视频| 毛片不卡一区二区| 99久久精品国产一区| 欧美日韩三级在线| 久久青草国产手机看片福利盒子 | 亚洲愉拍自拍另类高清精品| 首页国产丝袜综合| 国产成人免费视频网站高清观看视频| aaa亚洲精品| 日韩一区二区电影在线| 日本一区二区动态图| 亚洲国产成人高清精品| 精品在线免费视频| 色婷婷狠狠综合| 精品91自产拍在线观看一区| 中文字幕一区在线观看| 免费成人在线视频观看| 97国产一区二区| 欧美tk—视频vk| 亚洲精品成人精品456| 麻豆91小视频| 在线一区二区观看| 国产亚洲成年网址在线观看| 亚洲国产成人porn| 国产91精品一区二区麻豆网站| 欧美色手机在线观看| 国产欧美一区二区精品性色超碰| 午夜影视日本亚洲欧洲精品| 福利一区二区在线| 欧美一区二区日韩| 夜夜爽夜夜爽精品视频| 国产成人自拍网| 91精品国产综合久久久久| 亚洲午夜电影网| 精彩视频一区二区三区| 欧美色手机在线观看| 中国av一区二区三区| 免费观看91视频大全| 色老头久久综合| 中国色在线观看另类| 精品一区二区免费看| 欧美剧在线免费观看网站 | 成人亚洲精品久久久久软件| 欧美电影一区二区| 亚洲精品国产一区二区精华液 | 亚洲美女电影在线| 高清国产午夜精品久久久久久| 91精品国产免费| 亚洲大片精品永久免费| 色婷婷国产精品久久包臀| 国产女主播视频一区二区| 久久精品免费观看| 91精品国产麻豆国产自产在线 | 久久国内精品自在自线400部| 欧美影院精品一区| 亚洲视频香蕉人妖| 不卡的电视剧免费网站有什么| 久久一日本道色综合| 久久国产精品色婷婷| 91精品国产综合久久久久| 香蕉加勒比综合久久| 欧美天堂一区二区三区| 一区二区三区四区亚洲| 91欧美一区二区| 自拍偷拍亚洲综合| 91视频.com| 一区二区三区在线免费观看| 91小视频在线| 有码一区二区三区| 欧美在线观看视频一区二区| 自拍偷在线精品自拍偷无码专区| 99视频有精品| 亚洲免费av在线| 在线观看视频一区| 亚洲大尺度视频在线观看| 欧美在线|欧美| 亚瑟在线精品视频| 欧美高清www午色夜在线视频| 图片区小说区国产精品视频| 欧美久久久久久久久中文字幕| 亚洲自拍欧美精品| 欧美高清视频不卡网| 青青草国产成人av片免费| 精品精品国产高清一毛片一天堂| 韩国午夜理伦三级不卡影院| 久久亚区不卡日本| 成人精品电影在线观看| 亚洲欧美日韩久久| 欧美日韩大陆一区二区| 美女在线视频一区| 久久久欧美精品sm网站| av在线不卡免费看| 亚洲一区二区在线免费观看视频 | 亚洲人成网站色在线观看| 在线亚洲一区观看| 日本美女一区二区三区| 久久久91精品国产一区二区三区| 不卡av免费在线观看| 亚洲曰韩产成在线| 欧美va亚洲va| a级精品国产片在线观看| 日韩理论电影院| 3d动漫精品啪啪1区2区免费 | 欧美午夜在线观看| 美国欧美日韩国产在线播放| 亚洲成人高清在线| 欧美v国产在线一区二区三区| 成人一区二区三区视频| 一级日本不卡的影视| 日韩三级在线免费观看| 成人综合激情网| 亚洲 欧美综合在线网络| 久久伊人蜜桃av一区二区| 91麻豆福利精品推荐| 日本欧美一区二区三区乱码| 国产日韩欧美不卡| 欧美日韩一区中文字幕| 国产精品亚洲视频| 亚洲成人手机在线| 国产日韩综合av| 欧美高清精品3d| 成人深夜福利app| 日韩国产一二三区| 中文字幕一区视频| 欧美xfplay| 欧美一a一片一级一片| 国产自产高清不卡| 亚洲一区二区三区免费视频| 国产亚洲综合在线| 91精品国产综合久久久蜜臀粉嫩| 成人性视频网站| 久久精品二区亚洲w码| 亚洲色图欧美偷拍| 精品久久久久久久久久久久包黑料| 99re在线视频这里只有精品| 久久精品国产精品亚洲精品| 亚洲激情图片小说视频| 国产欧美日韩不卡| 日韩欧美在线不卡| 在线观看视频一区二区欧美日韩| 国产成人在线看| 久热成人在线视频| 亚洲bt欧美bt精品777| 国产精品久久久久久久久免费丝袜| 欧美美女bb生活片| 色呦呦国产精品| 不卡大黄网站免费看| 国产一区在线视频| 日本成人在线看| 午夜激情久久久| 亚洲综合自拍偷拍| 中文字幕一区二区三区不卡| 欧美精品一区二区三区很污很色的| 欧美三区免费完整视频在线观看| 99久久久免费精品国产一区二区 | 日韩一区二区免费电影| 欧美午夜电影网| 91视频国产资源| k8久久久一区二区三区| 国产美女一区二区| 久久精品国产秦先生| 日本中文在线一区| 视频一区二区欧美| 亚洲成年人网站在线观看| 一区二区三区在线看| 亚洲免费在线看| 亚洲黄色av一区| 中文字幕日本乱码精品影院| 国产精品日韩精品欧美在线| 国产色产综合产在线视频| 久久久综合视频| 国产亚洲精品中文字幕|