Disabled parallelism for right-sided TRMM JC loop

The loop has dependent iterations.
This commit is contained in:
Tyler Smith
2014-05-14 16:20:06 -05:00
parent 13a4c717ed
commit 5c048a90d8
4 changed files with 14 additions and 6 deletions

View File

@@ -125,7 +125,7 @@ void bli_trmm_front( side_t side,
if ( bli_is_left( side ) ) cntl = l_cntl;
else cntl = r_cntl;
trmm_thrinfo_t** infos = bli_create_trmm_thrinfo_paths();
trmm_thrinfo_t** infos = bli_create_trmm_thrinfo_paths( !bli_is_left( side ) );
dim_t n_threads = thread_num_threads( infos[0] );
// Invoke the internal back-end.

View File

@@ -108,15 +108,23 @@ void bli_trmm_thrinfo_free_paths( trmm_thrinfo_t** threads, dim_t num )
bli_free( threads );
}
trmm_thrinfo_t** bli_create_trmm_thrinfo_paths( )
trmm_thrinfo_t** bli_create_trmm_thrinfo_paths( bool_t jc_dependency )
{
#ifdef BLIS_ENABLE_MULTITHREADING
dim_t jc_way = bli_read_nway_from_env( "BLIS_JC_NT" );
// dim_t kc_way = bli_read_nway_from_env( "BLIS_KC_NT" );
dim_t kc_way = 1;
dim_t ic_way = bli_read_nway_from_env( "BLIS_IC_NT" );
dim_t jr_way = bli_read_nway_from_env( "BLIS_JR_NT" );
dim_t ir_way = bli_read_nway_from_env( "BLIS_IR_NT" );
if( !jc_dependency ){
dim_t jc_way = bli_read_nway_from_env( "BLIS_JC_NT" );
dim_t jr_way = bli_read_nway_from_env( "BLIS_JR_NT" );
}
else
{
dim_t jc_way = 1;
dim_t jr_way = bli_read_nway_from_env( "BLIS_JC_NT" ) * bli_read_nway_from_env( "BLIS_JR_NT" );
}
#else
dim_t jc_way = 1;
dim_t kc_way = 1;

View File

@@ -58,7 +58,7 @@ typedef struct trmm_thrinfo_s trmm_thrinfo_t;
#define trmm_l_ir_my_iter( index, thread ) ( index % thread->n_way == thread->work_id % thread->n_way )
#define trmm_l_jr_my_iter( index, thread ) ( index % thread->n_way == thread->work_id % thread->n_way )
trmm_thrinfo_t** bli_create_trmm_thrinfo_paths( );
trmm_thrinfo_t** bli_create_trmm_thrinfo_paths( bool_t jc_dependency );
void bli_trmm_thrinfo_free_paths( trmm_thrinfo_t** info, dim_t n_threads );
void bli_setup_trmm_thrinfo_node( trmm_thrinfo_t* thread,

View File

@@ -127,7 +127,7 @@ void bli_trmm3_front( side_t side,
if ( bli_is_left( side ) ) cntl = l_cntl;
else cntl = r_cntl;
trmm_thrinfo_t** infos = bli_create_trmm_thrinfo_paths();
trmm_thrinfo_t** infos = bli_create_trmm_thrinfo_paths( FALSE );
dim_t n_threads = thread_num_threads( infos[0] );
// Invoke the internal back-end.