FLA_Blocksize.c File Reference

(r)


Functions

void blas_set_parameter (void)
fla_blocksize_tFLA_Blocksize_create (dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z)
void FLA_Blocksize_set (fla_blocksize_t *bp, dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z)
void FLA_Blocksize_scale (fla_blocksize_t *bp, double factor)
fla_blocksize_tFLA_Blocksize_create_copy (fla_blocksize_t *bp)
void FLA_Blocksize_free (fla_blocksize_t *bp)
dim_t FLA_Blocksize_extract (FLA_Datatype dt, fla_blocksize_t *bp)
fla_blocksize_tFLA_Query_blocksizes (FLA_Dimension dim)
dim_t FLA_Query_blocksize (FLA_Datatype dt, FLA_Dimension dim)
F_INT FLA_F2C() fla_query_blocksize_f (F_INT *dt, F_INT *dim)
dim_t FLA_Determine_blocksize (FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *bp)
dim_t FLA_determine_matrix_size (FLA_Obj A_unproc, FLA_Quadrant to_dir)

Variables

long sgemm_p
long sgemm_q
long sgemm_r
long dgemm_p
long dgemm_q
long dgemm_r
long cgemm_p
long cgemm_q
long cgemm_r
long zgemm_p
long zgemm_q
long zgemm_r
long fla_goto_gemm_blocksize [4][4]

Function Documentation

void blas_set_parameter ( void   ) 

fla_blocksize_t* FLA_Blocksize_create ( dim_t  b_s,
dim_t  b_d,
dim_t  b_c,
dim_t  b_z 
)

fla_blocksize_t* FLA_Blocksize_create_copy ( fla_blocksize_t bp  ) 

References FLA_Blocksize_s::c, FLA_Blocksize_s::d, FLA_Check_error_level(), FLA_Check_null_pointer(), FLA_malloc(), FLA_Blocksize_s::s, and FLA_Blocksize_s::z.

Referenced by FLA_Chol_cntl_init(), FLA_LU_nopiv_cntl_init(), and FLA_LU_piv_cntl_init().

00106 {
00107     fla_blocksize_t* bp_copy;
00108     FLA_Error        e_val;
00109     
00110     // Verify that the given blocksize pointer is valid.
00111     if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00112     {
00113         e_val = FLA_Check_null_pointer( bp );
00114         FLA_Check_error_code( e_val );
00115     }
00116 
00117     // Allocate memory for the blocksize structure.
00118     bp_copy = ( fla_blocksize_t* ) FLA_malloc( sizeof(fla_blocksize_t) );
00119     
00120     // Assign the provided blocksize object's values into the corresponding
00121     // fields of the new object.
00122     bp_copy->s = bp->s;
00123     bp_copy->d = bp->d;
00124     bp_copy->c = bp->c;
00125     bp_copy->z = bp->z;
00126     
00127     // Return a pointer to the structure.
00128     return bp_copy;
00129 }

dim_t FLA_Blocksize_extract ( FLA_Datatype  dt,
fla_blocksize_t bp 
)

References FLA_Blocksize_s::c, FLA_Blocksize_s::d, FLA_Check_error_level(), FLA_Check_null_pointer(), FLA_Blocksize_s::s, and FLA_Blocksize_s::z.

Referenced by FLA_Check_blocksize_object(), FLA_Determine_blocksize(), FLA_Gemm(), FLA_Hemm(), FLA_Her2k(), FLA_Herk(), FLA_SPDinv(), FLA_Symm(), FLA_Syr2k(), FLA_Syrk(), FLA_Trinv(), FLA_Trmm(), FLA_Trsm(), and FLA_Ttmm().

00139 {
00140     dim_t     b = 0;
00141     FLA_Error e_val;
00142 
00143     // Verify that the given blocksize pointer is valid.
00144     if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00145     {
00146         e_val = FLA_Check_null_pointer( bp );
00147         FLA_Check_error_code( e_val );
00148     }
00149 
00150     if      ( dt == FLA_FLOAT )
00151         b = bp->s;
00152     else if ( dt == FLA_DOUBLE )
00153         b = bp->d;
00154     else if ( dt == FLA_COMPLEX )
00155         b = bp->c;
00156     else if ( dt == FLA_DOUBLE_COMPLEX )
00157         b = bp->z;
00158     
00159     // Return the blocksize corresponding with the datatype.
00160     return b;
00161 }

void FLA_Blocksize_free ( fla_blocksize_t bp  ) 

void FLA_Blocksize_scale ( fla_blocksize_t bp,
double  factor 
)

References FLA_Blocksize_s::c, FLA_Blocksize_s::d, FLA_Check_error_level(), FLA_Check_null_pointer(), FLA_Blocksize_s::s, and FLA_Blocksize_s::z.

Referenced by FLA_Apply_Q_UT_cntl_init(), FLA_Apply_Q_UT_UD_cntl_init(), FLA_Chol_cntl_init(), FLA_LQ_UT_cntl_init(), FLA_LU_nopiv_cntl_init(), FLA_LU_piv_cntl_init(), FLA_QR_UT_cntl_init(), and FLA_QR_UT_UD_cntl_init().

