libflame  12600
Functions
FLA_Cntl_init_flash.h File Reference

(r12600)

Go to the source code of this file.

Functions

void FLA_Cntl_init_flash (void)
void FLA_Cntl_finalize_flash (void)
void FLASH_Transpose_cntl_init (void)
void FLASH_Transpose_cntl_finalize (void)
void FLASH_Axpy_cntl_init (void)
void FLASH_Axpyt_cntl_init (void)
void FLASH_Copy_cntl_init (void)
void FLASH_Copyt_cntl_init (void)
void FLASH_Copyr_cntl_init (void)
void FLASH_Scal_cntl_init (void)
void FLASH_Scalr_cntl_init (void)
void FLASH_Axpy_cntl_finalize (void)
void FLASH_Axpyt_cntl_finalize (void)
void FLASH_Copy_cntl_finalize (void)
void FLASH_Copyt_cntl_finalize (void)
void FLASH_Copyr_cntl_finalize (void)
void FLASH_Scal_cntl_finalize (void)
void FLASH_Scalr_cntl_finalize (void)
void FLASH_Gemv_cntl_init (void)
void FLASH_Trsv_cntl_init (void)
void FLASH_Gemv_cntl_finalize (void)
void FLASH_Trsv_cntl_finalize (void)
void FLASH_Gemm_cntl_init (void)
void FLASH_Hemm_cntl_init (void)
void FLASH_Herk_cntl_init (void)
void FLASH_Her2k_cntl_init (void)
void FLASH_Symm_cntl_init (void)
void FLASH_Syrk_cntl_init (void)
void FLASH_Syr2k_cntl_init (void)
void FLASH_Trmm_cntl_init (void)
void FLASH_Trsm_cntl_init (void)
void FLASH_Gemm_cntl_finalize (void)
void FLASH_Hemm_cntl_finalize (void)
void FLASH_Herk_cntl_finalize (void)
void FLASH_Her2k_cntl_finalize (void)
void FLASH_Symm_cntl_finalize (void)
void FLASH_Syrk_cntl_finalize (void)
void FLASH_Syr2k_cntl_finalize (void)
void FLASH_Trmm_cntl_finalize (void)
void FLASH_Trsm_cntl_finalize (void)
void FLASH_Apply_pivots_cntl_init (void)
void FLASH_Chol_cntl_init (void)
void FLASH_LU_nopiv_cntl_init (void)
void FLASH_LU_piv_cntl_init (void)
void FLASH_LU_incpiv_cntl_init (void)
void FLASH_Trinv_cntl_init (void)
void FLASH_Ttmm_cntl_init (void)
void FLASH_SPDinv_cntl_init (void)
void FLASH_Sylv_cntl_init (void)
void FLASH_Lyap_cntl_init (void)
void FLASH_QR_UT_cntl_init (void)
void FLASH_QR2_UT_cntl_init (void)
void FLASH_LQ_UT_cntl_init (void)
void FLASH_CAQR2_UT_cntl_init (void)
void FLASH_UDdate_UT_cntl_init (void)
void FLASH_QR_UT_inc_cntl_init (void)
void FLASH_CAQR_UT_inc_cntl_init (void)
void FLASH_UDdate_UT_inc_cntl_init (void)
void FLASH_Apply_Q_UT_cntl_init (void)
void FLASH_Apply_Q2_UT_cntl_init (void)
void FLASH_Apply_CAQ2_UT_cntl_init (void)
void FLASH_Apply_QUD_UT_cntl_init (void)
void FLASH_Apply_Q_UT_inc_cntl_init (void)
void FLASH_Apply_CAQ_UT_inc_cntl_init (void)
void FLASH_Apply_QUD_UT_inc_cntl_init (void)
void FLASH_Eig_gest_cntl_init (void)
void FLASH_Apply_pivots_cntl_finalize (void)
void FLASH_Chol_cntl_finalize (void)
void FLASH_LU_nopiv_cntl_finalize (void)
void FLASH_LU_piv_cntl_finalize (void)
void FLASH_LU_incpiv_cntl_finalize (void)
void FLASH_Trinv_cntl_finalize (void)
void FLASH_Ttmm_cntl_finalize (void)
void FLASH_SPDinv_cntl_finalize (void)
void FLASH_Sylv_cntl_finalize (void)
void FLASH_Lyap_cntl_finalize (void)
void FLASH_QR_UT_cntl_finalize (void)
void FLASH_QR2_UT_cntl_finalize (void)
void FLASH_LQ_UT_cntl_finalize (void)
void FLASH_CAQR2_UT_cntl_finalize (void)
void FLASH_UDdate_UT_cntl_finalize (void)
void FLASH_QR_UT_inc_cntl_finalize (void)
void FLASH_CAQR_UT_inc_cntl_finalize (void)
void FLASH_UDdate_UT_inc_cntl_finalize (void)
void FLASH_Apply_Q_UT_cntl_finalize (void)
void FLASH_Apply_Q2_UT_cntl_finalize (void)
void FLASH_Apply_CAQ2_UT_cntl_finalize (void)
void FLASH_Apply_QUD_UT_cntl_finalize (void)
void FLASH_Apply_Q_UT_inc_cntl_finalize (void)
void FLASH_Apply_CAQ_UT_inc_cntl_finalize (void)
void FLASH_Apply_QUD_UT_inc_cntl_finalize (void)
void FLASH_Eig_gest_cntl_finalize (void)

Function Documentation

void FLA_Cntl_finalize_flash ( void  )

