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) |
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, <L, <R, 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 }