00087 {
00088     FLA_Error e_val;
00089     
00090     // Verify that the given blocksize pointer is valid.
00091     if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00092     {
00093         e_val = FLA_Check_null_pointer( bp );
00094         FLA_Check_error_code( e_val );
00095     }
00096     
00097     // Assign the provided blocksize values into the corresponding fields.
00098     bp->s = ( dim_t )( ( double ) bp->s * factor );
00099     bp->d = ( dim_t )( ( double ) bp->d * factor );
00100     bp->c = ( dim_t )( ( double ) bp->c * factor );
00101     bp->z = ( dim_t )( ( double ) bp->z * factor );
00102 }

void FLA_Blocksize_set ( fla_blocksize_t bp,
dim_t  b_s,
dim_t  b_d,
dim_t  b_c,
dim_t  b_z 
)

References FLA_Blocksize_s::c, FLA_Blocksize_s::d, FLA_Blocksize_s::s, and FLA_Blocksize_s::z.

Referenced by FLA_Apply_Q_UT(), FLA_LQ_UT(), FLA_QR_UT(), FLASH_Apply_Q_UT(), FLASH_Apply_Q_UT_inc(), FLASH_Apply_Q_UT_UD(), FLASH_QR_UT_inc_noopt(), FLASH_QR_UT_inc_opt1(), and FLASH_QR_UT_UD().

00077 {
00078     // Assign the provided blocksize values into the corresponding fields.
00079     if ( b_s != 0 ) bp->s = b_s;
00080     if ( b_d != 0 ) bp->d = b_d;
00081     if ( b_c != 0 ) bp->c = b_c;
00082     if ( b_z != 0 ) bp->z = b_z;
00083 }

dim_t FLA_Determine_blocksize ( FLA_Obj  A_unproc,
FLA_Quadrant  to_dir,
fla_blocksize_t bp 
)

References FLA_Blocksize_extract(), FLA_Check_blocksize_value(), FLA_Check_error_level(), FLA_determine_matrix_size(), and FLA_Obj_datatype().