References FLASH_Apply_CAQ2_UT_cntl_finalize(), FLASH_Apply_CAQ_UT_inc_cntl_finalize(), FLASH_Apply_pivots_cntl_finalize(), FLASH_Apply_Q2_UT_cntl_finalize(), FLASH_Apply_Q_UT_cntl_finalize(), FLASH_Apply_Q_UT_inc_cntl_finalize(), FLASH_Apply_QUD_UT_cntl_finalize(), FLASH_Apply_QUD_UT_inc_cntl_finalize(), FLASH_Axpy_cntl_finalize(), FLASH_Axpyt_cntl_finalize(), FLASH_CAQR2_UT_cntl_finalize(), FLASH_CAQR_UT_inc_cntl_finalize(), FLASH_Chol_cntl_finalize(), FLASH_Copy_cntl_finalize(), FLASH_Copyr_cntl_finalize(), FLASH_Copyt_cntl_finalize(), FLASH_Eig_gest_cntl_finalize(), FLASH_Gemm_cntl_finalize(), FLASH_Gemv_cntl_finalize(), FLASH_Hemm_cntl_finalize(), FLASH_Her2k_cntl_finalize(), FLASH_Herk_cntl_finalize(), FLASH_LQ_UT_cntl_finalize(), FLASH_LU_incpiv_cntl_finalize(), FLASH_LU_nopiv_cntl_finalize(), FLASH_LU_piv_cntl_finalize(), FLASH_Lyap_cntl_finalize(), FLASH_QR2_UT_cntl_finalize(), FLASH_QR_UT_cntl_finalize(), FLASH_QR_UT_inc_cntl_finalize(), FLASH_Scal_cntl_finalize(), FLASH_Scalr_cntl_finalize(), FLASH_SPDinv_cntl_finalize(), FLASH_Sylv_cntl_finalize(), FLASH_Symm_cntl_finalize(), FLASH_Syr2k_cntl_finalize(), FLASH_Syrk_cntl_finalize(), FLASH_Trinv_cntl_finalize(), FLASH_Trmm_cntl_finalize(), FLASH_Trsm_cntl_finalize(), FLASH_Trsv_cntl_finalize(), FLASH_Ttmm_cntl_finalize(), FLASH_UDdate_UT_cntl_finalize(), and FLASH_UDdate_UT_inc_cntl_finalize().

Referenced by FLA_Cntl_finalize().

void FLA_Cntl_init_flash ( void  )

References FLASH_Apply_CAQ2_UT_cntl_init(), FLASH_Apply_CAQ_UT_inc_cntl_init(), FLASH_Apply_pivots_cntl_init(), FLASH_Apply_Q2_UT_cntl_init(), FLASH_Apply_Q_UT_cntl_init(), FLASH_Apply_Q_UT_inc_cntl_init(), FLASH_Apply_QUD_UT_cntl_init(), FLASH_Apply_QUD_UT_inc_cntl_init(), FLASH_Axpy_cntl_init(), FLASH_Axpyt_cntl_init(), FLASH_CAQR2_UT_cntl_init(), FLASH_CAQR_UT_inc_cntl_init(), FLASH_Chol_cntl_init(), FLASH_Copy_cntl_init(), FLASH_Copyr_cntl_init(), FLASH_Copyt_cntl_init(), FLASH_Eig_gest_cntl_init(), FLASH_Gemm_cntl_init(), FLASH_Gemv_cntl_init(), FLASH_Hemm_cntl_init(), FLASH_Her2k_cntl_init(), FLASH_Herk_cntl_init(), FLASH_LQ_UT_cntl_init(), FLASH_LU_incpiv_cntl_init(), FLASH_LU_nopiv_cntl_init(), FLASH_LU_piv_cntl_init(), FLASH_Lyap_cntl_init(), FLASH_QR2_UT_cntl_init(), FLASH_QR_UT_cntl_init(), FLASH_QR_UT_inc_cntl_init(), FLASH_Scal_cntl_init(), FLASH_Scalr_cntl_init(), FLASH_SPDinv_cntl_init(), FLASH_Sylv_cntl_init(), FLASH_Symm_cntl_init(), FLASH_Syr2k_cntl_init(), FLASH_Syrk_cntl_init(), FLASH_Trinv_cntl_init(), FLASH_Trmm_cntl_init(), FLASH_Trsm_cntl_init(), FLASH_Trsv_cntl_init(), FLASH_Ttmm_cntl_init(), FLASH_UDdate_UT_cntl_init(), and FLASH_UDdate_UT_inc_cntl_init().

Referenced by FLA_Cntl_init().

References FLA_Blocksize_create(), and FLA_Cntl_apcaq2ut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apcaq2ut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );
    flash_apcaq2ut_var3_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apcaq2ut_cntl_leaf = FLA_Cntl_apcaq2ut_obj_create( FLA_HIER,
                                                             FLA_SUBPROBLEM, 
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL );

    // Create a control tree to invoke variant 2.
    flash_apcaq2ut_cntl_mid  = FLA_Cntl_apcaq2ut_obj_create( FLA_HIER,
                                                             FLA_BLOCKED_VARIANT2, 
                                                             flash_apcaq2ut_var2_bsize,
                                                             flash_apcaq2ut_cntl_leaf,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL );

    // Create a control tree to invoke variant 3.
    flash_apcaq2ut_cntl      = FLA_Cntl_apcaq2ut_obj_create( FLA_HIER,
                                                             FLA_BLOCKED_VARIANT3, 
                                                             flash_apcaq2ut_var3_bsize,
                                                             flash_apcaq2ut_cntl_mid,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL,
                                                             NULL );
}

