FLA_Gemv_internal.c File Reference

(r)


Functions

FLA_Error FLA_Gemv_internal (FLA_Trans transa, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y, fla_gemv_t *cntl)

Variables

fla_gemv_tflash_gemv_cntl_blas
fla_gemv_tflash_gemv_cntl_fm_rp

Function Documentation

FLA_Error FLA_Gemv_internal ( FLA_Trans  transa,
FLA_Obj  alpha,
FLA_Obj  A,
FLA_Obj  x,
FLA_Obj  beta,
FLA_Obj  y,
fla_gemv_t cntl 
)

References FLA_Check_error_level(), FLA_Gemv_c(), FLA_Gemv_internal(), FLA_Gemv_internal_check(), FLA_Gemv_n(), FLA_Gemv_t(), FLA_Obj_elemtype(), and FLASH_Queue_get_enabled().

Referenced by FLA_Gemv(), FLA_Gemv_c_blk_var1(), FLA_Gemv_c_blk_var2(), FLA_Gemv_c_blk_var5(), FLA_Gemv_c_blk_var6(), FLA_Gemv_internal(), FLA_Gemv_n_blk_var1(), FLA_Gemv_n_blk_var2(), FLA_Gemv_n_blk_var5(), FLA_Gemv_n_blk_var6(), FLA_Gemv_t_blk_var1(), FLA_Gemv_t_blk_var2(), FLA_Gemv_t_blk_var5(), FLA_Gemv_t_blk_var6(), FLA_Trsv_lc_blk_var1(), FLA_Trsv_lc_blk_var2(), FLA_Trsv_ln_blk_var1(), FLA_Trsv_ln_blk_var2(), FLA_Trsv_lt_blk_var1(), FLA_Trsv_lt_blk_var2(), FLA_Trsv_uc_blk_var1(), FLA_Trsv_uc_blk_var2(), FLA_Trsv_un_blk_var1(), FLA_Trsv_un_blk_var2(), FLA_Trsv_ut_blk_var1(), FLA_Trsv_ut_blk_var2(), and FLASH_Gemv().

00039 {
00040     FLA_Error r_val = FLA_SUCCESS;
00041 
00042     if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00043         FLA_Gemv_internal_check( transa, alpha, A, x, beta, y, cntl );
00044 
00045     if      ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00046               FLA_Obj_elemtype( A ) == FLA_MATRIX &&
00047               FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00048     {
00049         // Recurse
00050         r_val = FLA_Gemv_internal( transa, 
00051                                    alpha, 
00052                                    *FLASH_OBJ_PTR_AT( A ), 
00053                                    *FLASH_OBJ_PTR_AT( x ), 
00054                                    beta, 
00055                                    *FLASH_OBJ_PTR_AT( y ), 
00056                                    flash_gemv_cntl_fm_rp );
00057     }
00058     else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00059               FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00060               FLASH_Queue_get_enabled( ) )
00061     {
00062         // Enqueue
00063         ENQUEUE_FLASH_Gemv( transa, alpha, A, x, beta, y, cntl );
00064     }
00065     else
00066     {
00067         if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00068              FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00069              !FLASH_Queue_get_enabled( ) )
00070         {
00071             // Execute leaf
00072             cntl = flash_gemv_cntl_blas;
00073         }
00074 
00075         // Parameter combinations
00076         if      ( transa == FLA_NO_TRANSPOSE )
00077         {
00078             r_val = FLA_Gemv_n( alpha, A, x, beta, y, cntl );
00079         }
00080         else if ( transa == FLA_TRANSPOSE )
00081         {
00082             r_val = FLA_Gemv_t( alpha, A, x, beta, y, cntl );
00083         }
00084         else if ( transa == FLA_CONJ_TRANSPOSE )
00085         {
00086             r_val = FLA_Gemv_c( alpha, A, x, beta, y, cntl );
00087         }
00088     }
00089 
00090     return r_val;
00091 }


Variable Documentation


Generated on Mon Jul 6 05:45:53 2009 for libflame by  doxygen 1.5.9