Referenced by FLA_Apply_Q_UT_inc_lhc_blk_var1(), FLA_Apply_Q_UT_lhc_blk_var1(), FLA_Apply_Q_UT_lhc_blk_var2(), FLA_Apply_Q_UT_UD_lhc_blk_var1(), FLA_Apply_Q_UT_UD_lhc_blk_var2(), FLA_Apply_Q_UT_UD_lhc_blk_var3(), FLA_Axpy_blk_var1(), FLA_Axpy_blk_var2(), FLA_Axpy_blk_var3(), FLA_Axpy_blk_var4(), FLA_Chol_l_blk_var1(), FLA_Chol_l_blk_var2(), FLA_Chol_l_blk_var3(), FLA_Chol_u_blk_var1(), FLA_Chol_u_blk_var2(), FLA_Chol_u_blk_var3(), FLA_Copy_blk_var1(), FLA_Copy_blk_var2(), FLA_Copy_blk_var3(), FLA_Copy_blk_var4(), FLA_Gemm_hh_blk_var1(), FLA_Gemm_hh_blk_var2(), FLA_Gemm_hh_blk_var3(), FLA_Gemm_hh_blk_var4(), FLA_Gemm_hh_blk_var5(), FLA_Gemm_hh_blk_var6(), FLA_Gemm_hn_blk_var1(), FLA_Gemm_hn_blk_var2(), FLA_Gemm_hn_blk_var3(), FLA_Gemm_hn_blk_var4(), FLA_Gemm_hn_blk_var5(), FLA_Gemm_hn_blk_var6(), FLA_Gemm_ht_blk_var1(), FLA_Gemm_ht_blk_var2(), FLA_Gemm_ht_blk_var3(), FLA_Gemm_ht_blk_var4(), FLA_Gemm_ht_blk_var5(), FLA_Gemm_ht_blk_var6(), FLA_Gemm_nh_blk_var1(), FLA_Gemm_nh_blk_var2(), FLA_Gemm_nh_blk_var3(), FLA_Gemm_nh_blk_var4(), FLA_Gemm_nh_blk_var5(), FLA_Gemm_nh_blk_var6(), FLA_Gemm_nn_blk_var1(), FLA_Gemm_nn_blk_var2(), FLA_Gemm_nn_blk_var3(), FLA_Gemm_nn_blk_var4(), FLA_Gemm_nn_blk_var5(), FLA_Gemm_nn_blk_var6(), FLA_Gemm_nt_blk_var1(), FLA_Gemm_nt_blk_var2(), FLA_Gemm_nt_blk_var3(), FLA_Gemm_nt_blk_var4(), FLA_Gemm_nt_blk_var5(), FLA_Gemm_nt_blk_var6(), FLA_Gemm_th_blk_var1(), FLA_Gemm_th_blk_var2(), FLA_Gemm_th_blk_var3(), FLA_Gemm_th_blk_var4(), FLA_Gemm_th_blk_var5(), FLA_Gemm_th_blk_var6(), FLA_Gemm_tn_blk_var1(), FLA_Gemm_tn_blk_var2(), FLA_Gemm_tn_blk_var3(), FLA_Gemm_tn_blk_var4(), FLA_Gemm_tn_blk_var5(), FLA_Gemm_tn_blk_var6(), FLA_Gemm_tt_blk_var1(), FLA_Gemm_tt_blk_var2(), FLA_Gemm_tt_blk_var3(), FLA_Gemm_tt_blk_var4(), FLA_Gemm_tt_blk_var5(), FLA_Gemm_tt_blk_var6(), FLA_Gemv_c_blk_var1(), FLA_Gemv_c_blk_var2(), FLA_Gemv_c_blk_var5(), FLA_Gemv_c_blk_var6(), 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_Hemm_ll_blk_var1(), FLA_Hemm_ll_blk_var10(), FLA_Hemm_ll_blk_var2(), FLA_Hemm_ll_blk_var3(), FLA_Hemm_ll_blk_var4(), FLA_Hemm_ll_blk_var5(), FLA_Hemm_ll_blk_var6(), FLA_Hemm_ll_blk_var7(), FLA_Hemm_ll_blk_var8(), FLA_Hemm_ll_blk_var9(), FLA_Hemm_lu_blk_var1(), FLA_Hemm_lu_blk_var10(), FLA_Hemm_lu_blk_var2(), FLA_Hemm_lu_blk_var3(), FLA_Hemm_lu_blk_var4(), FLA_Hemm_lu_blk_var5(), FLA_Hemm_lu_blk_var6(), FLA_Hemm_lu_blk_var7(), FLA_Hemm_lu_blk_var8(), FLA_Hemm_lu_blk_var9(), FLA_Hemm_rl_blk_var1(), FLA_Hemm_rl_blk_var10(), FLA_Hemm_rl_blk_var2(), FLA_Hemm_rl_blk_var3(), FLA_Hemm_rl_blk_var4(), FLA_Hemm_rl_blk_var5(), FLA_Hemm_rl_blk_var6(), FLA_Hemm_rl_blk_var7(), FLA_Hemm_rl_blk_var8(), FLA_Hemm_rl_blk_var9(), FLA_Hemm_ru_blk_var1(), FLA_Hemm_ru_blk_var10(), FLA_Hemm_ru_blk_var2(), FLA_Hemm_ru_blk_var3(), FLA_Hemm_ru_blk_var4(), FLA_Hemm_ru_blk_var5(), FLA_Hemm_ru_blk_var6(), FLA_Hemm_ru_blk_var7(), FLA_Hemm_ru_blk_var8(), FLA_Hemm_ru_blk_var9(), FLA_Her2k_lh_blk_var1(), FLA_Her2k_lh_blk_var10(), FLA_Her2k_lh_blk_var2(), FLA_Her2k_lh_blk_var3(), FLA_Her2k_lh_blk_var4(), FLA_Her2k_lh_blk_var5(), FLA_Her2k_lh_blk_var6(), FLA_Her2k_lh_blk_var7(), FLA_Her2k_lh_blk_var8(), FLA_Her2k_lh_blk_var9(), FLA_Her2k_ln_blk_var1(), FLA_Her2k_ln_blk_var10(), FLA_Her2k_ln_blk_var2(), FLA_Her2k_ln_blk_var3(), FLA_Her2k_ln_blk_var4(), FLA_Her2k_ln_blk_var5(), FLA_Her2k_ln_blk_var6(), FLA_Her2k_ln_blk_var7(), FLA_Her2k_ln_blk_var8(), FLA_Her2k_ln_blk_var9(), FLA_Her2k_uh_blk_var1(), FLA_Her2k_uh_blk_var10(), FLA_Her2k_uh_blk_var2(), FLA_Her2k_uh_blk_var3(), FLA_Her2k_uh_blk_var4(), FLA_Her2k_uh_blk_var5(), FLA_Her2k_uh_blk_var6(), FLA_Her2k_uh_blk_var7(), FLA_Her2k_uh_blk_var8(), FLA_Her2k_uh_blk_var9(), FLA_Her2k_un_blk_var1(), FLA_Her2k_un_blk_var10(), FLA_Her2k_un_blk_var2(), FLA_Her2k_un_blk_var3(), FLA_Her2k_un_blk_var4(), FLA_Her2k_un_blk_var5(), FLA_Her2k_un_blk_var6(), FLA_Her2k_un_blk_var7(), FLA_Her2k_un_blk_var8(), FLA_Her2k_un_blk_var9(), FLA_Herk_lh_blk_var1(), FLA_Herk_lh_blk_var2(), FLA_Herk_lh_blk_var3(), FLA_Herk_lh_blk_var4(), FLA_Herk_lh_blk_var5(), FLA_Herk_lh_blk_var6(), FLA_Herk_ln_blk_var1(), FLA_Herk_ln_blk_var2(), FLA_Herk_ln_blk_var3(), FLA_Herk_ln_blk_var4(), FLA_Herk_ln_blk_var5(), FLA_Herk_ln_blk_var6(), FLA_Herk_uh_blk_var1(), FLA_Herk_uh_blk_var2(), FLA_Herk_uh_blk_var3(), FLA_Herk_uh_blk_var4(), FLA_Herk_uh_blk_var5(), FLA_Herk_uh_blk_var6(), FLA_Herk_un_blk_var1(), FLA_Herk_un_blk_var2(), FLA_Herk_un_blk_var3(), FLA_Herk_un_blk_var4(), FLA_Herk_un_blk_var5(), FLA_Herk_un_blk_var6(), FLA_LQ_UT_Accum_T_blk_var1(), FLA_LQ_UT_blk_var2(), FLA_LU_nopiv_blk_var1(), FLA_LU_nopiv_blk_var2(), FLA_LU_nopiv_blk_var3(), FLA_LU_nopiv_blk_var4(), FLA_LU_nopiv_blk_var5(), FLA_LU_piv_blk_var3(), FLA_LU_piv_blk_var4(), FLA_LU_piv_blk_var5(), FLA_QR_UT_Accum_T_blk_var1(), FLA_QR_UT_blk_var2(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), FLA_QR_UT_UD_blk_var1(), FLA_QR_UT_UD_blk_var2(), FLA_Swap_t_blk_var1(), FLA_Swap_t_blk_var2(), FLA_Sylv_nn_blk_var1(), FLA_Sylv_nn_blk_var10(), FLA_Sylv_nn_blk_var11(), FLA_Sylv_nn_blk_var12(), FLA_Sylv_nn_blk_var13(), FLA_Sylv_nn_blk_var14(), FLA_Sylv_nn_blk_var15(), FLA_Sylv_nn_blk_var16(), FLA_Sylv_nn_blk_var17(), FLA_Sylv_nn_blk_var18(), FLA_Sylv_nn_blk_var2(), FLA_Sylv_nn_blk_var3(), FLA_Sylv_nn_blk_var4(), FLA_Sylv_nn_blk_var5(), FLA_Sylv_nn_blk_var6(), FLA_Sylv_nn_blk_var7(), FLA_Sylv_nn_blk_var8(), FLA_Sylv_nn_blk_var9(), FLA_Sylv_nt_blk_var1(), FLA_Sylv_nt_blk_var10(), FLA_Sylv_nt_blk_var11(), FLA_Sylv_nt_blk_var12(), FLA_Sylv_nt_blk_var13(), FLA_Sylv_nt_blk_var14(), FLA_Sylv_nt_blk_var15(), FLA_Sylv_nt_blk_var16(), FLA_Sylv_nt_blk_var17(), FLA_Sylv_nt_blk_var18(), FLA_Sylv_nt_blk_var2(), FLA_Sylv_nt_blk_var3(), FLA_Sylv_nt_blk_var4(), FLA_Sylv_nt_blk_var5(), FLA_Sylv_nt_blk_var6(), FLA_Sylv_nt_blk_var7(), FLA_Sylv_nt_blk_var8(), FLA_Sylv_nt_blk_var9(), FLA_Sylv_tn_blk_var1(), FLA_Sylv_tn_blk_var10(), FLA_Sylv_tn_blk_var11(), FLA_Sylv_tn_blk_var12(), FLA_Sylv_tn_blk_var13(), FLA_Sylv_tn_blk_var14(), FLA_Sylv_tn_blk_var15(), FLA_Sylv_tn_blk_var16(), FLA_Sylv_tn_blk_var17(), FLA_Sylv_tn_blk_var18(), FLA_Sylv_tn_blk_var2(), FLA_Sylv_tn_blk_var3(), FLA_Sylv_tn_blk_var4(), FLA_Sylv_tn_blk_var5(), FLA_Sylv_tn_blk_var6(), FLA_Sylv_tn_blk_var7(), FLA_Sylv_tn_blk_var8(), FLA_Sylv_tn_blk_var9(), FLA_Sylv_tt_blk_var1(), FLA_Sylv_tt_blk_var10(), FLA_Sylv_tt_blk_var11(), FLA_Sylv_tt_blk_var12(), FLA_Sylv_tt_blk_var13(), FLA_Sylv_tt_blk_var14(), FLA_Sylv_tt_blk_var15(), FLA_Sylv_tt_blk_var16(), FLA_Sylv_tt_blk_var17(), FLA_Sylv_tt_blk_var18(), FLA_Sylv_tt_blk_var2(), FLA_Sylv_tt_blk_var3(), FLA_Sylv_tt_blk_var4(), FLA_Sylv_tt_blk_var5(), FLA_Sylv_tt_blk_var6(), FLA_Sylv_tt_blk_var7(), FLA_Sylv_tt_blk_var8(), FLA_Sylv_tt_blk_var9(), FLA_Symm_ll_blk_var1(), FLA_Symm_ll_blk_var10(), FLA_Symm_ll_blk_var2(), FLA_Symm_ll_blk_var3(), FLA_Symm_ll_blk_var4(), FLA_Symm_ll_blk_var5(), FLA_Symm_ll_blk_var6(), FLA_Symm_ll_blk_var7(), FLA_Symm_ll_blk_var8(), FLA_Symm_ll_blk_var9(), FLA_Symm_lu_blk_var1(), FLA_Symm_lu_blk_var10(), FLA_Symm_lu_blk_var2(), FLA_Symm_lu_blk_var3(), FLA_Symm_lu_blk_var4(), FLA_Symm_lu_blk_var5(), FLA_Symm_lu_blk_var6(), FLA_Symm_lu_blk_var7(), FLA_Symm_lu_blk_var8(), FLA_Symm_lu_blk_var9(), FLA_Symm_rl_blk_var1(), FLA_Symm_rl_blk_var10(), FLA_Symm_rl_blk_var2(), FLA_Symm_rl_blk_var3(), FLA_Symm_rl_blk_var4(), FLA_Symm_rl_blk_var5(), FLA_Symm_rl_blk_var6(), FLA_Symm_rl_blk_var7(), FLA_Symm_rl_blk_var8(), FLA_Symm_rl_blk_var9(), FLA_Symm_ru_blk_var1(), FLA_Symm_ru_blk_var10(), FLA_Symm_ru_blk_var2(), FLA_Symm_ru_blk_var3(), FLA_Symm_ru_blk_var4(), FLA_Symm_ru_blk_var5(), FLA_Symm_ru_blk_var6(), FLA_Symm_ru_blk_var7(), FLA_Symm_ru_blk_var8(), FLA_Symm_ru_blk_var9(), FLA_Syr2k_ln_blk_var1(), FLA_Syr2k_ln_blk_var10(), FLA_Syr2k_ln_blk_var2(), FLA_Syr2k_ln_blk_var3(), FLA_Syr2k_ln_blk_var4(), FLA_Syr2k_ln_blk_var5(), FLA_Syr2k_ln_blk_var6(), FLA_Syr2k_ln_blk_var7(), FLA_Syr2k_ln_blk_var8(), FLA_Syr2k_ln_blk_var9(), FLA_Syr2k_lt_blk_var1(), FLA_Syr2k_lt_blk_var10(), FLA_Syr2k_lt_blk_var2(), FLA_Syr2k_lt_blk_var3(), FLA_Syr2k_lt_blk_var4(), FLA_Syr2k_lt_blk_var5(), FLA_Syr2k_lt_blk_var6(), FLA_Syr2k_lt_blk_var7(), FLA_Syr2k_lt_blk_var8(), FLA_Syr2k_lt_blk_var9(), FLA_Syr2k_un_blk_var1(), FLA_Syr2k_un_blk_var10(), FLA_Syr2k_un_blk_var2(), FLA_Syr2k_un_blk_var3(), FLA_Syr2k_un_blk_var4(), FLA_Syr2k_un_blk_var5(), FLA_Syr2k_un_blk_var6(), FLA_Syr2k_un_blk_var7(), FLA_Syr2k_un_blk_var8(), FLA_Syr2k_un_blk_var9(), FLA_Syr2k_ut_blk_var1(), FLA_Syr2k_ut_blk_var10(), FLA_Syr2k_ut_blk_var2(), FLA_Syr2k_ut_blk_var3(), FLA_Syr2k_ut_blk_var4(), FLA_Syr2k_ut_blk_var5(), FLA_Syr2k_ut_blk_var6(), FLA_Syr2k_ut_blk_var7(), FLA_Syr2k_ut_blk_var8(), FLA_Syr2k_ut_blk_var9(), FLA_Syrk_ln_blk_var1(), FLA_Syrk_ln_blk_var2(), FLA_Syrk_ln_blk_var3(), FLA_Syrk_ln_blk_var4(), FLA_Syrk_ln_blk_var5(), FLA_Syrk_ln_blk_var6(), FLA_Syrk_lt_blk_var1(), FLA_Syrk_lt_blk_var2(), FLA_Syrk_lt_blk_var3(), FLA_Syrk_lt_blk_var4(), FLA_Syrk_lt_blk_var5(), FLA_Syrk_lt_blk_var6(), FLA_Syrk_un_blk_var1(), FLA_Syrk_un_blk_var2(), FLA_Syrk_un_blk_var3(), FLA_Syrk_un_blk_var4(), FLA_Syrk_un_blk_var5(), FLA_Syrk_un_blk_var6(), FLA_Syrk_ut_blk_var1(), FLA_Syrk_ut_blk_var2(), FLA_Syrk_ut_blk_var3(), FLA_Syrk_ut_blk_var4(), FLA_Syrk_ut_blk_var5(), FLA_Syrk_ut_blk_var6(), FLA_Transpose_blk_var1(), FLA_Transpose_blk_var2(), FLA_Trinv_l_blk_var1(), FLA_Trinv_l_blk_var2(), FLA_Trinv_l_blk_var3(), FLA_Trinv_l_blk_var4(), FLA_Trinv_u_blk_var1(), FLA_Trinv_u_blk_var2(), FLA_Trinv_u_blk_var3(), FLA_Trinv_u_blk_var4(), FLA_Trmm_llh_blk_var1(), FLA_Trmm_llh_blk_var2(), FLA_Trmm_llh_blk_var3(), FLA_Trmm_llh_blk_var4(), FLA_Trmm_lln_blk_var1(), FLA_Trmm_lln_blk_var2(), FLA_Trmm_lln_blk_var3(), FLA_Trmm_lln_blk_var4(), FLA_Trmm_llt_blk_var1(), FLA_Trmm_llt_blk_var2(), FLA_Trmm_llt_blk_var3(), FLA_Trmm_llt_blk_var4(), FLA_Trmm_luh_blk_var1(), FLA_Trmm_luh_blk_var2(), FLA_Trmm_luh_blk_var3(), FLA_Trmm_luh_blk_var4(), FLA_Trmm_lun_blk_var1(), FLA_Trmm_lun_blk_var2(), FLA_Trmm_lun_blk_var3(), FLA_Trmm_lun_blk_var4(), FLA_Trmm_lut_blk_var1(), FLA_Trmm_lut_blk_var2(), FLA_Trmm_lut_blk_var3(), FLA_Trmm_lut_blk_var4(), FLA_Trmm_rlh_blk_var1(), FLA_Trmm_rlh_blk_var2(), FLA_Trmm_rlh_blk_var3(), FLA_Trmm_rlh_blk_var4(), FLA_Trmm_rln_blk_var1(), FLA_Trmm_rln_blk_var2(), FLA_Trmm_rln_blk_var3(), FLA_Trmm_rln_blk_var4(), FLA_Trmm_rlt_blk_var1(), FLA_Trmm_rlt_blk_var2(), FLA_Trmm_rlt_blk_var3(), FLA_Trmm_rlt_blk_var4(), FLA_Trmm_ruh_blk_var1(), FLA_Trmm_ruh_blk_var2(), FLA_Trmm_ruh_blk_var3(), FLA_Trmm_ruh_blk_var4(), FLA_Trmm_run_blk_var1(), FLA_Trmm_run_blk_var2(), FLA_Trmm_run_blk_var3(), FLA_Trmm_run_blk_var4(), FLA_Trmm_rut_blk_var1(), FLA_Trmm_rut_blk_var2(), FLA_Trmm_rut_blk_var3(), FLA_Trmm_rut_blk_var4(), FLA_Trsm_llh_blk_var1(), FLA_Trsm_llh_blk_var2(), FLA_Trsm_llh_blk_var3(), FLA_Trsm_llh_blk_var4(), FLA_Trsm_lln_blk_var1(), FLA_Trsm_lln_blk_var2(), FLA_Trsm_lln_blk_var3(), FLA_Trsm_lln_blk_var4(), FLA_Trsm_llt_blk_var1(), FLA_Trsm_llt_blk_var2(), FLA_Trsm_llt_blk_var3(), FLA_Trsm_llt_blk_var4(), FLA_Trsm_luh_blk_var1(), FLA_Trsm_luh_blk_var2(), FLA_Trsm_luh_blk_var3(), FLA_Trsm_luh_blk_var4(), FLA_Trsm_lun_blk_var1(), FLA_Trsm_lun_blk_var2(), FLA_Trsm_lun_blk_var3(), FLA_Trsm_lun_blk_var4(), FLA_Trsm_lut_blk_var1(), FLA_Trsm_lut_blk_var2(), FLA_Trsm_lut_blk_var3(), FLA_Trsm_lut_blk_var4(), FLA_Trsm_rlh_blk_var1(), FLA_Trsm_rlh_blk_var2(), FLA_Trsm_rlh_blk_var3(), FLA_Trsm_rlh_blk_var4(), FLA_Trsm_rln_blk_var1(), FLA_Trsm_rln_blk_var2(), FLA_Trsm_rln_blk_var3(), FLA_Trsm_rln_blk_var4(), FLA_Trsm_rlt_blk_var1(), FLA_Trsm_rlt_blk_var2(), FLA_Trsm_rlt_blk_var3(), FLA_Trsm_rlt_blk_var4(), FLA_Trsm_ruh_blk_var1(), FLA_Trsm_ruh_blk_var2(), FLA_Trsm_ruh_blk_var3(), FLA_Trsm_ruh_blk_var4(), FLA_Trsm_run_blk_var1(), FLA_Trsm_run_blk_var2(), FLA_Trsm_run_blk_var3(), FLA_Trsm_run_blk_var4(), FLA_Trsm_rut_blk_var1(), FLA_Trsm_rut_blk_var2(), FLA_Trsm_rut_blk_var3(), FLA_Trsm_rut_blk_var4(), 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(), FLA_Ttmm_l_blk_var1(), FLA_Ttmm_l_blk_var2(), FLA_Ttmm_l_blk_var3(), FLA_Ttmm_u_blk_var1(), FLA_Ttmm_u_blk_var2(), and FLA_Ttmm_u_blk_var3().

