libflame  revision_anchor
Functions
FLA_Trsv.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Trsv_internal (FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_lc (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_ln (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_lt (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_uc (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_un (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 
FLA_Error FLA_Trsv_ut (FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
 

Function Documentation

◆ FLA_Trsv_internal()

FLA_Error FLA_Trsv_internal ( FLA_Uplo  uplo,
FLA_Trans  transa,
FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Trsv_internal_check(), FLA_Trsv_lc(), FLA_Trsv_ln(), FLA_Trsv_lt(), FLA_Trsv_uc(), FLA_Trsv_un(), FLA_Trsv_ut(), FLASH_Queue_get_enabled(), and flash_trsv_cntl_blas.

Referenced by FLA_Trsv(), FLA_Trsv_lc_blk_var1(), FLA_Trsv_lc_blk_var2(), FLA_Trsv_ln_blk_var1(), FLA_Trsv_ln_blk_var2(), FLA_Trsv_lt_blk_var1(), FLA_Trsv_lt_blk_var2(), FLA_Trsv_uc_blk_var1(), FLA_Trsv_uc_blk_var2(), FLA_Trsv_un_blk_var1(), FLA_Trsv_un_blk_var2(), FLA_Trsv_ut_blk_var1(), FLA_Trsv_ut_blk_var2(), and FLASH_Trsv().

17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
21  FLA_Trsv_internal_check( uplo, transa, diag, A, x, cntl );
22 
23  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
24  FLA_Obj_elemtype( A ) == FLA_MATRIX &&
25  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
26  {
27  // Recurse
28  r_val = FLA_Trsv_internal( uplo,
29  transa,
30  diag,
31  *FLASH_OBJ_PTR_AT( A ),
32  *FLASH_OBJ_PTR_AT( x ),
34  }
35  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
36  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
38  {
39  // Enqueue
40  ENQUEUE_FLASH_Trsv( uplo, transa, diag, A, x, cntl );
41  }
42  else
43  {
44  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
45  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
47  {
48  // Execute leaf
49  cntl = flash_trsv_cntl_blas;
50  }
51 
52  // Parameter combinations
53  if ( uplo == FLA_LOWER_TRIANGULAR )
54  {
55  if ( transa == FLA_NO_TRANSPOSE )
56  r_val = FLA_Trsv_ln( diag, A, x, cntl );
57  else if ( transa == FLA_TRANSPOSE )
58  r_val = FLA_Trsv_lt( diag, A, x, cntl );
59  else if ( transa == FLA_CONJ_TRANSPOSE )
60  r_val = FLA_Trsv_lc( diag, A, x, cntl );
61  }
62  else if ( uplo == FLA_UPPER_TRIANGULAR )
63  {
64  if ( transa == FLA_NO_TRANSPOSE )
65  r_val = FLA_Trsv_un( diag, A, x, cntl );
66  else if ( transa == FLA_TRANSPOSE )
67  r_val = FLA_Trsv_ut( diag, A, x, cntl );
68  else if ( transa == FLA_CONJ_TRANSPOSE )
69  r_val = FLA_Trsv_uc( diag, A, x, cntl );
70  }
71  }
72 
73  return r_val;
74 }
FLA_Error FLA_Trsv_internal_check(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_internal_check.c:13
FLA_Error FLA_Trsv_uc(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_uc.c:13
FLA_Error FLA_Trsv_internal(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_internal.c:16
fla_trsv_t * flash_trsv_cntl
Definition: FLASH_Trsv_cntl_init.c:16
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_un(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_un.c:13
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Error FLA_Trsv_ut(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ut.c:13
FLA_Error FLA_Trsv_lc(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lc.c:13
FLA_Error FLA_Trsv_lt(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lt.c:13
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
fla_trsv_t * flash_trsv_cntl_blas
Definition: FLASH_Trsv_cntl_init.c:15
FLA_Error FLA_Trsv_ln(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ln.c:13
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51

◆ FLA_Trsv_lc()

FLA_Error FLA_Trsv_lc ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_lc_blk_var1(), FLA_Trsv_lc_blk_var2(), and FLA_Trsv_lc_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_lc_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_lc_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_lc_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
FLA_Error FLA_Trsv_lc_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:18
FLA_Error FLA_Trsv_lc_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lc_blk_var1.c:15
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_lc_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lc_blk_var2.c:13

◆ FLA_Trsv_ln()

FLA_Error FLA_Trsv_ln ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_ln_blk_var1(), FLA_Trsv_ln_blk_var2(), and FLA_Trsv_ln_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_ln_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_ln_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_ln_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
FLA_Error FLA_Trsv_ln_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:23
FLA_Error FLA_Trsv_ln_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ln_blk_var1.c:15
FLA_Error FLA_Trsv_ln_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ln_blk_var2.c:13
int FLA_Error
Definition: FLA_type_defs.h:47

◆ FLA_Trsv_lt()

FLA_Error FLA_Trsv_lt ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_lt_blk_var1(), FLA_Trsv_lt_blk_var2(), and FLA_Trsv_lt_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_lt_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_lt_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_lt_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
FLA_Error FLA_Trsv_lt_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lt_blk_var2.c:13
FLA_Error FLA_Trsv_lt_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_lt_blk_var1.c:15
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_lt_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:28

◆ FLA_Trsv_uc()

FLA_Error FLA_Trsv_uc ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_uc_blk_var1(), FLA_Trsv_uc_blk_var2(), and FLA_Trsv_uc_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_uc_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_uc_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_uc_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
FLA_Error FLA_Trsv_uc_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_uc_blk_var2.c:13
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_uc_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:33
FLA_Error FLA_Trsv_uc_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_uc_blk_var1.c:15

◆ FLA_Trsv_un()

FLA_Error FLA_Trsv_un ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_un_blk_var1(), FLA_Trsv_un_blk_var2(), and FLA_Trsv_un_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_un_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_un_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_un_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
FLA_Error FLA_Trsv_un_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:38
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_un_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_un_blk_var2.c:13
FLA_Error FLA_Trsv_un_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_un_blk_var1.c:15

◆ FLA_Trsv_ut()

FLA_Error FLA_Trsv_ut ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x,
fla_trsv_t cntl 
)

References FLA_Trsv_ut_blk_var1(), FLA_Trsv_ut_blk_var2(), and FLA_Trsv_ut_task().

Referenced by FLA_Trsv_internal().

14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 
17  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
18  {
19  r_val = FLA_Trsv_ut_task( diag, A, x, cntl );
20  }
21 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
22  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
23  {
24  r_val = FLA_Trsv_ut_blk_var1( diag, A, x, cntl );
25  }
26 #endif
27  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
28  {
29  r_val = FLA_Trsv_ut_blk_var2( diag, A, x, cntl );
30  }
31  else
32  {
33  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
34  }
35 
36  return r_val;
37 }
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Trsv_ut_blk_var1(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ut_blk_var1.c:15
FLA_Error FLA_Trsv_ut_blk_var2(FLA_Diag diagA, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_ut_blk_var2.c:13
FLA_Error FLA_Trsv_ut_task(FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl)
Definition: FLA_Trsv_task.c:43