References FLA_Blocksize_create(), and FLA_Cntl_apcaqutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apcaqutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apcaqutinc_cntl = FLA_Cntl_apcaqutinc_obj_create( FLA_HIER,
                                                            FLA_BLOCKED_VARIANT1, 
                                                            flash_apcaqutinc_var1_bsize,
                                                            flash_apcaq2ut_cntl );
}

References FLA_Blocksize_create(), and FLA_Cntl_appiv_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_appiv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_appiv_cntl_leaf   = FLA_Cntl_appiv_obj_create( FLA_HIER,
                                                         FLA_SUBPROBLEM,
                                                         NULL,
                                                         NULL );

    // Create a control tree that assumes A is large.
    flash_appiv_cntl_bp     = FLA_Cntl_appiv_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT1,
                                                         flash_appiv_bsize,
                                                         flash_appiv_cntl_leaf );

    // Create a control tree that assumes A and p are large.
    flash_appiv_cntl        = FLA_Cntl_appiv_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT2,
                                                         flash_appiv_bsize,
                                                         flash_appiv_cntl_bp );
}
void FLASH_Apply_Q2_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_apq2ut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apq2ut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );
    flash_apq2ut_var3_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apq2ut_cntl_leaf = FLA_Cntl_apq2ut_obj_create( FLA_HIER,
                                                         FLA_SUBPROBLEM, 
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );

    // Create a control tree to invoke variant 2.
    flash_apq2ut_cntl_mid  = FLA_Cntl_apq2ut_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT2, 
                                                         flash_apq2ut_var2_bsize,
                                                         flash_apq2ut_cntl_leaf,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );

    // Create a control tree to invoke variant 3.
    flash_apq2ut_cntl      = FLA_Cntl_apq2ut_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT3, 
                                                         flash_apq2ut_var3_bsize,
                                                         flash_apq2ut_cntl_mid,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );
}
void FLASH_Apply_Q_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_apqut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_apqut_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );
    flash_apqut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to dereference block operands and perform
    // flat subproblem.
    flash_apqut_cntl_leaf = FLA_Cntl_apqut_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM, 
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree to invoke variant 2 to further partition blocks.
    flash_apqut_cntl    = FLA_Cntl_apqut_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT2, 
                                                     flash_apqut_var2_bsize,
                                                     flash_apqut_cntl_leaf,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 3, using hierarchical level-3
    // BLAS control trees.
    flash_apqut_cntl_blas = FLA_Cntl_apqut_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3, 
                                                       flash_apqut_var1_bsize,
                                                       NULL,
                                                       flash_trmm_cntl_bp,
                                                       flash_trmm_cntl_bp,
                                                       flash_gemm_cntl_pm,
                                                       flash_gemm_cntl_op,
                                                       flash_trsm_cntl_bp,
                                                       flash_copyt_cntl,
                                                       flash_axpyt_cntl );
}

References FLA_Blocksize_create(), and FLA_Cntl_apqutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apqutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apqutinc_cntl = FLA_Cntl_apqutinc_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT1, 
                                                        flash_apqutinc_var1_bsize,
                                                        flash_apqut_cntl,
                                                        flash_apq2ut_cntl );
}

References FLA_Blocksize_create(), and FLA_Cntl_apqudut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apqudut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );
    flash_apqudut_var3_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apqudut_cntl_leaf = FLA_Cntl_apqudut_obj_create( FLA_HIER,
                                                           FLA_SUBPROBLEM, 
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL );

    // Create a control tree to invoke variant 2.
    flash_apqudut_cntl_mid  = FLA_Cntl_apqudut_obj_create( FLA_HIER,
                                                           FLA_BLOCKED_VARIANT2, 
                                                           flash_apqudut_var2_bsize,
                                                           flash_apqudut_cntl_leaf,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL );

    // Create a control tree to invoke variant 3.
    flash_apqudut_cntl      = FLA_Cntl_apqudut_obj_create( FLA_HIER,
                                                           FLA_BLOCKED_VARIANT3, 
                                                           flash_apqudut_var3_bsize,
                                                           flash_apqudut_cntl_mid,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL );
}