00264 {
00265     FLA_Error    e_val;
00266     FLA_Datatype datatype;
00267     dim_t        A_unproc_size;
00268     dim_t        typed_blocksize;
00269     dim_t        b;
00270 
00271     // Determine the size of the remaining portion of the matrix.
00272     A_unproc_size = FLA_determine_matrix_size( A_unproc, to_dir );
00273     
00274     // Determine the datatype of the matrix.
00275     datatype = FLA_Obj_datatype( A_unproc );
00276     
00277     // Determine the raw blocksize value from the blocksize structure.
00278     typed_blocksize = FLA_Blocksize_extract( datatype, bp );
00279 
00280     // Check blocksize for zero value.
00281     if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00282     {
00283         e_val = FLA_Check_blocksize_value( typed_blocksize );
00284         FLA_Check_error_code( e_val );
00285     }
00286 
00287     // If the unprocessed partition is smaller than our blocksize allows,
00288     // we have to use it's length/width instead.
00289     b = min( A_unproc_size, typed_blocksize );
00290     
00291     // Return the computed blocksize.
00292     return b;
00293 }

dim_t FLA_determine_matrix_size ( FLA_Obj  A_unproc,
FLA_Quadrant  to_dir 
)

References FLA_Obj_length(), FLA_Obj_min_dim(), and FLA_Obj_width().

