FLASH_LU_incpiv.c File Reference

(r)


Functions

FLA_Error FLASH_LU_incpiv (FLA_Obj A, FLA_Obj p, FLA_Obj L)
void FLA_F2C() flash_lu_incpiv_f (F_INT *A, F_INT *p, F_INT *L, F_INT *IERROR)

Function Documentation

FLA_Error FLASH_LU_incpiv ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  L 
)

References FLA_Abort(), FLA_Check_error_level(), FLA_LU_incpiv_check(), FLA_Part_2x2(), FLA_Print_message(), FLASH_LU_incpiv_var2(), FLASH_Obj_depth(), FLASH_Obj_scalar_width(), FLASH_Queue_begin(), and FLASH_Queue_end().

Referenced by flash_lu_incpiv_f().

00036 {
00037   dim_t     nb_alg;
00038   FLA_Error r_val;
00039   FLA_Obj   LTL, LTR,
00040             LBL, LBR;
00041 
00042   // Check parameters.
00043   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00044     FLA_LU_incpiv_check( A, p, L );
00045 
00046   // *** The current LU_incpiv algorithm implemented assumes that
00047   // the matrix has a hierarchical depth of 1. We check for that here, because
00048   // we anticipate that we'll use a more general algorithm in the future, and
00049   // we don't want to forget to remove the constraint. ***
00050   if ( FLASH_Obj_depth( A ) != 1 )
00051   {
00052     FLA_Print_message( "FLASH_LU_incpiv() currently only supports matrices of depth 1",
00053                        __FILE__, __LINE__ );
00054     FLA_Abort();
00055   }
00056   
00057   // Inspect the width of a the top-left element of L to get the algorithmic
00058   // blocksize we'll use throughout the LU_incpiv algorithm.
00059   FLA_Part_2x2( L,   &LTL, &LTR,
00060                      &LBL, &LBR,     1, 1, FLA_TL );
00061   nb_alg = FLASH_Obj_scalar_width( LTL );
00062 
00063   // Begin a parallel region.
00064   FLASH_Queue_begin();
00065   
00066   // Enqueue tasks via a SuperMatrix-aware control tree.
00067   r_val = FLASH_LU_incpiv_var2( A, p, L, nb_alg );
00068   
00069   // End the parallel region.
00070   FLASH_Queue_end();
00071 
00072   return r_val;
00073 }

void FLA_F2C() flash_lu_incpiv_f ( F_INT *  A,
F_INT *  p,
F_INT *  L,
F_INT *  IERROR 
)

References FLASH_LU_incpiv().

00077 {
00078   *IERROR = FLASH_LU_incpiv( *( ( FLA_Obj  * ) A ),
00079                              *( ( FLA_Obj  * ) p ),
00080                              *( ( FLA_Obj  * ) L ) );
00081 }


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