References FLA_Blocksize_create(), and FLA_Cntl_apqudutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_apqudutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_apqudutinc_cntl = FLA_Cntl_apqudutinc_obj_create( FLA_HIER,
                                                            FLA_BLOCKED_VARIANT1, 
                                                            flash_apqudutinc_var1_bsize,
                                                            flash_apqudut_cntl );
}
void FLASH_Axpy_cntl_finalize ( void  )
void FLASH_Axpy_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_axpy_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_axpy_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are small.
    flash_axpy_cntl_blas = FLA_Cntl_axpy_obj_create( FLA_HIER,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL );

    // Create a control tree that marches through A and B vertically.
    flash_axpy_cntl_tb   = FLA_Cntl_axpy_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT1,
                                                     flash_axpy_bsize,
                                                     flash_axpy_cntl_blas );

    // Create a control tree that marches through A and B horizontally, then
    // vertically.
    flash_axpy_cntl      = FLA_Cntl_axpy_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_axpy_bsize,
                                                     flash_axpy_cntl_tb );
}
void FLASH_Axpyt_cntl_finalize ( void  )
void FLASH_Axpyt_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_axpyt_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_axpyt_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are small.
    flash_axpyt_cntl_blas = FLA_Cntl_axpyt_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL );

    // Create a control tree that marches through A and B vertically.
    flash_axpyt_cntl_tb   = FLA_Cntl_axpyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT1,
                                                       flash_axpyt_bsize,
                                                       flash_axpyt_cntl_blas );

    // Create a control tree that marches through A and B horizontally.
    flash_axpyt_cntl_lr   = FLA_Cntl_axpyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_axpyt_bsize,
                                                       flash_axpyt_cntl_blas );

    // Create a control tree that marches through A and B horizontally, then
    // vertically.
    flash_axpyt_cntl      = FLA_Cntl_axpyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_axpyt_bsize,
                                                       flash_axpyt_cntl_tb );
}
void FLASH_CAQR2_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_caqr2ut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_caqr2ut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_caqr2ut_cntl_leaf = FLA_Cntl_caqr2ut_obj_create( FLA_HIER,
                                                           FLA_SUBPROBLEM, 
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL,
                                                           NULL );

    // Create a control tree to invoke variant 2.
    flash_caqr2ut_cntl    = FLA_Cntl_caqr2ut_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT2, 
                                                         flash_caqr2ut_var2_bsize,
                                                         flash_caqr2ut_cntl_leaf,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );
}
void FLASH_CAQR_UT_inc_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_caqrutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_caqrutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_caqrutinc_cntl = FLA_Cntl_caqrutinc_obj_create( FLA_HIER,
                                                          FLA_BLOCKED_VARIANT1, 
                                                          flash_caqrutinc_var1_bsize,
                                                          flash_caqr2ut_cntl,
                                                          flash_apcaq2ut_cntl );
}
void FLASH_Chol_cntl_finalize ( void  )
void FLASH_Chol_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_chol_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_chol_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_chol_cntl_leaf   = FLA_Cntl_chol_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is large.
    flash_chol_cntl        = FLA_Cntl_chol_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3, 
                                                       flash_chol_bsize,
                                                       flash_chol_cntl_leaf,
                                                       flash_herk_cntl_op,
                                                       flash_trsm_cntl_bp,
                                                       NULL );
}
void FLASH_Copy_cntl_finalize ( void  )
void FLASH_Copy_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_copy_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_copy_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are small.
    flash_copy_cntl_blas = FLA_Cntl_copy_obj_create( FLA_HIER,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL );

    // Create a control tree that marches through A and B vertically.
    flash_copy_cntl_tb   = FLA_Cntl_copy_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT1,
                                                     flash_copy_bsize,
                                                     flash_copy_cntl_blas );

    // Create a control tree that marches through A and B horizontally, then
    // vertically.
    flash_copy_cntl      = FLA_Cntl_copy_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_copy_bsize,
                                                     flash_copy_cntl_tb );
}
void FLASH_Copyr_cntl_finalize ( void  )
void FLASH_Copyr_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_copyr_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_copyr_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are small.
    flash_copyr_cntl_blas = FLA_Cntl_copyr_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that marches through A and B from TL to BR.
    flash_copyr_cntl      = FLA_Cntl_copyr_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_copyr_bsize,
                                                       flash_copyr_cntl_blas,
                                                       flash_copy_cntl_tb );
}
void FLASH_Copyt_cntl_finalize ( void  )
void FLASH_Copyt_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_copyt_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_copyt_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are small.
    flash_copyt_cntl_blas = FLA_Cntl_copyt_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL );

    // Create a control tree that marches through A and B vertically.
    flash_copyt_cntl_tb   = FLA_Cntl_copyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT1,
                                                       flash_copyt_bsize,
                                                       flash_copyt_cntl_blas );

    // Create a control tree that marches through A and B horizontally.
    flash_copyt_cntl_lr   = FLA_Cntl_copyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_copyt_bsize,
                                                       flash_copyt_cntl_blas );

    // Create a control tree that marches through A and B horizontally, then
    // vertically.
    flash_copyt_cntl      = FLA_Cntl_copyt_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_copyt_bsize,
                                                       flash_copyt_cntl_tb );
}
void FLASH_Eig_gest_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_eig_gest_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_eig_gest_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_eig_gest_cntl_leaf   = FLA_Cntl_eig_gest_obj_create( FLA_HIER,
                                                               FLA_SUBPROBLEM,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               NULL );

    // Create a control tree that assumes A is large.
    flash_eig_gest_cntl        = FLA_Cntl_eig_gest_obj_create( FLA_HIER,
                                                               FLA_BLOCKED_VARIANT1, 
                                                               flash_eig_gest_bsize,
                                                               flash_eig_gest_cntl_leaf,
                                                               flash_axpy_cntl,
                                                               flash_axpy_cntl,
                                                               NULL,
                                                               NULL,
                                                               NULL,
                                                               flash_hemm_cntl_mm,
                                                               flash_her2k_cntl_mm,
                                                               flash_trmm_cntl_mm,
                                                               flash_trmm_cntl_mm,
                                                               flash_trsm_cntl_mm,
                                                               flash_trsm_cntl_mm );
}
void FLASH_Gemm_cntl_finalize ( void  )
void FLASH_Gemm_cntl_init ( void  )

References FLA_Blocksize_create(), FLA_Cntl_gemm_obj_create(), flash_gemm_cntl_bp_bb, flash_gemm_cntl_ip_bb, flash_gemm_cntl_mm_op, flash_gemm_cntl_mp_pb, flash_gemm_cntl_op_pb, flash_gemm_cntl_pb_bb, and flash_gemm_cntl_pm_bp.

Referenced by FLA_Cntl_init_flash().