Referenced by FLA_Determine_blocksize().

00297 {
00298     dim_t r_val = 0;
00299 
00300     // Determine the size of the matrix dimension along which we are moving.
00301     switch( to_dir )
00302     {
00303         case FLA_TOP:
00304         case FLA_BOTTOM:
00305         {
00306             r_val = FLA_Obj_length( A_unproc );
00307             break;
00308         }
00309         case FLA_LEFT:
00310         case FLA_RIGHT:
00311         {
00312             r_val = FLA_Obj_width( A_unproc );
00313             break;
00314         }
00315         case FLA_TL:
00316         case FLA_TR:
00317         case FLA_BL:
00318         case FLA_BR:
00319         {
00320             // We need to use min_dim() here because the matrix might be
00321             // rectangular.
00322             r_val = FLA_Obj_min_dim( A_unproc );
00323             break;
00324         }
00325     }
00326     
00327     return r_val;
00328 }

dim_t FLA_Query_blocksize ( FLA_Datatype  dt,
FLA_Dimension  dim 
)

References cgemm_p, cgemm_q, cgemm_r, dgemm_p, dgemm_q, dgemm_r, fla_goto_gemm_blocksize, sgemm_p, sgemm_q, sgemm_r, zgemm_p, zgemm_q, and zgemm_r.

