1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039
|
%-------------------------------------------------------------------------------
\section{Release Notes}
%-------------------------------------------------------------------------------
\begin{itemize}
\item Mar 6, 2025: version 10.0.1
\begin{itemize}
\item (60) bug fix: one of the \verb'GrB_mxm' kernels (saxpy4) can hit a
segfault for user-defined types, in the JIT kernels. Caught by Gabe Gomez.
\end{itemize}
\item Mar 1, 2025: version 10.0.0
\begin{itemize}
\item 32/64 bit matrices and vectors: the \verb'GrB_Matrix' and
\verb'GrB_Vector' now exploit 32-bit integers when possible. New
methods added to pass 32-bit integer arrays to/from \verb'GrB_build',
\verb'extract', \verb'assign', \verb'subassign', and
\verb'extractTuples'. New object, the \verb'GxB_Container' added for
fast import/export of matrices/vectors with arbitrary integer content.
\item \verb'GrB_Field': this enum is strongly deprecated, and replaced with
\verb'typedef int GrB_Field'. This is an upward-compatible change to
the API, and will allow the creation of a future mathematical field
object in GraphBLAS. This type should not be used; use an int instead.
It will be replaced in a future version of GraphBLAS.
\item enum parameters: replaced all enum parameters with int, to simplify
future updates to enum parameters, including the \verb'GrB_Field'.
\item \verb'GxB_JIT_ERROR': added in 9.4.x, changed value to avoid conflict
with LAGraph error codes.
\item pack/unpack: these are declared historical; they still work but use
64-bit integers only. Use the new \verb'GxB_Container' methods
instead.
\item \verb'GxB_Matrix_iso' and \verb'GxB_Vector_iso': declared
historical; use \verb'GrB_get' with the new \verb'GxB_ISO' enum.
\item \verb'GxB_Matrix_type', \verb'GxB_Vector_type',
\verb'GxB_Scalar_type': no longer historical;
added back to the user guide.
\item Summary: the API is upward-compatible with 9.4.x, but only after
the user application is recompiled with GraphBLAS v10.0.0.
As a result, the SO version must increase from 9 to 10.
\end{itemize}
\item Feb 20, 2025: version 9.4.5
\begin{itemize}
\item (59) bug fix: the \verb'GxB_NO_INT32' and \verb'GxB_NOT_INT64' flags
in \verb'GB_control.h' did not completely remove some of the INT32 and
INT64 factory kernels. Caught by Erik Welch, NVIDIA.
\item workaround for an AppleClang compiler bug: On the Mac, the
\verb'Source/mask/GB_masker.c' file
triggers a bug in AppleClang 16.0.0 with -O3 in (MacOS 14.6.1 (23G93),
Xcode 16.2, Apple clang version 16.0.0, clang-1600.0.26.6). It also
fails in MacOS 15.2 (Target: arm64-apple-darwin23.6.0). The bug is
triggered by these tests in LAGraph (v1.2 branch, unreleased, Jan 4,
2025):
\begin{verbatim}
39 - LAGraphX_BF (SIGTRAP)
40 - LAGraphX_Coarsen_Matching (Failed)
41 - LAGraphX_FastGraphletTransform (SIGTRAP)
49 - LAGraphX_PageRankGX (SIGTRAP)
54 - LAGraphX_SquareClustering (SIGTRAP)
61 - LAGraphX_msf (Failed)
\end{verbatim}
When using clang, optimization is turned off for this file. This has
no impact on performance since \verb'GB_masker.c' is very simple,
consisting of a single sequence of calls to other methods.
\end{itemize}
\item Feb 17, 2024: version 9.4.4
\begin{itemize}
\item (58) bug fix: semirings with user-defined monoids and the \verb'GrB_ONEB' or
\verb'GxB_PAIR' operators caused a JIT compiler error. Caught by Gabe Gomez.
\item (57) bug fix: GraphBLAS.h header: remove duplicate definitions of
\verb'GxB_MAX_FIRST_*' semirings (incompletely moved to 'historical' section
in 9.4.2).
\end{itemize}
\item Nov 20, 2024: version 9.4.2
\begin{itemize}
\item clarified User Guide: regarding when the hyper-hash is built
\item JIT: reduced JIT kernel encodings
\item (also includes the updates from 9.4.0.beta and 9.4.1.beta listed below).
\end{itemize}
\item Nov 15, 2024: version 9.4.1 (only released as BETA)
\begin{itemize}
\item More JIT kernels: all JIT kernels for \verb'GrB_assign',
\verb'GxB_subassign', \verb'GrB_extract', \verb'GxB_sort'
\verb'GrB_kronecker', the stand-alone mask phase (an internal method that
computes $\bf C \langle M \rangle = Z$), and utilities have been created.
All kernels formerly tagged in the code as \verb'JIT: needed' are now
finished.
\item
removed Factory kernels for: types int8 and uint8, and semirings:
max\_min, max\_plus, max\_times, min\_max, min\_times, plus\_min,
plus\_max,
non-Boolean land/lor/lxor/lxnor, and integer times\_first/second,
to reduce size of compiled library.
JIT kernels will be used instead for these types and semirings.
\item \verb'GxB_IndexBinaryOp': finalized and named as \verb'GxB_*'.
\end{itemize}
\item Oct 15, 2024: version 9.4.0 (only released as BETA)
\begin{itemize}
\item new operator and associated methods:
added the draft \verb'G*B_IndexBinaryOp'.
\item JIT error-handling behavior changed: if a compiler error occurs in
the JIT, \verb'GxB_JIT_ERROR' is now returned. Previously, GraphBLAS
would fall back to a generic method if such an error occurred.
\end{itemize}
\item Aug 12, 2024: version 9.3.1
\begin{itemize}
\item (56) bug fix: wrong type for fgetc return value in JITpackage; leads
to infinite loop on some systems when building GraphBLAS.
\end{itemize}
\item Aug 2, 2024: version 9.3.0
\begin{itemize}
\item code restructuring: Source folder split into many subfolders, and
some files and internal functions renamed. No visible external change.
\item (55) bug fix: \verb'GrB_apply' with user-defined index-unary op and
generic kernel.
\item (54) bug fix: reducing a huge iso full matrix to a scalar resulted in
integer overflow if nrows*ncols was larger than about $2^{60}$.
\item reduced size of compiled library: \verb'int16' and \verb'uint16'
types and operators for FactoryKernels are disabled in
\verb'GB_control.h'. The JIT will always be used instead.
\end{itemize}
\item May 22, 2024: version 9.2.0
\begin{itemize}
\item Added \verb'graphblas_install.m' for a simpler method of compiling
the MATLAB/Octave interface for GraphBLAS.
\item JIT: sanitizing the JIT cache path, better burble for compiler errors.
\item \verb'GrB_get/GrB_set': better handling of concurrent get/set between
different user threads.
\end{itemize}
\item Mar 22, 2024: version 9.1.0
\begin{itemize}
\item minor updates to build system
\item C11 complex type detection: this is now detected and configured by
cmake, instead of using an \verb'#if' ... in the GraphBLAS.h header.
This change was required to port GraphBLAS to the clang-cl compiler
on Windows when it simulates the MSVC compiler. Also added a new
feature (thus the minor version update to 9.1.0):
\verb'GxB_HAVE_COMPLEX*' to
GraphBLAS.h to indicate which kind of complex data types are available
in C11 or MSVC. Contributed by Markus M\"{u}tzel.
\item (53) bug fix: eWiseAdd \verb'C<M>=A+B' when \verb'M', \verb'A',
and \verb'B' are all hypersparse; access to \verb'M' was incorrect
(also affects \verb'C<M>+=T' for any operation, if \verb'M' and
\verb'T' are both hypersparse).
\end{itemize}
\item Mar 1, 2024: version 9.0.3
\begin{itemize}
\item (52) performance bug fix: JIT kernels since v8.3.1 were not compiled
with OpenMP.
\end{itemize}
\item Feb 26, 2024: version 9.0.2
\begin{itemize}
\item GraphBLAS/Makefile \verb"make static" was incorrect.
\end{itemize}
\item Jan 20, 2024: version 9.0.1
\begin{itemize}
\item minor updates to build system
\end{itemize}
\item Version 9.0.0, Jan 10, 2024
\begin{itemize}
\item \verb'GrB_get/GrB_set': new functions from the v2.1 C API.
\item \verb'GrB_Type_new', \verb'GrB_UnaryOp_new',
\verb'GrB_IndexUnaryOp_new': no longer macros, since \verb'GrB_set' can
be used to set the names of the operators. These methods no longer
extract the name, so the default name is now the empty string. This is
because \verb'GrB_get/set' can only set these names once. This is a
non-compatible change of behavior for these 3 methods, so
SuiteSparse:GraphBLAS must become v9.0.0.
\item historical methods: many methods are replaced by \verb'GrB_get' and
\verb'GrB_set'. They remain in SuiteSparse:GraphBLAS but have been
declared historical. Terse prototypes exist in GraphBLAS.h, and any
discussion is removed from the User Guide: \verb'GxB_get',
\verb'GxB_set', and the methods they call, and many more. Use
\verb'GrB_get/set' in place those methods, and for:
\verb'GxB_*type_name', \verb'GxB_*type', \verb'GxB_Monoid_operator',
\verb'GxB_Monoid_identity', \verb'GxB_Monoid_terminal',
\verb'GxB_Semiring_add', \verb'GxB_Semiring_multiply'. Use \newline
\verb'GrB_STORAGE_ORIENTATION_HINT' in place of \verb'GxB_FORMAT'.
\item \verb'hyper_hash': constructed only if the number of non-empty
vectors in a hypersparse matrix is large ($> 1024$, by default).
\item minor updates to build system: \verb'*.pc' files for \verb'pkgconfig'
\end{itemize}
\item Dec 30, 2023: version 8.3.1
\begin{itemize}
\item remove \verb'#undef I' from \verb'GraphBLAS.h', so as not to conflict
with the definition of \verb'I' from \verb'complex.h'.
\item major change to build system: by Markus M\"{u}tzel
\end{itemize}
\item Oct 7, 2023: version 8.2.1
\begin{itemize}
\item (49) bug fix: \verb'GrB_mxm' saxpy4 and saxpy5 had incorrectly handling of
typecasting in v8.0.0 to v8.2.0 (caught by Erik Welch)
\item cross-compiler support: replace \verb'check_c_source_runs' with \verb'_compiles'
for GraphBLAS and SuiteSparse\_config, and remove check for
\verb'getenv("HOME")'.
\item cmake update: add "None" build type, from Antonio Rojas, for Arch Linux
\end{itemize}
\item Version 8.2.0, Sept 8, 2023
\begin{itemize}
\item cmake updates: \verb'SuiteSparse::' namespace by Markus M\"{u}tzel.
\end{itemize}
\item Version 8.0.2, June 16, 2023
\begin{itemize}
\item added \verb'-DJITINIT=option': use \verb'-DJITINIT' to set the
initial state of the \verb'GxB_JIT_C_CONTROL' (4:on, 3:load, 2:run,
1:pause, 0:off). The default is 4 (on) if the JIT is enabled, or 2
(run) if \verb'-DNJIT=1' is set.
\item xxHash: upgraded to latest version as of June 16, 2023
\end{itemize}
\item Version 8.0.1, May 27, 2023
\begin{itemize}
\item (48) bug fix: \verb'GrB_*_nvals'
returned \verb'UINT64_MAX' ('infinity') for a
\verb'GrB_Vector' of size n-by-$2^{60}$; it should return $2^{60}$.
Caught by Erik Welch, NVIDIA.
\item added \verb'GxB_Context_error' and \verb'GxB_Context_wait'
\item \verb'C++': changed complex typedefs for \verb'C++' that
include GraphBLAS.h. Update from Markus M\"{u}tzel.
\end{itemize}
\item Version 8.0.0 (May 18, 2023)
\begin{itemize}
\item version 8: This version is a major SO version increase, since
it removes a few minor user-visible features from
SuiteSparse:GraphBLAS: the \verb'GrB_Descriptor' no longer supports
threading control, and some features of the \verb'GxB_SelectOp' are
removed (see below). Enum values have been changed for compatibility
with the upcoming \verb'GrB_set/get' features in the V2.1 C API.
\item The JIT: GraphBLAS v8.0.0 includes a JIT for the CPU kernels,
which can compile kernels at run-time. Added \verb'GxB_set/get'
options and environment variables to control the JIT. The
\verb'GxB_*Op_new' methods can accept NULL function pointers, if the
strings are provided, valid, and the JIT is enabled.
\item \verb'GxB_Type_new': the size of the type can be given as zero,
in which case the size is determined via a JIT kernel.
\item \verb'GxB_UnaryOp_new', \verb'GxB_BinaryOp_new', and
\verb'GxB_IndexUnaryOp_new': the function pointer can be given as
\verb'NULL', in which case the function is created by the JIT.
\item math kernels: revised for CUDA JIT. More accurate complex
floating-point for Mac OS on Apple Silicon.
\item \verb'Demo/wildtype_demo': change to double so that CPU and GPU
versions compute the same result.
\item \verb'GxB_get': can return malloc/calloc/realloc/free
\item \verb'GxB_Context':
an object for controlling computational resources:
number of OpenMP threads, the chunk factor, and (draft) GPU id.
\item \verb'GrB_Descriptor':
removed ability to control the number of OpenMP threads from the
descriptor (a rarely used feature). Replaced with the
\verb'GxB_Context' object.
\item \verb'GxB_SelectOp': GraphBLAS no longer supports
user-defined \verb'GxB_SelectOps'. Use a \verb'GrB_IndexUnaryOp'
instead. The \verb'GxB_SelectOp_new' and
\verb'GxB_SelectOp_free' functions are removed entirely.
The built-in \verb'GxB_SelectOps', \verb'GxB_Matrix_select',
\verb'GxB_Vector_select', and \verb'GxB_select' still work. However,
the \verb'GxB_EQ_THUNK', \verb'GxB_EQ_ZERO', \verb'GxB_NE_THUNK', and
\verb'GxB_NE_ZERO' operators no longer work on user-defined types,
as they did in v7.4.4 and earlier.
Create a user-defined \verb'GrB_IndexUnaryOp' to compute these
operations instead, and use \verb'GrB_select'.
\item \verb'alternative/Makefile': removed; not compatible with the JIT.
\item \verb'zstd': upgraded to v1.5.5 (Apr 4, 2023)
\end{itemize}
\item Version 7.4.4 (Mar 25, 2023)
\begin{itemize}
\item (47) bug fix: OpenMP atomics require \verb'seq_cst' on the ARM.
Revised \verb'GB_atomics.h' accordingly, and added them for all
architectures (caught by G{\'{a}}bor Sz{\'{a}}rnyas).
\end{itemize}
\item Version 7.4.3 (Jan 20, 2023)
\begin{itemize}
\item debug: turned on in \verb'GrB_Matrix_removeElement' by mistake.
\end{itemize}
\item Version 7.4.2 (Jan 17, 2023)
\begin{itemize}
\item minor change to build system: for SuiteSparse v7.0.0.
\item deprecation notice: in GraphBLAS v8.0.0, the ability to set the
number of threads, and chunk size, in the descriptor will be removed.
It still appears in v7.x, but will be replaced by a Context object
in v8.0.0.
\end{itemize}
\item Version 7.4.1 (Dec 29, 2022)
\begin{itemize}
\item global free pool: disabled. Benefit for single-thread user
applications was modest, and it causes too much contention in a
critical section when the user application is multi-threaded.
\item \verb'GrB_mxm': revised task creation heuristics for
sparse-times-sparse for better performance.
\end{itemize}
\item Version 7.4.0 (Dec 23, 2022)
\begin{itemize}
\item add non-\verb'va_arg' methods: \verb'va_arg'-based \verb'GxB_get/set'
methods are C11 but cause issues for cffi in Python. As a
temporary workaround, new methods have been added that do not use
\verb'va_arg'. The existing \verb'GxB_get/set' methods are not
changed. The new methods are not in the user guide, since all of the
\verb'GxB_get/set' methods will be superceded with \verb'GrB_get/set'
in the v2.1 C API. At that point, all \verb'GxB_get/set' methods will
become historical (kept, not deprecated, but removed from the user
guide).
\end{itemize}
\item Version 7.3.3 (Dec 9, 2022)
\begin{itemize}
\item \verb'stdatomic.h': using \verb'#include <stdatomic.h>' and
\newline
\verb'atomic_compare_exchange_weak'
instead of GCC/clang/icx \verb'__atomic_*' variants.
Added \verb'-latomic' if required.
\item chunk factor for C=A*B (saxpy3 method):
revised for non-builtin-semirings
\end{itemize}
\item Version 7.3.2 (Nov 12, 2022)
\begin{packed_itemize}
\item \verb'cmake_modules': minor revision to build system, to sync
with SuiteSparse v6.0.0
\item Added option \verb'-DNOPENMP=1' to disable OpenMP parallelism.
\end{packed_itemize}
\item Version 7.3.1 (Oct 21, 2022)
\begin{packed_itemize}
\item workaround for a bug in the Microsoft Visual Studio Compiler,
MSC 19.2x (in vs2019).
\end{packed_itemize}
\item Version 7.3.0 (Oct 14, 2022)
\begin{packed_itemize}
\item \verb'GrB_Matrix': changes to the internal data structure
\item minor internal changes: \verb'A->nvals' for sparse/hypersparse
\item more significant changes: added hyper-hash for
hypersparse case, speeds up many operations on hypersparse matrices.
Based on \cite{Green19}.
\item \verb'GxB_unpack_HyperHash' and \verb'GxB_pack_HyperHash':
to pack/unpack the hyper-hash
\item \verb'@GrB' MATLAB/Octave interface: changed license to Apache-2.0.
\item MATLAB library: renamed to \verb'libgraphblas_matlab.so'
\item performance: faster \verb'C=A*B' when using a single thread and
\verb'B' is a sparse vector with many entries.
\end{packed_itemize}
\item Version 7.2.0 (Aug 8, 2022)
\begin{packed_itemize}
\item added ZSTD as a compression option for serialize/deserialize:
Version 1.5.3 by Yann Collet,
\url{https://github.com/facebook/zstd.git}.
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
Included in SuiteSparse:GraphBLAS via its BSD-3-clause license.
The default method is now ZSTD, level 1.
\item \verb'GxB_Matrix_reshape*' added.
\item MATLAB interface: \verb'reshape', \verb'C(:)=A', \verb'C=A(:)' are
faster. Better error messages.
\end{packed_itemize}
\item Version 7.1.2 (July 8, 2022)
\begin{packed_itemize}
\item MATLAB interface: linear indexing added for C(:)=A, C=A(:), and
single-output I=find(C). Faster bandwidth, istriu, istril,
isbanded, isdiag. C(I,J)=A can now grow the size of A.
\end{packed_itemize}
\item Version 7.1.1 (June 3, 2022)
\begin{packed_itemize}
\item minor updates to documentation and error messages
\item MATLAB interface: minor revision of GrB.deserialize
\end{packed_itemize}
\item Version 7.1.0 (May 20, 2022)
\begin{packed_itemize}
\item added cube root: \verb'GxB_CBRT_FP32' and \verb'GxB_CBRT_FP64'
unary operators
\item added \verb'GxB_Matrix_isStoredElement'
and \verb'GxB_Vector_isStoredElement'
\end{packed_itemize}
\item Version 7.0.4 (Apr 25, 2022)
\begin{packed_itemize}
\item (46) bug fix: user-defined type size was incorrectly limited
to 128 bytes. Caught by Erik Welch.
\end{packed_itemize}
\item Version 7.0.3 (Apr 8, 2022)
\begin{packed_itemize}
\item faster transpose when using 2 threads
\end{packed_itemize}
\item Version 7.0.2 (Apr 5, 2022)
\begin{packed_itemize}
\item (45) bug fix: vector iterator was broken for iterating across a
vector in bitmap format. Caught by Erik Welch.
\end{packed_itemize}
\item Version 7.0.1 (Apr 3, 2022)
\begin{packed_itemize}
\item added revised ACM TOMS submission to the Doc folder
\end{packed_itemize}
\item Version 7.0.0 (Apr 2, 2022)
\begin{packed_itemize}
\item (44) spec bug: \verb'GrB_Matrix_diag'
was implemented in v5.2.x and v6.x with the wrong signature.
This fix requires the major release to change, from v6.x to v7.x.
\item (43) performance bug fix for \verb'GrB_mxm':
auto selection for saxpy method (Hash vs Gustavson) revised.
\item \verb'GrB_assign': better performance for \verb'C(i,j)=scalar' and
\verb'C(i,j)+=scalar' when \verb'i' and \verb'j' have length 1 (scalar
assigment with no scalar expansion).
\end{packed_itemize}
\item Version 6.2.5 (Mar 14, 2022)
\begin{packed_itemize}
\item For SuiteSparse v5.11.0.
\end{packed_itemize}
\item Version 6.2.4 (Mar 8, 2022)
\begin{packed_itemize}
\item (42) bug fix: \verb'GrB_mxm' with 0-by-0 iso full matrices.
Caught by Henry Amuasi in the Python
grblas interface, then triaged and isolated by Erik Welch.
\end{packed_itemize}
\item Version 6.2.3 (Mar 5, 2022)
\begin{packed_itemize}
\item minor update to documentation in \verb'GrB.build':
no change to any code
\end{packed_itemize}
\item Version 6.2.2 (Feb 28, 2022)
\begin{packed_itemize}
\item revised output of \verb'GxB_*_sort' to return newly created matrices
C and P as full or bitmap matrices, as appropriate, instead of
sparse/hypersparse, following their sparsity control settings.
\end{packed_itemize}
\item Version 6.2.1 (Feb 14, 2022)
\begin{packed_itemize}
\item (41) bug fix: \verb'GxB_Iterator_get' used \verb'(void *) + size'
arithmetic
\end{packed_itemize}
\item Version 6.2.0 (Feb 14, 2022)
\begin{packed_itemize}
\item added the \verb'GxB_Iterator' object and its methods. See
Section~\ref{iter}.
\item \verb'@GrB' interface: revised sparse-times-full rule for the
conventional semiring (the syntax \verb'C=A*B'), so that
sparse-times-full results in \verb'C' as full,
but hypersparse-times-sparse is not full
(typically sparse or hypersparse).
\end{packed_itemize}
\item Version 6.1.4 (Jan 12, 2022)
\begin{packed_itemize}
\item added Section~\ref{perf} to User Guide: how to get the best
performance out of algorithms based on GraphBLAS.
\item \verb'cpu_features': no longer built as a separate library,
but built directly into \verb'libgraphblas.so' and
\verb'libgraphblas.a'. Added compile-time flags to
optionally disable the use of \verb'cpu_features' completely.
\item Octave 7: port to Apple Silicon (thanks to
G{\'{a}}bor Sz{\'{a}}rnyas).
\item min/max monoids: real case (FP32 and FP64) no longer terminal
\item \verb'@GrB' interface: overloaded \verb'C=A*B' syntax where one
matrix is full always results in a full matrix \verb'C'.
\item Faster \verb'C=A*B' for sparse-times-full and full-times-sparse
for \verb'@GrB' interface.
\end{packed_itemize}
\item Version 6.1.3 (Jan 1, 2022)
\begin{packed_itemize}
\item performance: task creation for \verb'GrB_mxm'
had a minor flaw (results were correct but parallelism suffered).
Performance improvement of up to 10x when nnz(A)<<nnz(B).
\end{packed_itemize}
\item Version 6.1.2 (Dec 31, 2021)
\begin{packed_itemize}
\item performance: revised \verb'swap_rule' in \verb'GrB_mxm', which decides whether
to compute \verb"C=A*B" or \verb"C=(B'*A')'", and variants, resulting in up
to 3x performance gain over v6.1.1 for \verb'GrB_mxm' (observed;
could be higher in other cases).
\end{packed_itemize}
\item Version 6.1.1 (Dec 28, 2021)
\begin{packed_itemize}
\item minor revision to AVX2 and AVX512f selection
\item \verb'cpu_features/Makefile': remove test of \verb'list_cpu_features'
so that the package can be built when cross-compiling
\end{packed_itemize}
\item Versions 6.1.0 (Dec 26, 2021)
\begin{packed_itemize}
\item added \verb'GxB_get' options: compiler name and version.
\item added package: \url{https://github.com/google/cpu_features},
Nov 30, 2021 version.
\item performance: faster \verb'C+=A*B' when \verb'C' is full,
\verb'A' is bitmap/full, and \verb'B' is sparse/hyper. % saxpy5
Faster \verb"C+=A'*B" when
\verb'A' is sparse/hyper, and \verb'B' is bitmap/full. % dot4
\item (40) bug fix: deserialization of iso and empty matrices/vectors was
incorrect
\end{packed_itemize}
\item Versions 6.0.2 and 5.2.2 (Nov 30, 2021)
\begin{packed_itemize}
\item (39) bug fix: \verb'GrB_Matrix_export':
numerical values not properly exported
\end{packed_itemize}
\item Versions 6.0.1 and 5.2.1 (Nov 27, 2021)
\begin{packed_itemize}
\item v6.0.x and v5.2.x (for the same x):
differ only in \verb'GrB_wait', \verb'GrB_Info',
\verb'GrB_SCMP', and \verb'GxB_init'.
\item (38) bug fix: \verb"C+=A'*B" when the accum operator is the same as
the monoid and C is iso-full, and \verb'A' or \verb'B' are hypersparse.
(dot4 method).
\item performance: \verb'GrB_select' with user-defined
\verb'GrB_IndexUnaryOp' about 2x faster.
\item performance: faster \verb'(MIN,MAX)_(FIRSTJ,SECONDI)' semirings
\end{packed_itemize}
\item Version 6.0.0 (Nov 15, 2021)
\begin{packed_itemize}
\item this release contains only a few changes that cause a
break with backward compatibility. It is otherwise identical to v5.2.0.
\item v6.0.0 is fully compliant with the v2.0 C API Specification.
Three changes from the v2.0 C API Spec are not backward compatible
(\verb'GrB_*wait', \verb'GrB_Info', \verb'GrB_SCMP').
\verb'GxB_init' has also changed.
\begin{packed_itemize}
\item \verb'GrB_wait (object, mode)': was \verb'GrB_wait (&object)'.
\item \verb'GrB_Info': changed enum values
\item \verb'GrB_SCMP': removed
\item \verb'GxB_init (mode, malloc, calloc, realloc, free, is_thread_safe)':
the last parameter, \verb'is_thread_safe', is deleted.
The malloc, calloc, realloc, and free functions must be thread-safe.
\end{packed_itemize}
\end{packed_itemize}
\item Version 5.2.0 (Nov 15, 2021)
\begin{packed_itemize}
\item Added for the v2.0 C API Specification: only features that are
backward compatible with SuiteSparse:GraphBLAS v5.x have been
added to v5.2.0:
\begin{packed_itemize}
\item \verb'GrB_Scalar': replaces \verb'GxB_Scalar', \verb'GxB_Scalar_*'
functions renamed GrB
\item \verb'GrB_IndexUnaryOp': new, free, fprint, wait
\item \verb'GrB_select': selection via \verb'GrB_IndexUnaryOp'
\item \verb'GrB_apply': with \verb'GrB_IndexUnaryOp'
\item \verb'GrB_reduce': reduce matrix or vector to \verb'GrB_Scalar'
\item \verb'GrB_assign', \verb'GrB_subassion': with \verb'GrB_Scalar'
input
\item \verb'GrB_*_extractElement_Scalar': get \verb'GrB_Scalar'
from a matrix or vector
\item \verb'GrB*build': when \verb'dup' is \verb'NULL',
duplicates result in an error.
\item \verb'GrB import/export': import/export from/to user-provided
arrays
\item \verb'GrB_EMPTY_OBJECT', \verb'GrB_NOT_IMPLEMENTED': error codes
added
\item \verb'GrB_*_setElement_Scalar': set an entry in a matrix or
vector, from a \verb'GrB_Scalar'
\item \verb'GrB_Matrix_diag': same as
\verb'GxB_Matrix_diag (C,v,k,NULL)'
\item \verb'GrB_*_serialize/deserialize': with compression
\item \verb'GrB_ONEB_T': binary operator, $f(x,y)=1$, the same as
\verb'GxB_PAIR_T'.
\end{packed_itemize}
\item \verb'GxB*import*' and \verb'GxB*export*': now historical.
\item \verb'GxB_select': is now historical; use \verb'GrB_select' instead.
\item \verb'GxB_IGNORE_DUP': special operator for build methods only; if dup
is this operator, then duplicates are ignored (not an error)
\item \verb'GxB_IndexUnaryOp_new': create a named index-unary operator
\item \verb'GxB_BinaryOp_new': create a named binary operator
\item \verb'GxB_UnaryOp_new': create a named unary operator
\item \verb'GxB_Type_new': to create a named type
\item \verb'GxB_Type_name': to query the name of a type
\item added \verb'GxB_*type_name' methods
to query the name of a type as a string.
\item \verb'GxB_Matrix_serialize/deserialize': with compression;
optional descriptor.
\item \verb'GxB_Matrix_sort', \verb'GxB_Vector_sort':
sort a matrix or vector
\item \verb'GxB_eWiseUnion': like \verb'GrB_eWiseAdd' except for how
entries in $\bf A\setminus B$ and $\bf B \setminus A$ are computed.
\item added LZ4/LZ4HC: compression library, \url{http://www.lz4.org} (BSD
2), v1.9.3, Copyright (c) 2011-2016, Yann Collet.
\item MIS and pagerank demos: removed; MIS added to LAGraph/experimental
\item disabled free memory pool if OpenMP not available
\item (37) bug fix: ewise \verb'C=A+B' when all matrices are full,
\verb'GBCOMPACT' not used, but \verb'GB_control.h' disabled the
operator or type. Caught by Roi Lipman, Redis.
\item (36) bug fix: \verb'C<M>=Z' not returning \verb'C'
as iso if \verb'Z 'iso and \verb'C' initially
empty. Caught by Erik Welch, Anaconda.
\item performance improvements: \verb'C=A*B': sparse/hyper times
bitmap/full, and visa versa, including \verb'C += A*B' when \verb'C' is
full.
\end{packed_itemize}
\item Version 5.1.10 (Oct 27, 2021)
\begin{packed_itemize}
\item (35) bug fix: \verb'GB_selector'; \verb'A->plen' and \verb'C->plen'
not updated correctly. Caught by Jeffry Lovitz, Redis.
\end{packed_itemize}
\item Version 5.1.9 (Oct 26, 2021)
\begin{packed_itemize}
\item (34) bug fix: in-place test incorrect for \verb"C+=A'*B" using dot4
\item (33) bug fix: disable free pool if OpenMP not available
\end{packed_itemize}
\item Version 5.1.8 (Oct 5, 2021)
\begin{packed_itemize}
\item (32) bug fix: C=A*B when A is sparse and B is iso and bitmap.
Caught by Mark Blanco, CMU.
\end{packed_itemize}
\item Version 5.1.7 (Aug 23, 2021)
\begin{packed_itemize}
\item (31) bug fix: \verb'GrB_apply', when done in-place and matrix starts
non-iso and becomes iso, gave the wrong iso result.
Caught by Fabian Murariu.
\end{packed_itemize}
\item Version 5.1.6 (Aug 16, 2021)
\begin{packed_itemize}
\item one-line change to \verb'C=A*B': faster symbolic analysis when a
vector \verb'C(:,j)' is dense (for CSC) or \verb'C(i,:)' for CSR.
\end{packed_itemize}
\item Version 5.1.5 (July 15, 2021)
\begin{packed_itemize}
\item submission to ACM Transactions on Mathematical Software as
a Collected Algorithm of the ACM.
\end{packed_itemize}
\item Version 5.1.4 (July 6, 2021)
\begin{packed_itemize}
\item faster Octave interface. Octave v7 or later is required.
\item (30) bug fix: 1-based printing not enabled for pending tuples.
Caught by Will Kimmerer, while working on the Julia interface.
\end{packed_itemize}
\item Version 5.1.3 (July 3, 2021)
\begin{packed_itemize}
\item added \verb'GxB_Matrix_iso' and \verb'GxB_Vector_iso':
to query if a matrix or vector is held as iso-valued
\item (29) bug fix: \verb'Matrix_pack_*R' into a matrix previously held by
column, or \verb'Matrix_pack*C' into a matrix by row, would flip the
dimensions.
Caught by Erik Welch, Anaconda.
\item (28) bug fix: \verb'kron(A,B)' with iso input matrices
\verb'A' and \verb'B' fixed.
Caught by Michel Pelletier, Graphegon.
\item (27) bug fix: v5.1.0 had a wrong version of a file; posted by mistake.
Caught by Michel Pelletier, Graphegon.
\end{packed_itemize}
\item Version 5.1.2 (June 30, 2021)
\begin{packed_itemize}
\item iso matrices added: these are matrices and vectors whose
values in the sparsity pattern are all the same. This is an internal
change to the opaque data structures of the \verb'GrB_Matrix' and
\verb'GrB_Vector' with very little change to the API.
\item added \verb'GxB_Matrix_build_Scalar'
and \verb'GxB_Vector_build_Scalar',
which always build iso matrices and vectors.
\item import/export methods can now import/export iso matrices and vectors.
\item added \verb'GrB.argmin/argmax' to MATLAB/Octave interface
\item added \verb'GxB_*_pack/unpack' methods in place of
import/export.
\item added \verb'GxB_PRINT_1BASED' to the global settings.
\item added \verb'GxB_*_memoryUsage'
\item port to Octave: \verb'gbmake' and \verb'gbtest'
work in Octave7 to build and test
the \verb'@GrB' interface to GraphBLAS. Octave 7.0.0 is required.
\end{packed_itemize}
\item Version 5.0.6 (May 24, 2021)
\begin{packed_itemize}
\item BFS and triangle counting demos removed from GraphBLAS/Demo:
see LAGraph for these algorithms. Eventually, all of GraphBLAS/Demo
will be deleted, once LAGraph includes all the methods included there.
\end{packed_itemize}
\item Version 5.0.5 (May 17, 2021)
\begin{packed_itemize}
\item (26) performance bug fix: reduce-to-vector where \verb'A' is
hypersparse CSR with a transposed descriptor (or CSC with no
transpose), and some cases for \verb'GrB_mxm/mxv/vxm' when computing
\verb'C=A*B' with A hypersparse CSC and \verb'B' bitmap/full (or
\verb'A' bitmap/full and \verb'B' hypersparse CSR), the wrong internal
method was being selected via the auto-selection strategy, resulting in
a significant slowdown in some cases.
\end{packed_itemize}
\item Version 5.0.4 (May 13, 2021)
\begin{packed_itemize}
\item \verb'@GrB' MATLAB/Octave interface: changed license
to GNU General Public License v3.0 or later.
It was licensed under Apache-2.0 in Version 5.0.3 and earlier.
Changed back to Apache-2.0 for Version 7.3.0; see above.
\end{packed_itemize}
\item Version 5.0.3 (May 12, 2021)
\begin{packed_itemize}
\item (25) bug fix: disabling \verb'ANY_PAIR' semirings by editing
\verb'Source/GB_control.h' would cause a segfault if those disabled
semirings were used.
\item demos are no longer built by default
\item (24) bug fix: new functions in v5.0.2 not declared as \verb'extern'
in \verb'GraphBLAS.h'.
\item \verb'GrB_Matrix_reduce_BinaryOp' reinstated from v4.0.3;
same limit on built-in ops that correspond to known monoids.
\end{packed_itemize}
\item Version 5.0.2 (May 5, 2021)
\begin{packed_itemize}
\item (23) bug fix: \verb'GrB_Matrix_apply_BinaryOp1st' and \verb'2nd'
were using the
wrong descriptors for \verb'GrB_INP0' and \verb'GrB_INP1'.
Caught by Erik Welch, Anaconda.
\item memory pool added for faster allocation/free of small blocks
\item \verb'@GrB' interface ported to MATLAB R2021a.
\item \verb'GxB_PRINTF' and \verb'GxB_FLUSH' global options added.
\item \verb'GxB_Matrix_diag': construct a diagonal matrix from a vector
\item \verb'GxB_Vector_diag': extract a diagonal from a matrix
\item \verb'concat/split': methods to concatenate and split matrices.
\item \verb'import/export':
size of arrays now in bytes, not entries. This change
is required for better internal memory management, and it is not
backward compatible with the \verb'GxB*import/export' functions in v4.0.
A new parameter, \verb'is_uniform', has been added to all import/export
methods, which indicates that the matrix values are all the same.
\item (22) bug fix: SIMD vectorization was missing
\verb'reduction(+,task_cnvals)' in
\verb'GB_dense_subassign_06d_template.c'. Caught by Jeff Huang, Texas
A\&M, with his software package for race-condition detection.
\item \verb'GrB_Matrix_reduce_BinaryOp': removed. Use a monoid instead,
with \verb'GrB_reduce' or \verb'GrB_Matrix_reduce_Monoid'.
\end{packed_itemize}
\item Version 4.0.3 (Jan 19, 2021)
\begin{packed_itemize}
\item faster min/max monoids
\item \verb'G=GrB(G)' converts \verb'G' from v3 object to v4
\end{packed_itemize}
\item Version 4.0.2 (Jan 13, 2021)
\begin{packed_itemize}
\item ability to load \verb'*.mat' files saved with the v3 \verb'GrB'
\end{packed_itemize}
\item Version 4.0.1 (Jan 4, 2021)
\begin{packed_itemize}
\item significant performance improvements: compared with v3.3.3,
up to 5x faster in breadth-first-search (using
\verb'LAGraph_bfs_parent2'), and 2x faster in
Betweenness-Centrality (using \verb'LAGraph_bc_batch5').
\item \verb'GrB_wait(void)', with no inputs: removed
\item \verb'GrB_wait(&object)': polymorphic function added
\item \verb'GrB_*_nvals': no longer guarantees completion;
use \verb'GrB_wait(&object)'
or non-polymorphic \verb'GrB_*_wait (&object)' instead
\item \verb'GrB_error': now has two parameters: a string
(\verb'char **') and an object.
\item \verb'GrB_Matrix_reduce_BinaryOp' limited to built-in operators that
correspond to known monoids.
\item \verb'GrB_*_extractTuples': may return indices out of order
\item removed internal features: GBI iterator, slice and hyperslice matrices
\item bitmap/full matrices and vectors added
\item index-based operators and semirings:
\verb'GxB_FIRSTI_INT32' and related ops
\item jumbled matrices: sort left pending, like zombies and pending tuples
\item \verb'GxB_get/set': added \verb'GxB_SPARSITY_*'
(hyper, sparse, bitmap, or full) and \verb'GxB_BITMAP_SWITCH'.
\item \verb'GxB_HYPER': enum renamed to \verb'GxB_HYPER_SWITCH'
\item \verb'GxB*import/export': API modified
\item \verb'GxB_SelectOp': \verb'nrows' and \verb'ncols' removed
from function signature.
\item OpenMP tasking removed from mergesort and replaced with parallel
for loops. Just as fast on Linux/Mac; now the performance ports to
Windows.
\item \verb'GxB_BURBLE' added as a supported feature. This was an
undocumented feature of prior versions.
\item bug fix: \verb'A({lo,hi})=scalar'
\verb'A(lo:hi)=scalar' was OK
\end{packed_itemize}
\item Version 3.3.3 (July 14, 2020).
Bug fix: \verb'w<m>=A*u' with mask non-empty and u empty.
\item Version 3.3.2 (July 3, 2020). Minor changes to build system.
\item Version 3.3.1 (June 30, 2020). Bug fix to \verb'GrB_assign' and
\verb'GxB_subassign' when the assignment is simple (\verb'C=A') but
with typecasting.
\item Version 3.3.0 (June 26, 2020). Compliant with V1.3 of the C API
(except that the polymorphic \verb'GrB_wait(&object)' doesn't appear yet;
it will appear in V4.0).
Added complex types (\verb'GxB_FC32' and \verb'GxB_FC64'), many unary
operators, binary operators, monoids, and semirings. Added bitwise
operators, and their monoids and semirings. Added the predefined monoids
and semirings from the v1.3 specification. \verb'@GrB' interface: added complex
matrices and operators, and changed behavior of integer operations to more
closely match the behavior on built-in integer matrices. The rules for
typecasting large floating point values to integers has changed. The
specific object-based \verb'GrB_Matrix_wait', \verb'GrB_Vector_wait', etc,
functions have been added. The no-argument \verb'GrB_wait()' is
deprecated. Added \verb'GrB_getVersion', \verb'GrB_Matrix_resize',
\verb'GrB_Vector_resize', \verb'GrB_kronecker', \verb'GrB_*_wait', scalar
binding with binary operators for \verb'GrB_apply', \newline
\verb'GrB_Matrix_removeElement', and \verb'GrB_Vector_removeElement'.
\item Version 3.2.0 (Feb 20, 2020). Faster \verb'GrB_mxm', \verb'GrB_mxv', and
\verb'GrB_vxm', and faster operations on dense matrices/vectors. Removed
compile-time user objects (\verb'GxB_*_define'), since these were not
compatible with the faster matrix operations. Added the \verb'ANY' and
\verb'PAIR' operators. Added the predefined descriptors,
\verb'GrB_DESC_*'. Added the structural mask option. Changed default
chunk size to 65,536. \verb'@GrB' interface modified: \verb'GrB.init' is
now optional.
\item Version 3.1.2 (Dec, 2019). Changes to allow SuiteSparse:GraphBLAS
to be compiled with the Microsoft Visual Studio compiler. This compiler
does not support the \verb'_Generic' keyword, so the polymorphic functions
are not available. Use the equivalent non-polymorphic functions instead,
when compiling GraphBLAS with MS Visual Studio. In addition,
variable-length arrays are not supported, so user-defined types are limited
to 128 bytes in size. These changes have no effect if you have an C11
compliant compiler.
\verb'@GrB' interface modified: \verb'GrB.init' is now required.
\item Version 3.1.0 (Oct 1, 2019). \verb'@GrB' interface added. See the
\newline \verb'GraphBLAS/GraphBLAS' folder for details and documentation,
and Section~\ref{octave}.
\item Version 3.0 (July 26, 2019), with OpenMP parallelism.
The version number is increased to 3.0, since
this version is not backward compatible with V2.x. The \verb'GxB_select'
operation changes; the \verb'Thunk' parameter was formerly a
\verb'const void *' pointer, and is now a \verb'GxB_Scalar'. A new parameter
is added to \verb'GxB_SelectOp_new', to define the expected type of
\verb'Thunk'. A new parameter is added to \verb'GxB_init', to specify whether
or not the user-provided memory management functions are thread safe.
The remaining changes add new features, and are upward compatible with V2.x.
The major change is the addition of OpenMP parallelism. This addition has no
effect on the API, except that round-off errors can differ with the number of
threads used, for floating-point types. \verb'GxB_set' can optionally define
the number of threads to use (the default is \verb'omp_get_max_threads'). The
number of threads can also defined globally, and/or in the
\verb'GrB_Descriptor'. The \verb'RDIV' and \verb'RMINUS' operators are added,
which are defined as $f(x,y)=y/x$ and $f(x,y)=y-x$, respectively. Additional
options are added to \verb'GxB_get'.
\item Version 2.3.3 (May 2019): Collected Algorithm of the ACM.
No changes from V2.3.2 other than the documentation.
\item Version 2.3 (Feb 2019) improves the performance of many GraphBLAS
operations, including an early-exit for monoids. These changes have a
significant impact on breadth-first-search (a performance bug was also fixed in
the two BFS \verb'Demo' codes). The matrix and vector import/export functions
were added, in support of the new LAGraph project
(\url{https://github.com/GraphBLAS/LAGraph}, see also Section~\ref{lagraph}).
LAGraph includes a push-pull BFS in GraphBLAS that is faster than two versions
in the \verb'Demo' folder. \verb'GxB_init' was added to allow the memory
manager functions (\verb'malloc', etc) to be specified.
\item
Version 2.2 (Nov 2018)
adds user-defined objects at compile-time, via user \verb'*.m4' files placed in
\verb'GraphBLAS/User', which use the \verb'GxB_*_define' macros
(NOTE: feature removed in v3.2).
The default matrix format is now \verb'GxB_BY_ROW'.
Also added are the \verb'GxB_*print' methods for printing the contents of each
GraphBLAS object (Section~\ref{fprint}). PageRank demos have been added to
the \verb'Demos' folder.
\item
Version 2.1 (Oct 2018) was
a major update with support for new matrix formats
(by row or column, and hypersparse matrices), and colon notation
(\verb'I=begin:end' or \verb'I=begin:inc:end'). Some graph algorithms are more
naturally expressed with matrices stored by row, and this version includes the
new \verb'GxB_BY_ROW' format. The default format in Version 2.1 and
prior versions is by column.
New extensions to GraphBLAS in this version include \verb'GxB_get',
\verb'GxB_set', and \verb'GxB_AxB_METHOD', \verb'GxB_RANGE', \verb'GxB_STRIDE',
and \verb'GxB_BACKWARDS', and their related definitions, described in
Sections~\ref{descriptor},~\ref{options},~and~\ref{colon}.
\item
Version 2.0 (March 2018) addressed changes in the GraphBLAS C API
Specification and added \verb'GxB_kron' and \verb'GxB_resize'.
\item
Version 1.1 (Dec 2017) primarily improved the performance.
\item
Version 1.0 was released on Nov 25, 2017.
\end{itemize}
%-------------------------------------------------------------------------------
\subsection{Regarding historical and deprecated functions and symbols}
%-------------------------------------------------------------------------------
When a \verb'GxB*' function or symbol is added to the C API Specification with
a \verb'GrB*' name, the new \verb'GrB*' name should be used instead, if
possible. However, the old \verb'GxB*' name will be kept as long as possible
for historical reasons. Historical functions and symbols will not always be
documented here in the SuiteSparse:GraphBLAS User Guide, but they will be kept
in \verb'GraphbBLAS.h' and kept in good working order in the library.
Historical functions and symbols would only be removed in the very unlikely
case that they cause a serious conflict with future methods.
The following methods have been fully deprecated and removed. The older
versions of \verb'GrB_wait' and \verb'GrB_error' methods have been removed
since they are incompatible with the latest versions, per the C API
Specification. The \verb'GxB_SelectOp_new' and \verb'GxB_SelectOp_free'
methods have been removed, and some of the built-in operators have been been
revised (specifically, the \verb'GxB_EQ_THUNK', \verb'GxB_EQ_ZERO',
\verb'GxB_NE_THUNK', and \verb'GxB_NE_ZERO' operators no longer work on
user-defined types).
|