{
    // Set gemm blocksize for hierarchical storage.
    flash_gemm_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree node that executes a gemm subproblem.
    flash_gemm_cntl_blas  = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create control trees for situations where one dimension is large.
    flash_gemm_cntl_pb_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_blas );
    flash_gemm_cntl_bp_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_blas );
    flash_gemm_cntl_ip_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_blas );

    // Create control trees for situations where two dimensions are large.
    flash_gemm_cntl_mp_ip = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_ip_bb );
    flash_gemm_cntl_op_bp = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_bp_bb );
    flash_gemm_cntl_pm_ip = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_ip_bb );
    flash_gemm_cntl_op_pb = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_pb_bb );
    flash_gemm_cntl_mp_pb = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_pb_bb );
    flash_gemm_cntl_pm_bp = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_bp_bb );

    // Create control trees for situations where all dimensions are large.
    flash_gemm_cntl_mm_pm = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_pm_ip );
    flash_gemm_cntl_mm_mp = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_mp_ip );
    flash_gemm_cntl_mm_op = FLA_Cntl_gemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemm_cntl_op_bp );

    // Alias select control trees for convenience, when the caller doesn't
    // care (as he usually doesn't when partitioning hierarchical matricies)
    // which order the matrix is partitioned into blocks
    flash_gemm_cntl_mm = flash_gemm_cntl_mm_op;
    flash_gemm_cntl_mp = flash_gemm_cntl_mp_pb;
    flash_gemm_cntl_pm = flash_gemm_cntl_pm_bp;
    flash_gemm_cntl_op = flash_gemm_cntl_op_pb;
    flash_gemm_cntl_pb = flash_gemm_cntl_pb_bb;
    flash_gemm_cntl_bp = flash_gemm_cntl_bp_bb;
    flash_gemm_cntl_ip = flash_gemm_cntl_ip_bb;
    
}
void FLASH_Gemv_cntl_finalize ( void  )
void FLASH_Gemv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_gemv_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set gemv blocksize for hierarchical storage.
    flash_gemv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree node that executes a gemv subproblem.
    flash_gemv_cntl_blas   = FLA_Cntl_gemv_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create control trees for situations where one dimension is large.
    flash_gemv_cntl_cp_bv = FLA_Cntl_gemv_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemv_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemv_cntl_blas );
    flash_gemv_cntl_rp_bv = FLA_Cntl_gemv_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemv_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemv_cntl_blas );

    // Create control trees for situations where both dimensions are large.
    flash_gemv_cntl_fm_rp = FLA_Cntl_gemv_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_gemv_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemv_cntl_rp_bv );
    flash_gemv_cntl_fm_cp = FLA_Cntl_gemv_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_gemv_bsize,
                                                      flash_scal_cntl,
                                                      flash_gemv_cntl_cp_bv );
}
void FLASH_Hemm_cntl_finalize ( void  )
void FLASH_Hemm_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_hemm_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set hemm blocksize for hierarchical storage.
    flash_hemm_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_hemm_cntl_blas  = FLA_Cntl_hemm_obj_create( FLA_HIER, 
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    flash_hemm_cntl_bp    = FLA_Cntl_hemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT9,
                                                      flash_hemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_hemm_cntl_blas,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is large and B is a panel.
    flash_hemm_cntl_mp    = FLA_Cntl_hemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_hemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_hemm_cntl_blas,
                                                      flash_gemm_cntl_op_bp,
                                                      flash_gemm_cntl_mm_mp );

    // Create a control tree that assumes A and B are both large.
    flash_hemm_cntl_mm    = FLA_Cntl_hemm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT9,
                                                      flash_hemm_bsize,
                                                      flash_scal_cntl,
                                                      flash_hemm_cntl_mp,
                                                      NULL,
                                                      NULL );
}
void FLASH_Her2k_cntl_finalize ( void  )
void FLASH_Her2k_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_her2k_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set her2k blocksize for hierarchical storage.
    flash_her2k_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_her2k_cntl_blas  = FLA_Cntl_her2k_obj_create( FLA_HIER,
                                                        FLA_SUBPROBLEM,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL );
 
    // Create a control tree that assumes A and B form an inner panel product.
    flash_her2k_cntl_ip    = FLA_Cntl_her2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT9,
                                                        flash_her2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_her2k_cntl_blas,
                                                        NULL,
                                                        NULL );

    // Create a control tree that assumes A and B form an outer panel product.
    flash_her2k_cntl_op    = FLA_Cntl_her2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT4,
                                                        flash_her2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_her2k_cntl_blas,
                                                        flash_gemm_cntl_pb_bb,
                                                        flash_gemm_cntl_pb_bb );

    // Create a control tree that assumes A and B are both large.
    flash_her2k_cntl_mm    = FLA_Cntl_her2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT9,
                                                        flash_her2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_her2k_cntl_op,
                                                        NULL,
                                                        NULL );
}
void FLASH_Herk_cntl_finalize ( void  )
void FLASH_Herk_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_herk_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set herk blocksize for hierarchical storage.
    flash_herk_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_herk_cntl_blas  = FLA_Cntl_herk_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A * A' forms an inner panel product.
    flash_herk_cntl_ip    = FLA_Cntl_herk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_herk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_herk_cntl_blas,
                                                      NULL );

    // Create a control tree that assumes A * A' forms an outer panel product.
    flash_herk_cntl_op    = FLA_Cntl_herk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT2,
                                                      flash_herk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_herk_cntl_blas,
                                                      flash_gemm_cntl_pb_bb );

    // Create a control tree that assumes A is large.
    flash_herk_cntl_mm    = FLA_Cntl_herk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_herk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_herk_cntl_op,
                                                      NULL );
}
void FLASH_LQ_UT_cntl_finalize ( void  )
void FLASH_LQ_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_lqut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_lqut_var3_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to compute the subproblem.
    flash_lqut_cntl_leaf = FLA_Cntl_lqut_obj_create( FLA_HIER,
                                                     FLA_SUBPROBLEM, 
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 2.
    flash_lqut_cntl      = FLA_Cntl_lqut_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_lqut_var3_bsize,
                                                     flash_lqut_cntl_leaf,
                                                     flash_apqut_cntl_blas );
}
void FLASH_LU_incpiv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_lu_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_lu_incpiv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_lu_incpiv_cntl_leaf   = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                          FLA_SUBPROBLEM,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL,
                                                          NULL );

    // Create a control tree that assumes A is large.
    flash_lu_incpiv_cntl        = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                          FLA_BLOCKED_VARIANT1,
                                                          flash_lu_incpiv_bsize,
                                                          flash_lu_incpiv_cntl_leaf,
                                                          flash_gemm_cntl_bp_bb,
                                                          NULL,
                                                          NULL,
                                                          flash_trsm_cntl_bp,
                                                          flash_trsm_cntl_bp,
                                                          flash_appiv_cntl_bp,
                                                          NULL );
}
void FLASH_LU_nopiv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_lu_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_lu_nopiv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_lu_nopiv_cntl_leaf   = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                         FLA_SUBPROBLEM,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );

    // Create a control tree that assumes A is large.
    flash_lu_nopiv_cntl        = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT5,
                                                         flash_lu_nopiv_bsize,
                                                         flash_lu_nopiv_cntl_leaf,
                                                         flash_gemm_cntl_op_bp,
                                                         NULL,
                                                         NULL,
                                                         flash_trsm_cntl_bp,
                                                         flash_trsm_cntl_bp,
                                                         NULL,
                                                         NULL );
}
void FLASH_LU_piv_cntl_finalize ( void  )
void FLASH_LU_piv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_lu_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_lu_piv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_lu_piv_cntl_leaf   = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is large.
    flash_lu_piv_cntl        = FLA_Cntl_lu_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT5,
                                                       flash_lu_piv_bsize,
                                                       flash_lu_piv_cntl_leaf,
                                                       flash_gemm_cntl_op_bp,
                                                       NULL,
                                                       NULL,
                                                       flash_trsm_cntl_bp,
                                                       flash_trsm_cntl_bp,
                                                       flash_appiv_cntl_bp,
                                                       NULL );
}
void FLASH_Lyap_cntl_finalize ( void  )
void FLASH_Lyap_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_lyap_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_lyap_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and C are b x b blocks.
    flash_lyap_cntl_leaf   = FLA_Cntl_lyap_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is a matrix and C is a matrix.
    flash_lyap_cntl        = FLA_Cntl_lyap_obj_create( FLA_HIER, 
                                                       FLA_BLOCKED_VARIANT1,
                                                       flash_lyap_bsize,
                                                       flash_scal_cntl,
                                                       flash_lyap_cntl_leaf,
                                                       flash_sylv_cntl,
                                                       NULL, //flash_gemm_cntl_pm,
                                                       NULL, //flash_gemm_cntl_pm,
                                                       flash_hemm_cntl_mp,
                                                       flash_her2k_cntl_ip );
}
void FLASH_QR2_UT_cntl_finalize ( void  )
void FLASH_QR2_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_qr2ut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_qr2ut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_qr2ut_cntl_leaf = FLA_Cntl_qr2ut_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM, 
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree to invoke variant 2.
    flash_qr2ut_cntl    = FLA_Cntl_qr2ut_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT2, 
                                                     flash_qr2ut_var2_bsize,
                                                     flash_qr2ut_cntl_leaf,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );
}
void FLASH_QR_UT_cntl_finalize ( void  )
void FLASH_QR_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_qrut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_qrut_var3_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to compute the subproblem.
    flash_qrut_cntl_leaf = FLA_Cntl_qrut_obj_create( FLA_HIER,
                                                     FLA_SUBPROBLEM, 
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 3.
    flash_qrut_cntl      = FLA_Cntl_qrut_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_qrut_var3_bsize,
                                                     flash_qrut_cntl_leaf,
                                                     flash_apqut_cntl_blas );
}
void FLASH_QR_UT_inc_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_qrutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_qrutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_qrutinc_cntl = FLA_Cntl_qrutinc_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1, 
                                                      flash_qrutinc_var1_bsize,
                                                      flash_qrut_cntl_leaf,
                                                      flash_apqut_cntl,
                                                      flash_qr2ut_cntl,
                                                      flash_apq2ut_cntl );
}
void FLASH_Scal_cntl_finalize ( void  )
void FLASH_Scal_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_scal_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_scal_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is small.
    flash_scal_cntl_blas = FLA_Cntl_scal_obj_create( FLA_HIER,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL );

    // Create a control tree that marches through A vertically.
    flash_scal_cntl_tb   = FLA_Cntl_scal_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT1,
                                                     flash_scal_bsize,
                                                     flash_scal_cntl_blas );

    // Create a control tree that marches through A horizontally.
    flash_scal_cntl_lr   = FLA_Cntl_scal_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_scal_bsize,
                                                     flash_scal_cntl_blas );

    // Create a control tree that marches through A horizontally, then
    // vertically.
    flash_scal_cntl      = FLA_Cntl_scal_obj_create( FLA_HIER,
                                                     FLA_BLOCKED_VARIANT3,
                                                     flash_scal_bsize,
                                                     flash_scal_cntl_tb );
}
void FLASH_Scalr_cntl_finalize ( void  )
void FLASH_Scalr_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_scalr_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_scalr_bsize     = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is small.
    flash_scalr_cntl_blas = FLA_Cntl_scalr_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that computes column panels, top-left to
    // bottom-right.
    flash_scalr_cntl      = FLA_Cntl_scalr_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT3,
                                                       flash_scalr_bsize,
                                                       flash_scalr_cntl_blas,
                                                       flash_scal_cntl_tb );
}
void FLASH_SPDinv_cntl_finalize ( void  )
void FLASH_SPDinv_cntl_init ( void  )