Referenced by FLA_Apply_Q_blk_external(), FLA_Check_householder_panel_dims(), FLA_Hess_blk_external(), FLA_LQ_blk_external(), FLA_LQ_UT_blk_external(), FLA_LQ_UT_create_T(), FLA_QR_blk_external(), FLA_QR_UT_blk_external(), FLA_QR_UT_create_T(), fla_query_blocksize_f(), and FLA_Query_blocksizes().

00184 {
00185     dim_t b_val = 0;
00186 
00187 #ifdef FLA_ENABLE_GOTO_INTERFACES
00188 
00189     int dt_index;
00190     int dim_index;
00191 
00192     if ( first_time )
00193     {
00194         long sgemm_min, dgemm_min, cgemm_min, zgemm_min;
00195         
00196         // Find the blocksizes associated with FLA_DIMENSION_MIN.
00197         sgemm_min = min( sgemm_p, sgemm_q );
00198         dgemm_min = min( dgemm_p, dgemm_q );
00199         cgemm_min = min( cgemm_p, cgemm_q );
00200         zgemm_min = min( zgemm_p, zgemm_q );
00201 
00202         // Set the values for each datatype and dimension constant.
00203         fla_goto_gemm_blocksize[FLA_S_INDEX][FLA_DIM_M_INDEX]   = sgemm_p;
00204         fla_goto_gemm_blocksize[FLA_S_INDEX][FLA_DIM_K_INDEX]   = sgemm_q;
00205         fla_goto_gemm_blocksize[FLA_S_INDEX][FLA_DIM_N_INDEX]   = sgemm_r;
00206         fla_goto_gemm_blocksize[FLA_S_INDEX][FLA_DIM_MIN_INDEX] = sgemm_min;
00207 
00208         fla_goto_gemm_blocksize[FLA_D_INDEX][FLA_DIM_M_INDEX]   = dgemm_p;
00209         fla_goto_gemm_blocksize[FLA_D_INDEX][FLA_DIM_K_INDEX]   = dgemm_q;
00210         fla_goto_gemm_blocksize[FLA_D_INDEX][FLA_DIM_N_INDEX]   = dgemm_r;
00211         fla_goto_gemm_blocksize[FLA_D_INDEX][FLA_DIM_MIN_INDEX] = dgemm_min;
00212 
00213         fla_goto_gemm_blocksize[FLA_C_INDEX][FLA_DIM_M_INDEX]   = cgemm_p;
00214         fla_goto_gemm_blocksize[FLA_C_INDEX][FLA_DIM_K_INDEX]   = cgemm_q;
00215         fla_goto_gemm_blocksize[FLA_C_INDEX][FLA_DIM_N_INDEX]   = cgemm_r;
00216         fla_goto_gemm_blocksize[FLA_C_INDEX][FLA_DIM_MIN_INDEX] = cgemm_min;
00217 
00218         fla_goto_gemm_blocksize[FLA_Z_INDEX][FLA_DIM_M_INDEX]   = zgemm_p;
00219         fla_goto_gemm_blocksize[FLA_Z_INDEX][FLA_DIM_K_INDEX]   = zgemm_q;
00220         fla_goto_gemm_blocksize[FLA_Z_INDEX][FLA_DIM_N_INDEX]   = zgemm_r;
00221         fla_goto_gemm_blocksize[FLA_Z_INDEX][FLA_DIM_MIN_INDEX] = zgemm_min;
00222 
00223         first_time = FALSE;
00224     }
00225 
00226     // Compute the index of the requested datatype.
00227     dt_index  = dt  & FLA_DTYPE_INDEX_MASK;
00228     dim_index = dim & FLA_DIM_INDEX_MASK;
00229 
00230     // Index into the array and choose the appropriate blocksize.
00231     b_val = ( dim_t ) fla_goto_gemm_blocksize[dt_index][dim_index];
00232 
00233 #else
00234 
00235     // Assign the return value to a default sane blocksize in case
00236     // we cannot access the libgoto symbols.
00237     if      ( dim == FLA_DIMENSION_M )
00238         b_val = FLA_DEFAULT_M_BLOCKSIZE;
00239     else if ( dim == FLA_DIMENSION_K )
00240         b_val = FLA_DEFAULT_K_BLOCKSIZE;
00241     else if ( dim == FLA_DIMENSION_N )
00242         b_val = FLA_DEFAULT_N_BLOCKSIZE;
00243     else if ( dim == FLA_DIMENSION_MIN )
00244     {
00245         b_val = min( FLA_DEFAULT_M_BLOCKSIZE, FLA_DEFAULT_K_BLOCKSIZE );
00246         b_val = min( b_val, FLA_DEFAULT_N_BLOCKSIZE );
00247     }
00248 
00249 #endif
00250 
00251     // Return the blocksize.
00252     return b_val;
00253 }

