Ignore:
Timestamp:
06/12/18 14:21:57 (6 years ago)
Author:
yushan
Message:

add modif for workflow_cmip6

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_scan.cpp

    r1527 r1540  
    9898          reduce_sum<unsigned long>(static_cast<unsigned long*>(const_cast<void*>(sendbuf)), static_cast<unsigned long*>(recvbuf), count);     
    9999        } 
    100              
    101         else printf("datatype Error\n"); 
     100         
     101        else if(datatype == MPI_LONG_LONG_INT) 
     102        { 
     103          assert(datasize == sizeof(long long int)); 
     104          reduce_sum<long long int>(static_cast<long long int*>(const_cast<void*>(sendbuf)), static_cast<long long int*>(recvbuf), count);     
     105        } 
     106             
     107        else  
     108        { 
     109          printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     110          MPI_Abort(comm, 0); 
     111        } 
    102112      } 
    103113 
     
    140150        }  
    141151             
    142         else printf("datatype Error\n"); 
    143       } 
    144  
    145       else //(op == MPI_MIN) 
     152        else if(datatype == MPI_LONG_LONG_INT) 
     153        { 
     154          assert(datasize == sizeof(long long int)); 
     155          reduce_max<long long int>(static_cast<long long int*>(const_cast<void*>(sendbuf)), static_cast<long long int*>(recvbuf), count);     
     156        } 
     157             
     158        else  
     159        { 
     160          printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     161          MPI_Abort(comm, 0); 
     162        } 
     163      } 
     164 
     165      else if(op == MPI_MIN) 
    146166      { 
    147167        if(datatype == MPI_INT ) 
     
    181201        } 
    182202             
    183         else printf("datatype Error\n"); 
     203        else if(datatype == MPI_LONG_LONG_INT) 
     204        { 
     205          assert(datasize == sizeof(long long int)); 
     206          reduce_min<long long int>(static_cast<long long int*>(const_cast<void*>(sendbuf)), static_cast<long long int*>(recvbuf), count);     
     207        } 
     208             
     209        else  
     210        { 
     211          printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     212          MPI_Abort(comm, 0); 
     213        } 
     214      } 
     215       
     216      else 
     217      { 
     218        printf("op type Error in ep_scan : MPI_MAX, MPI_MIN, MPI_SUM\n"); 
     219        MPI_Abort(comm, 0); 
    184220      } 
    185221 
     
    243279          reduce_sum<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count);     
    244280      } 
    245  
    246       else printf("datatype Error\n"); 
     281       
     282      else if(datatype == MPI_LONG_LONG_INT ) 
     283      { 
     284        assert(datasize == sizeof(long long int)); 
     285        for(int i=1; i<ep_rank_loc+1; i++) 
     286          reduce_sum<long long int>(static_cast<long long int*>(comm->my_buffer->void_buffer[i]), static_cast<long long int*>(recvbuf), count);     
     287      } 
     288 
     289      else  
     290      { 
     291        printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     292        MPI_Abort(comm, 0); 
     293      } 
    247294 
    248295       
     
    293340      } 
    294341      
    295       else printf("datatype Error\n"); 
    296     } 
    297  
    298     else //if(op == MPI_MIN) 
     342      else if(datatype == MPI_LONG_LONG_INT ) 
     343      { 
     344        assert(datasize == sizeof(long long int)); 
     345        for(int i=1; i<ep_rank_loc+1; i++) 
     346          reduce_max<long long int>(static_cast<long long int*>(comm->my_buffer->void_buffer[i]), static_cast<long long int*>(recvbuf), count);     
     347      } 
     348 
     349      else  
     350      { 
     351        printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     352        MPI_Abort(comm, 0); 
     353      } 
     354 
     355    } 
     356 
     357    else if(op == MPI_MIN) 
    299358    { 
    300359      if(datatype == MPI_INT ) 
     
    340399      } 
    341400 
    342       else printf("datatype Error\n"); 
     401      else if(datatype == MPI_LONG_LONG_INT ) 
     402      { 
     403        assert(datasize == sizeof(long long int)); 
     404        for(int i=1; i<ep_rank_loc+1; i++) 
     405          reduce_min<long long int>(static_cast<long long int*>(comm->my_buffer->void_buffer[i]), static_cast<long long int*>(recvbuf), count);     
     406      } 
     407 
     408      else  
     409      { 
     410        printf("datatype Error in ep_scan : INT, FLOAT, DOUBLE, CHAR, LONG, UNSIGNED_LONG, LONG_LONG_INT\n"); 
     411        MPI_Abort(comm, 0); 
     412      } 
     413 
     414    } 
     415     
     416    else 
     417    { 
     418      printf("op type Error in ep_scan : MPI_MAX, MPI_MIN, MPI_SUM\n"); 
     419      MPI_Abort(comm, 0); 
    343420    } 
    344421 
Note: See TracChangeset for help on using the changeset viewer.