References FLA_Cntl_spdinv_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flash().

{
    // Rather than embed a blocksize, we store the cutoff matrix size for
    // switching from external routines to internal FLAME variants.
    flash_spdinv_size_cutoff = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Initialize a control tree node that calls the top-level Cholesky
    // factorization, Trinagular inversion, and Triangular-transpose matrix
    // multiply control trees. 
    flash_spdinv_cntl        = FLA_Cntl_spdinv_obj_create( FLA_HIER,
                                                           FLA_BLOCKED_VARIANT1, 
                                                           flash_spdinv_size_cutoff,
                                                           flash_chol_cntl,
                                                           flash_trinv_cntl,
                                                           flash_ttmm_cntl );
}
void FLASH_Sylv_cntl_finalize ( void  )
void FLASH_Sylv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_sylv_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_sylv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_sylv_cntl_leaf   = FLA_Cntl_sylv_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is a matrix and B is a block.
    flash_sylv_cntl_mb     = FLA_Cntl_sylv_obj_create( FLA_HIER, 
                                                       FLA_BLOCKED_VARIANT17,
                                                       flash_sylv_bsize,
                                                       flash_sylv_cntl_leaf,
                                                       NULL,
                                                       NULL,
                                                       flash_gemm_cntl_ip_bb,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is a matrix and B is a matrix.
    flash_sylv_cntl        = FLA_Cntl_sylv_obj_create( FLA_HIER, 
                                                       FLA_BLOCKED_VARIANT15,
                                                       flash_sylv_bsize,
                                                       flash_sylv_cntl_mb,
                                                       NULL,
                                                       NULL,
                                                       flash_gemm_cntl_pm_bp,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );
}
void FLASH_Symm_cntl_finalize ( void  )
void FLASH_Symm_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_symm_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set symm blocksize for hierarchical storage.
    flash_symm_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_symm_cntl_blas  = FLA_Cntl_symm_obj_create( FLA_HIER, 
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    flash_symm_cntl_bp    = FLA_Cntl_symm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT9,
                                                      flash_symm_bsize,
                                                      flash_scal_cntl,
                                                      flash_symm_cntl_blas,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is large and B is a panel.
    flash_symm_cntl_mp    = FLA_Cntl_symm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT1,
                                                      flash_symm_bsize,
                                                      flash_scal_cntl,
                                                      flash_symm_cntl_blas,
                                                      flash_gemm_cntl_op_bp,
                                                      flash_gemm_cntl_mm_mp );

    // Create a control tree that assumes A and B are both large.
    flash_symm_cntl_mm    = FLA_Cntl_symm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT9,
                                                      flash_symm_bsize,
                                                      flash_scal_cntl,
                                                      flash_symm_cntl_mp,
                                                      NULL,
                                                      NULL );
}
void FLASH_Syr2k_cntl_finalize ( void  )
void FLASH_Syr2k_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_syr2k_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set syr2k blocksize for hierarchical storage.
    flash_syr2k_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_syr2k_cntl_blas  = FLA_Cntl_syr2k_obj_create( FLA_HIER,
                                                        FLA_SUBPROBLEM,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL );

    // Create a control tree that assumes A and B form an inner panel product.
    flash_syr2k_cntl_ip    = FLA_Cntl_syr2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT9,
                                                        flash_syr2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_syr2k_cntl_blas,
                                                        NULL,
                                                        NULL );

    // Create a control tree that assumes A and B form an outer panel product.
    flash_syr2k_cntl_op    = FLA_Cntl_syr2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT4,
                                                        flash_syr2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_syr2k_cntl_blas,
                                                        flash_gemm_cntl_pb_bb,
                                                        flash_gemm_cntl_pb_bb );

    // Create a control tree that assumes A and B are both large.
    flash_syr2k_cntl_mm    = FLA_Cntl_syr2k_obj_create( FLA_HIER,
                                                        FLA_BLOCKED_VARIANT9,
                                                        flash_syr2k_bsize,
                                                        flash_scalr_cntl,
                                                        flash_syr2k_cntl_op,
                                                        NULL,
                                                        NULL );
}
void FLASH_Syrk_cntl_finalize ( void  )
void FLASH_Syrk_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_syrk_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set syrk blocksize for hierarchical storage.
    flash_syrk_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_syrk_cntl_blas  = FLA_Cntl_syrk_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A * A' forms an inner panel product.
    flash_syrk_cntl_ip    = FLA_Cntl_syrk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_syrk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_syrk_cntl_blas,
                                                      NULL );

    // Create a control tree that assumes A * A' forms an outer panel product.
    flash_syrk_cntl_op    = FLA_Cntl_syrk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT2,
                                                      flash_syrk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_syrk_cntl_blas,
                                                      flash_gemm_cntl_pb_bb );

    // Create a control tree that assumes A is large.
    flash_syrk_cntl_mm    = FLA_Cntl_syrk_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT5,
                                                      flash_syrk_bsize,
                                                      flash_scalr_cntl,
                                                      flash_syrk_cntl_op,
                                                      NULL );
}
void FLASH_Transpose_cntl_init ( void  )
void FLASH_Trinv_cntl_finalize ( void  )
void FLASH_Trinv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_trinv_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_trinv_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_trinv_cntl_leaf   = FLA_Cntl_trinv_obj_create( FLA_HIER,
                                                         FLA_SUBPROBLEM,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL,
                                                         NULL );

    // Create a control tree that assumes A is large.
    flash_trinv_cntl        = FLA_Cntl_trinv_obj_create( FLA_HIER,
                                                         FLA_BLOCKED_VARIANT3, 
                                                         flash_trinv_bsize,
                                                         flash_trinv_cntl_leaf,
                                                         NULL,
                                                         flash_trsm_cntl_bp,
                                                         flash_trsm_cntl_bp,
                                                         flash_gemm_cntl_op_bp );
}
void FLASH_Trmm_cntl_finalize ( void  )
void FLASH_Trmm_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_trmm_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set trmm blocksize for hierarchical storage.
    flash_trmm_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_trmm_cntl_blas  = FLA_Cntl_trmm_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    flash_trmm_cntl_bp    = FLA_Cntl_trmm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_trmm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trmm_cntl_blas,
                                                      NULL );

    // Create a control tree that assumes A is large and B is a panel.
    flash_trmm_cntl_mp    = FLA_Cntl_trmm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT2,
                                                      flash_trmm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trmm_cntl_blas,
                                                      flash_gemm_cntl_op_bp );

    // Create a control tree that assumes A and B are both large.
    flash_trmm_cntl_mm    = FLA_Cntl_trmm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_trmm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trmm_cntl_mp,
                                                      NULL );
}
void FLASH_Trsm_cntl_finalize ( void  )
void FLASH_Trsm_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_trsm_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set trsm blocksize for hierarchical storage.
    flash_trsm_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A and B are b x b blocks.
    flash_trsm_cntl_blas  = FLA_Cntl_trsm_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    flash_trsm_cntl_bp    = FLA_Cntl_trsm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_trsm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trsm_cntl_blas,
                                                      NULL );

    // Create a control tree that assumes A is large and B is a panel.
    flash_trsm_cntl_mp    = FLA_Cntl_trsm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT2,
                                                      flash_trsm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trsm_cntl_blas,
                                                      flash_gemm_cntl_op_bp );

    // Create a control tree that assumes A and B are both large.
    flash_trsm_cntl_mm    = FLA_Cntl_trsm_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT3,
                                                      flash_trsm_bsize,
                                                      flash_scal_cntl,
                                                      flash_trsm_cntl_mp,
                                                      NULL );
}
void FLASH_Trsv_cntl_finalize ( void  )
void FLASH_Trsv_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_trsv_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set trsv blocksize for hierarchical storage.
    flash_trsv_bsize      = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_trsv_cntl_blas  = FLA_Cntl_trsv_obj_create( FLA_HIER,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A is large.
    flash_trsv_cntl       = FLA_Cntl_trsv_obj_create( FLA_HIER,
                                                      FLA_BLOCKED_VARIANT2,
                                                      flash_trsv_bsize,
                                                      flash_trsv_cntl_blas,
                                                      flash_gemv_cntl_cp_bv );
}
void FLASH_Ttmm_cntl_finalize ( void  )
void FLASH_Ttmm_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_ttmm_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_ttmm_bsize       = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree that assumes A is a b x b block.
    flash_ttmm_cntl_leaf   = FLA_Cntl_ttmm_obj_create( FLA_HIER,
                                                       FLA_SUBPROBLEM,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree that assumes A is large.
    flash_ttmm_cntl        = FLA_Cntl_ttmm_obj_create( FLA_HIER,
                                                       FLA_BLOCKED_VARIANT1, 
                                                       flash_ttmm_bsize,
                                                       flash_ttmm_cntl_leaf,
                                                       flash_herk_cntl_op,
                                                       flash_trmm_cntl_bp,
                                                       NULL );
}
void FLASH_UDdate_UT_cntl_init ( void  )