F_INT FLA_F2C() fla_query_blocksize_f ( F_INT *  dt,
F_INT *  dim 
)

References FLA_Query_blocksize().

00257 {
00258   return ( F_INT ) FLA_Query_blocksize( *( ( FLA_Datatype  * ) dt  ),
00259                                         *( ( FLA_Dimension * ) dim ) );
00260 }

fla_blocksize_t* FLA_Query_blocksizes ( FLA_Dimension  dim  ) 

References FLA_Blocksize_s::c, FLA_Blocksize_s::d, FLA_Blocksize_create(), FLA_Query_blocksize(), FLA_Blocksize_s::s, and FLA_Blocksize_s::z.

Referenced by FLA_Apply_Q_UT_cntl_init(), FLA_Apply_Q_UT_UD_cntl_init(), FLA_Chol_cntl_init(), FLA_Gemm_cntl_init(), FLA_Hemm_cntl_init(), FLA_Her2k_cntl_init(), FLA_Herk_cntl_init(), FLA_Hess_cntl_init(), FLA_LQ_UT_cntl_init(), FLA_LU_nopiv_cntl_init(), FLA_LU_piv_cntl_init(), FLA_QR_UT_cntl_init(), FLA_QR_UT_UD_cntl_init(), FLA_SPDinv_cntl_init(), FLA_Sylv_cntl_init(), FLA_Symm_cntl_init(), FLA_Syr2k_cntl_init(), FLA_Syrk_cntl_init(), FLA_Transpose_cntl_init(), FLA_Trinv_cntl_init(), FLA_Trmm_cntl_init(), FLA_Trsm_cntl_init(), FLA_Ttmm_cntl_init(), and FLASH_SPDinv_cntl_init().

