libflame  revision_anchor
Functions
FLASH_SA_FS.c File Reference

(r)

Functions

FLA_Error FLASH_SA_FS (FLA_Obj L, FLA_Obj D, FLA_Obj p, FLA_Obj C, FLA_Obj E, dim_t nb_alg, fla_gemm_t *cntl)
 

Function Documentation

◆ FLASH_SA_FS()

FLA_Error FLASH_SA_FS ( FLA_Obj  L,
FLA_Obj  D,
FLA_Obj  p,
FLA_Obj  C,
FLA_Obj  E,
dim_t  nb_alg,
fla_gemm_t cntl 
)

References FLA_Cont_with_1x3_to_1x2(), FLA_Obj_width(), FLA_Part_1x2(), FLA_Repart_1x2_to_1x3(), FLA_SA_FS_task(), and FLASH_Queue_get_enabled().

Referenced by FLASH_SA_LU().

16 {
17  FLA_Obj CL, CR, C0, C1, C2;
18 
19  FLA_Obj EL, ER, E0, E1, E2;
20 
21  FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT );
22 
23  FLA_Part_1x2( E, &EL, &ER, 0, FLA_LEFT );
24 
25  while ( FLA_Obj_width( CL ) < FLA_Obj_width( C ) )
26  {
27  FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2,
28  1, FLA_RIGHT );
29 
30  FLA_Repart_1x2_to_1x3( EL, /**/ ER, &E0, /**/ &E1, &E2,
31  1, FLA_RIGHT );
32 
33  /*------------------------------------------------------------*/
34 
35  if ( FLASH_Queue_get_enabled( ) )
36  {
37  // Enqueue
38  ENQUEUE_FLASH_SA_FS( *FLASH_OBJ_PTR_AT( L ),
39  *FLASH_OBJ_PTR_AT( D ),
40  *FLASH_OBJ_PTR_AT( p ),
41  *FLASH_OBJ_PTR_AT( C1 ),
42  *FLASH_OBJ_PTR_AT( E1 ),
43  nb_alg,
44  FLA_Cntl_sub_gemm( cntl ) );
45  }
46  else
47  {
48  // Execute leaf
49  FLA_SA_FS_task( *FLASH_OBJ_PTR_AT( L ),
50  *FLASH_OBJ_PTR_AT( D ),
51  *FLASH_OBJ_PTR_AT( p ),
52  *FLASH_OBJ_PTR_AT( C1 ),
53  *FLASH_OBJ_PTR_AT( E1 ),
54  nb_alg,
55  FLA_Cntl_sub_gemm( cntl ) );
56  }
57 
58  /*------------------------------------------------------------*/
59 
60  FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2,
61  FLA_LEFT );
62 
63  FLA_Cont_with_1x3_to_1x2( &EL, /**/ &ER, E0, E1, /**/ E2,
64  FLA_LEFT );
65  }
66 
67  return FLA_SUCCESS;
68 }
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:267
FLA_Error FLA_SA_FS_task(FLA_Obj L, FLA_Obj D, FLA_Obj p, FLA_Obj C, FLA_Obj E, dim_t nb_alg, fla_gemm_t *cntl)
Definition: FLA_SA_FS_task.c:13
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
Definition: FLA_type_defs.h:158
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Error FLA_Cont_with_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:475
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110