From e31f0b3e2dba19ca8a2946bc21beb136a42d0f57 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 21 Nov 2017 14:21:25 -0600 Subject: [PATCH] Subtle update to bli_blksz_init*() API. Details: - Updated the semantics of bli_blksz_init() and bli_blksz_init_ed() so that non-positive blocksize values are ignored entirely. This provides an easy way to indicate that certain existing values should not be touched by the update. Thanks to Devangi Parikh for feedback that led to these changes. --- frame/base/bli_blksz.c | 70 ++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/frame/base/bli_blksz.c b/frame/base/bli_blksz.c index 6d27c52d5..25ff15d4e 100644 --- a/frame/base/bli_blksz.c +++ b/frame/base/bli_blksz.c @@ -43,9 +43,7 @@ blksz_t* bli_blksz_create_ed dim_t b_z, dim_t be_z ) { - blksz_t* b; - - b = ( blksz_t* ) bli_malloc_intl( sizeof(blksz_t) ); + blksz_t* b = bli_malloc_intl( sizeof( blksz_t ) ); bli_blksz_init_ed ( @@ -65,9 +63,7 @@ blksz_t* bli_blksz_create dim_t be_s, dim_t be_d, dim_t be_c, dim_t be_z ) { - blksz_t* b; - - b = ( blksz_t* ) bli_malloc_intl( sizeof(blksz_t) ); + blksz_t* b = bli_malloc_intl( sizeof( blksz_t ) ); bli_blksz_init ( @@ -88,14 +84,20 @@ void bli_blksz_init_ed dim_t b_z, dim_t be_z ) { - b->v[BLIS_FLOAT] = b_s; - b->v[BLIS_DOUBLE] = b_d; - b->v[BLIS_SCOMPLEX] = b_c; - b->v[BLIS_DCOMPLEX] = b_z; - b->e[BLIS_FLOAT] = be_s; - b->e[BLIS_DOUBLE] = be_d; - b->e[BLIS_SCOMPLEX] = be_c; - b->e[BLIS_DCOMPLEX] = be_z; + // Set the default and maximum values to the values specified + // in the function arguments, but only for those values that + // are positive. (Non-positive values indicate that we should + // leave the value untouched.) + + if ( b_s > 0 ) b->v[BLIS_FLOAT] = b_s; + if ( b_d > 0 ) b->v[BLIS_DOUBLE] = b_d; + if ( b_c > 0 ) b->v[BLIS_SCOMPLEX] = b_c; + if ( b_z > 0 ) b->v[BLIS_DCOMPLEX] = b_z; + + if ( be_s > 0 ) b->e[BLIS_FLOAT] = be_s; + if ( be_d > 0 ) b->e[BLIS_DOUBLE] = be_d; + if ( be_c > 0 ) b->e[BLIS_SCOMPLEX] = be_c; + if ( be_z > 0 ) b->e[BLIS_DCOMPLEX] = be_z; } void bli_blksz_init @@ -105,16 +107,20 @@ void bli_blksz_init dim_t be_s, dim_t be_d, dim_t be_c, dim_t be_z ) { - b->v[BLIS_FLOAT] = b_s; - b->v[BLIS_DOUBLE] = b_d; - b->v[BLIS_SCOMPLEX] = b_c; - b->v[BLIS_DCOMPLEX] = b_z; + // Set the default and maximum values to the values specified + // in the function arguments, but only for those values that + // are positive. (Non-positive values indicate that we should + // leave the value untouched.) - // Interpret a zero as a request for the default value. - b->e[BLIS_FLOAT] = ( be_s == 0 ? b_s : be_s ); - b->e[BLIS_DOUBLE] = ( be_d == 0 ? b_d : be_d ); - b->e[BLIS_SCOMPLEX] = ( be_c == 0 ? b_c : be_c ); - b->e[BLIS_DCOMPLEX] = ( be_z == 0 ? b_z : be_z ); + if ( b_s > 0 ) b->v[BLIS_FLOAT] = b_s; + if ( b_d > 0 ) b->v[BLIS_DOUBLE] = b_d; + if ( b_c > 0 ) b->v[BLIS_SCOMPLEX] = b_c; + if ( b_z > 0 ) b->v[BLIS_DCOMPLEX] = b_z; + + if ( be_s > 0 ) b->e[BLIS_FLOAT] = be_s; + if ( be_d > 0 ) b->e[BLIS_DOUBLE] = be_d; + if ( be_c > 0 ) b->e[BLIS_SCOMPLEX] = be_c; + if ( be_z > 0 ) b->e[BLIS_DCOMPLEX] = be_z; } void bli_blksz_init_easy @@ -123,17 +129,15 @@ void bli_blksz_init_easy dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z ) { - b->v[BLIS_FLOAT] = b_s; - b->v[BLIS_DOUBLE] = b_d; - b->v[BLIS_SCOMPLEX] = b_c; - b->v[BLIS_DCOMPLEX] = b_z; + // Set the default and maximum values to the values specified + // in the function arguments, but only for those values that + // are positive. (Non-positive values indicate that we should + // leave the value untouched.) - // Here we assume the maximum blocksize values can be the same as the - // default values. - b->e[BLIS_FLOAT] = b_s; - b->e[BLIS_DOUBLE] = b_d; - b->e[BLIS_SCOMPLEX] = b_c; - b->e[BLIS_DCOMPLEX] = b_z; + if ( b_s > 0 ) b->v[BLIS_FLOAT] = b->e[BLIS_FLOAT] = b_s; + if ( b_d > 0 ) b->v[BLIS_DOUBLE] = b->e[BLIS_DOUBLE] = b_d; + if ( b_c > 0 ) b->v[BLIS_SCOMPLEX] = b->e[BLIS_SCOMPLEX] = b_c; + if ( b_z > 0 ) b->v[BLIS_DCOMPLEX] = b->e[BLIS_DCOMPLEX] = b_z; } void bli_blksz_free