00165 {
00166     fla_blocksize_t* bp;
00167     
00168     // Create an FLA_Blocksize_t object.
00169     bp = FLA_Blocksize_create( 0, 0, 0, 0 );
00170     
00171     // Query the requested blocksize (m, k, or n dimension) for all of the
00172     // datatypes and package the results in an FLA_Blocksize_t structure.
00173     bp->s = FLA_Query_blocksize( FLA_FLOAT, dim );
00174     bp->d = FLA_Query_blocksize( FLA_DOUBLE, dim );
00175     bp->c = FLA_Query_blocksize( FLA_COMPLEX, dim );
00176     bp->z = FLA_Query_blocksize( FLA_DOUBLE_COMPLEX, dim );
00177     
00178     // Return a pointer to the structure.
00179     return bp;
00180 }


Variable Documentation

long cgemm_p

Referenced by FLA_Query_blocksize().

long cgemm_q

Referenced by FLA_Query_blocksize().

long cgemm_r

Referenced by FLA_Query_blocksize().

long dgemm_p

Referenced by FLA_Query_blocksize().

long dgemm_q

Referenced by FLA_Query_blocksize().

long dgemm_r

Referenced by FLA_Query_blocksize().

Referenced by FLA_Query_blocksize().

long sgemm_p

Referenced by FLA_Query_blocksize().

long sgemm_q

Referenced by FLA_Query_blocksize().

long sgemm_r

Referenced by FLA_Query_blocksize().

long zgemm_p

Referenced by FLA_Query_blocksize().

long zgemm_q

Referenced by FLA_Query_blocksize().

long zgemm_r

Referenced by FLA_Query_blocksize().


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