Changeset 14787


Ignore:
Timestamp:
04/29/13 15:31:59 (12 years ago)
Author:
Eric.Larour
Message:

CHG: better tagging of send and recv operations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/objects/Bucket.h

    r14750 r14787  
    3434                /*constructors, destructors: */
    3535                Bucket(){ /*{{{*/
     36                        this->Initialize();
     37                } /*}}}*/
     38                Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/
     39                       
     40                        this->Initialize();
     41
     42                        this->type=MATRIX_BUCKET;
     43                        this->m=min;
     44                        this->n=nin;
     45                        this->mode=modein;
     46                        if(this->m){
     47                                this->idxm=xNew<int>(this->m);
     48                                xMemCpy(this->idxm,idxmin,this->m);
     49                        }
     50                        if(this->n){
     51                                this->idxn=xNew<int>(this->n);
     52                                xMemCpy(this->idxn,idxnin,this->n);
     53                        }
     54                        if(this->m*this->n){
     55                                this->values=xNew<doubletype>(this->n*this->m);
     56                                xMemCpy(this->values,valuesin,this->n*this->m);
     57                        }
     58                } /*}}}*/
     59                Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/
     60                        this->Initialize();
     61                       
     62                        this->type=VECTOR_BUCKET;
     63                        this->m=min;
     64                        this->mode=modein;
     65                        if(this->m){
     66                                this->idxm=xNew<int>(this->m);
     67                                xMemCpy(this->idxm,idxmin,this->m);
     68                               
     69                                this->values=xNew<doubletype>(this->m);
     70                                xMemCpy(this->values,valuesin,this->m);
     71                        }
     72                } /*}}}*/
     73                ~Bucket(){ /*{{{*/
     74                        xDelete<int>(idxm);
     75                        xDelete<int>(idxn);
     76                        xDelete<doubletype>(values);
     77                } /*}}}*/
     78                void Initialize(void){ /*{{{*/
     79                       
    3680                        this->type=0;
    3781                        this->m=0;
     
    4185                        this->values=NULL;
    4286                        mode=INS_VAL;
    43                 } /*}}}*/
    44                 Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/
    45                         this->type=MATRIX_BUCKET;
    46                         this->m=min;
    47                         this->n=nin;
    48                         this->mode=modein;
    49                         if(this->m){
    50                                 this->idxm=xNew<int>(this->m);
    51                                 xMemCpy(this->idxm,idxmin,this->m);
    52                         }
    53                         if(this->n){
    54                                 this->idxn=xNew<int>(this->n);
    55                                 xMemCpy(this->idxn,idxnin,this->n);
    56                         }
    57                         if(this->m*this->n){
    58                                 this->values=xNew<doubletype>(this->n*this->m);
    59                                 xMemCpy(this->values,valuesin,this->n*this->m);
    60                         }
    61                 } /*}}}*/
    62                 Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/
    63                         this->type=VECTOR_BUCKET;
    64                         this->m=min;
    65                         this->n=1;
    66                         this->mode=modein;
    67                         if(this->m){
    68                                 this->idxm=xNew<int>(this->m);
    69                                 xMemCpy(this->idxm,idxmin,this->m);
    70                         }
    71                         if(this->m){
    72                                 this->values=xNew<doubletype>(this->m);
    73                                 xMemCpy(this->values,valuesin,this->m);
    74                         }
    75                 } /*}}}*/
    76                 ~Bucket(){ /*{{{*/
    77                         xDelete<int>(idxm);
    78                         xDelete<int>(idxn);
    79                         xDelete<doubletype>(values);
    80                 } /*}}}*/
     87
     88                } /*}}}*/
     89               
    8190
    8291                /*object virtual functions definitions:*/
     
    162171                };
    163172                /*}}}*/
     173                int BucketType(void){ /*{{{*/
     174
     175                        return type;
     176                };
     177                /*}}}*/
    164178#ifdef _HAVE_MPI_
    165179                        void Isend(int receiver_rank,MPI_Request* requests,int* pcount,MPI_Comm comm){ /*{{{*/
     
    172186                        /*Send all the information required: */
    173187                        MPI_Isend(&type,1,MPI_INT,receiver_rank,2,comm,requests+count); count++;
    174                         MPI_Isend(&m,1,MPI_INT,receiver_rank,2,comm,requests+count); count++;
    175                         if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank,3,comm,requests+count); count++; }
     188                        MPI_Isend(&m,1,MPI_INT,receiver_rank,3,comm,requests+count); count++;
     189                        if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank,4,comm,requests+count); count++; }
    176190                        if(type==MATRIX_BUCKET){
    177                                 MPI_Isend(&n,1,MPI_INT,receiver_rank,4,comm,requests+count); count++;
    178                                 if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank,5,comm,requests+count); count++; }
    179                                 if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank,6,comm,requests+count); count++; }
     191                                MPI_Isend(&n,1,MPI_INT,receiver_rank,5,comm,requests+count); count++;
     192                                if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank,6,comm,requests+count); count++; }
     193                                if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; }
    180194                        }
    181195                        else{
    182                                 if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank,6,comm,requests+count); count++; }
     196                                if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; }
    183197                        }
    184198                        int_mode=(int)mode;
    185                         MPI_Isend(&int_mode,1,MPI_INT,receiver_rank,7,comm,requests+count); count++;
     199                        MPI_Isend(&int_mode,1,MPI_INT,receiver_rank,8,comm,requests+count); count++;
    186200
    187201                        /*Allocate pointers: */
     
    195209
    196210                        MPI_Recv(&type,1, MPI_INT,sender_rank,2, comm, &status);
    197                         MPI_Recv(&m,1, MPI_INT,sender_rank,2, comm, &status);
     211                        MPI_Recv(&m,1, MPI_INT,sender_rank,3, comm, &status);
    198212                        if(m){
    199213                                idxm=new int[m];
    200                                 MPI_Recv(idxm,m, MPI_INT,sender_rank,3, comm, &status);
    201                         }
    202                         if(type=MATRIX_BUCKET){
    203                                 MPI_Recv(&n,1, MPI_INT,sender_rank,4, comm, &status);
     214                                MPI_Recv(idxm,m, MPI_INT,sender_rank,4, comm, &status);
     215                        }
     216                        if(type==MATRIX_BUCKET){
     217                                MPI_Recv(&n,1, MPI_INT,sender_rank,5, comm, &status);
    204218                                if(n){
    205219                                        idxn=new int[n];
    206                                         MPI_Recv(idxn,n, MPI_INT,sender_rank,5, comm, &status);
     220                                        MPI_Recv(idxn,n, MPI_INT,sender_rank,6, comm, &status);
    207221                                }
    208222                                if(m*n){
    209223                                        values=new doubletype[m*n];
    210                                         MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank,6, comm, &status);
     224                                        MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank,7, comm, &status);
    211225                                }
    212226                        }
     
    214228                                if(m){
    215229                                        values=new doubletype[m];
    216                                         MPI_Recv(values,m, MPI_DOUBLE,sender_rank,6, comm, &status);
     230                                        MPI_Recv(values,m, MPI_DOUBLE,sender_rank,7, comm, &status);
    217231                                }
    218232                        }
    219                         MPI_Recv(&int_mode,1, MPI_INT,sender_rank,7, comm, &status);
     233                        MPI_Recv(&int_mode,1, MPI_INT,sender_rank,8, comm, &status);
    220234                        mode=(InsMode)int_mode;
    221235
Note: See TracChangeset for help on using the changeset viewer.