From 6d7fcea6093f264e16343918e61737eb4c66e3fa Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Tue, 14 Jul 2020 18:00:50 -0500 Subject: [PATCH] v3.3.3 --- CMakeLists.txt | 4 ++-- Doc/ChangeLog | 8 +++++++- Doc/GraphBLAS_UserGuide.pdf | Bin 853207 -> 853207 bytes Doc/GraphBLAS_version.tex | 4 ++-- Include/GraphBLAS.h | 4 ++-- README.md | 2 +- Source/GB_AxB_saxpy3_symbolic.c | 8 ++++++++ 7 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f71856de4a..f74d3efaa9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,10 +59,10 @@ endif ( ) set ( CMAKE_MACOSX_RPATH TRUE ) # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "July 3, 2020" ) +set ( GraphBLAS_DATE "July 14, 2020" ) set ( GraphBLAS_VERSION_MAJOR 3 ) set ( GraphBLAS_VERSION_MINOR 3 ) -set ( GraphBLAS_VERSION_SUB 2 ) +set ( GraphBLAS_VERSION_SUB 3 ) # GraphBLAS C API Specification version, at graphblas.org set ( GraphBLAS_API_DATE "Sept 25, 2019" ) diff --git a/Doc/ChangeLog b/Doc/ChangeLog index 5be8b02eab..c41cb317c3 100644 --- a/Doc/ChangeLog +++ b/Doc/ChangeLog @@ -5,11 +5,17 @@ Version 4.0.0, FUTURE, 2020 (this list is tentative): * GrB_*_nvals: will no longer guarantee completion; use GrB_wait(&object) or non-polymorphic GrB_*_wait (&object) instead * GrB_error: will have two inputs: a string (char **) and an object - * V4.0.0 will otherwise be identical to V3.3.0. + +Version 3.3.3, July 14, 2020 + + * (20) bug fix: w=A*u with mask non-empty and u empty (issue #13). + affects mxm (A*B when B is a vector), vxm, and mxv. + * GraphBLAS v3.3.3 released as part of SuiteSparse v5.8.1 Version 3.3.2, July 3, 2020 * minor changes to build system + * GraphBLAS v3.3.2 released as part of SuiteSparse v5.8.0 Version 3.3.1, June 30, 2020 diff --git a/Doc/GraphBLAS_UserGuide.pdf b/Doc/GraphBLAS_UserGuide.pdf index 1d820f1b30d3a4b6bed56fc2eb7e61311a71809e..47b945e7e24787503842f311255481d2cf3274b4 100644 GIT binary patch delta 1018 zcmccKX>z^OWJ9)Cy=VSoGm(AI!(W61I2`Hd-ezgq?AOes|4h^0e{WZUj_xq=oojUdA;j%yTzyAIA>|M2p9=}uUhT-|FLfR z|DFFiB3JczYNeb_7Gsl?o+i3z(Wb{UQuCJ`<+sc~!Oil_bm#INb;}PuoLng3bwzSV zdFpYe6;4G_rKMpT+RBt#UmaY`D|f%jl(lg2uKRh4b0(zB-#+O@`qP5y|7ZOj1)f~a znb)*-+qoYKd!DRSFi|~$JePa<{XB0nVaJIDdd6VnT zcAuCTQOL!#wEfbl>#i#=2)u8oiaWpeUE%U$lk2t^*5|$w<(oUN$Mo~bhh@bI>YsnU zG1EP#ZfauQpT=|}_`>o%t2#EhsmsN$R9hnCTYd9D(&5P&3@tm|mma^)kuTLNv*!fY zxq9gb^A@#6UBCEZ^UtQ&l4~+9{9npfWw+;nSyK6hci*CX>n>beJ1ITl!Kwu9dxvCl z*SM|ymu`IH(~KX@_0KoT8MKsd%lmi9bb@xo9Hxmfd&ADCmZrLg?SA0%QaQB2LrXI$ zHSj0varXtKA+9pb3+9Kfp37}~iD8yMV_5I1#i5h?`nvy0Gs_=T;km9LzeZ1QwfAF& zs?Ht(o@fU_hv+pQ4~uAt%(2lDmtQ)nmC!8nj1J8 f8d+L6xwyKy8M&I7SelsHDcBHFvR(W&&jCpQz^OWJ9)C{mHy1W&(SEYnO0o99VSJ_4b@cj%sdfkqss1pGFRv+AXIb zx!>=DQ#Lk!+tD0zL@B$zMrZ0xP3_I?vp>~e`~G|O?)N*-RCvCg6@K&I48x0;`cAIV z)4ui5?DqGY@1IP*Y^LvW^5o&Ps@_M1p6R=F(~mr1RgQb_5Hq#(*WKpO`qv-+9seEs z@A*IFl$AzmD<_!tM@ppRM1*y8o$5=Tws)qO{gXY4`T{eqKbiOF*Icf4|6_?7f$0zK zO_k+d$aOOF>ea}DQnxxqRcKRPu8W^_Fih~Z!g5Dn!gQ{-Q3=Mga1@PolWQl*;zn&DP&BZ(|qR-}qMxo*(AUQ!ZhDo420v3A^lFtx7l6Jg#kz zbWdG8mUZP-y;-wte|@K2h1_dK=Zf^#&-7!Nw>KTt{BYu8_R$!l@UoPx+~=m)8L?I@ znWPjZHZ{JWh9%5B^oSwHuga~rb{Z)2F8C>uaCL=Mly8 zrrQ`f8N6Y1b;#X#j6YZ-u;9~*m=u;3kFuLY4cz9+ef6Ask!zO0B$FDuGm4e&Momhw z&!=jg<5%oCzdc-p@3{$AVf8Z8TGQBqe+L`ZYW=akGH06ZnJKFlmP(i?idH}Ulvw{+ ze{aG$hvvnS?TaNDftU%1nSq!Eh*^P{4T#x+m;;D8ftU-3xwkKt_*H)`I{5 diff --git a/Doc/GraphBLAS_version.tex b/Doc/GraphBLAS_version.tex index 9635efdb47..61d4b97713 100644 --- a/Doc/GraphBLAS_version.tex +++ b/Doc/GraphBLAS_version.tex @@ -1,5 +1,5 @@ % version of SuiteSparse:GraphBLAS \date{VERSION -3.3.2, -July 3, 2020} +3.3.3, +July 14, 2020} diff --git a/Include/GraphBLAS.h b/Include/GraphBLAS.h index 357d8d084d..a64fbd4099 100644 --- a/Include/GraphBLAS.h +++ b/Include/GraphBLAS.h @@ -112,10 +112,10 @@ // The version of this implementation, and the GraphBLAS API version: #define GxB_IMPLEMENTATION_NAME "SuiteSparse:GraphBLAS" -#define GxB_IMPLEMENTATION_DATE "July 3, 2020" +#define GxB_IMPLEMENTATION_DATE "July 14, 2020" #define GxB_IMPLEMENTATION_MAJOR 3 #define GxB_IMPLEMENTATION_MINOR 3 -#define GxB_IMPLEMENTATION_SUB 2 +#define GxB_IMPLEMENTATION_SUB 3 #define GxB_SPEC_DATE "Sept 25, 2019" #define GxB_SPEC_MAJOR 1 #define GxB_SPEC_MINOR 3 diff --git a/README.md b/README.md index fd39eaf2ee..9ab8155b8b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2020, All Rights Reserved. http://suitesparse.com See GraphBLAS/Doc/License.txt for license. -VERSION 3.3.2, July 3, 2020 +VERSION 3.3.3, July 14, 2020 SuiteSparse:GraphBLAS is an full implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of diff --git a/Source/GB_AxB_saxpy3_symbolic.c b/Source/GB_AxB_saxpy3_symbolic.c index 4b5365fd52..ad672ac73b 100644 --- a/Source/GB_AxB_saxpy3_symbolic.c +++ b/Source/GB_AxB_saxpy3_symbolic.c @@ -118,6 +118,10 @@ void GB_AxB_saxpy3_symbolic //------------------------------------------------------------------ int64_t kk = TaskList [taskid].vector ; + int64_t bjnz = Bp [kk+1] - Bp [kk] ; + // no work to do if B(:,j) is empty + if (bjnz == 0) continue ; + // partition M(:,j) GB_GET_M_j ; // get M(:,j) int team_size = TaskList [taskid].team_size ; @@ -164,6 +168,7 @@ void GB_AxB_saxpy3_symbolic int64_t *GB_RESTRICT Hf = (int64_t *GB_RESTRICT) TaskList [taskid].Hf ; int64_t hash_bits = (hash_size-1) ; + ASSERT (hash_size >= mjnz) ; for (int64_t pM = mystart ; pM < myend ; pM++) // scan my M(:,j) { GB_GET_M_ij ; // get M(i,j) @@ -553,6 +558,9 @@ void GB_AxB_saxpy3_symbolic { int64_t kk = TaskList [taskid].vector ; ASSERT (kk >= 0 && kk < B->nvec) ; + int64_t bjnz = Bp [kk+1] - Bp [kk] ; + // no work to do if B(:,j) is empty + if (bjnz == 0) continue ; int64_t hash_size = TaskList [taskid].hsize ; bool use_Gustavson = (hash_size == cvlen) ; int master = TaskList [taskid].master ;