References FLA_Blocksize_create(), and FLA_Cntl_uddateut_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksize for hierarchical storage.
    flash_uddateut_var2_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_uddateut_cntl_leaf = FLA_Cntl_uddateut_obj_create( FLA_HIER,
                                                             FLA_SUBPROBLEM, 
                                                             NULL,
                                                             NULL,
                                                             NULL );

    // Create a control tree to invoke variant 2.
    flash_uddateut_cntl    = FLA_Cntl_uddateut_obj_create( FLA_HIER,
                                                           FLA_BLOCKED_VARIANT2, 
                                                           flash_uddateut_var2_bsize,
                                                           flash_uddateut_cntl_leaf,
                                                           NULL );
}

References FLA_Blocksize_create(), and FLA_Cntl_uddateutinc_obj_create().

Referenced by FLA_Cntl_init_flash().

{
    // Set blocksizes for hierarchical storage.
    flash_uddateutinc_var1_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );

    // Create a control tree to invoke variant 1.
    flash_uddateutinc_cntl = FLA_Cntl_uddateutinc_obj_create( FLA_HIER,
                                                              FLA_BLOCKED_VARIANT1, 
                                                              flash_uddateutinc_var1_bsize,
                                                              flash_uddateut_cntl,
                                                              flash_apqudut_cntl );
}