コード例 #1
0
ファイル: txblas_axpby.c プロジェクト: 00liujj/trilinos
void tdaxpby( unsigned n ,
              double a , const double * x ,
              double b , double * y ,
              int block )
{
  int p_size ;
  TPI_Size( & p_size );

  {
    unsigned *tmp = malloc( p_size );
    struct TaskXY data = { a , b , x , y , n , tmp };
    int i ;
    for ( i = 0 ; i < p_size ; ++i ) { tmp[i] = i ; }
    if ( 0 < block ) {
      TPI_Run( & task_axpby_work_block , & data , 0 );
    }
    else if ( block < 0 ) {
      TPI_Set_lock_size( p_size );
      TPI_Run( & task_axpby_work_steal , & data , 0 );
    }
    else {
      TPI_Run( & task_axpby_work , & data , 0 );
    }
    free(tmp);
  }
}
コード例 #2
0
void txddot( double * s , unsigned n , const double * x , const double * y )
{
    int p_size ;
    if ( ! TPI_Size( & p_size ) ) {
        double* tmp;
        const int ntmp = 4 * p_size ;
        tmp = malloc(ntmp * sizeof(double));
        {   struct TaskXY data = { tmp , x , y , n , BLOCKING_SIZE };
            int i ;
            for ( i = 0 ; i < ntmp ; ++i ) {
                tmp[i] = 0 ;
            }
            if ( data.block ) {
                TPI_Run( & task_xddot_xy_work_blocking , & data , 0 );
            }
            else {
                TPI_Run( & task_xddot_xy_work , & data , 0 );
            }
            for ( i = 0 ; i < p_size ; ++i ) {
                xdsum_add_dsum( s , tmp + 4 * i );
            }
        }
        free(tmp);
    }
}
コード例 #3
0
void tddot( double * s , unsigned n , const double * x , const double * y )
{
    int p_size ;
    if ( ! TPI_Size( & p_size ) ) {
        double* tmp = malloc( p_size * sizeof(double));
        struct TaskXY data = { tmp , x , y , n , BLOCKING_SIZE };
        int i ;
        for ( i = 0 ; i < p_size ; ++i ) {
            tmp[i] = 0 ;
        }
        if ( data.block ) {
            TPI_Run( & task_ddot_xy_work_blocking , & data , 0 );
        }
        else {
            TPI_Run( & task_ddot_xy_work , & data , 0 );
        }
        for ( i = 1 ; i < p_size ; ++i ) {
            tmp[0] += tmp[i] ;
        }
        *s = tmp[0] ;
        free(tmp);
    }
}
コード例 #4
0
ファイル: TPI.hpp プロジェクト: gitter-badger/quinoa
inline
int Size( int & number_allocated ) { return TPI_Size( & number_allocated ); }