Releases: DrTimothyAldenDavis/GraphBLAS
Releases · DrTimothyAldenDavis/GraphBLAS
v8.2.0 (Sept 15, 2023)
Sept 8, 2023: version 8.2.0
* cmake updates: SuiteSparse:: namespace by Markus Muetzel
* GB_VLA_MAXSIZE: increased to 1024; only affects compilers not
supporting variable-length arrays (MSVC)
v8.0.2 (June 29, 2023)
Version 8.0.2, June 16, 2023
* added -DJITINIT=option: use -DJITINIT to set the initial state of
the GxB_JIT_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 -DNJIT=1 is set.
v8.0.1 (May 27, 2023)
Version 8.0.1, May 27, 2023
* (48) bug fix: GrB_*_nvals returned UINT64_MAX ('infinity') for a
GrB_Vector of size n-by-2^60; it should return 2^60.
Caught by Erik Welch, NVIDIA.
* added GxB_Context_error and GxB_Context_wait
* C++: changed complex typedefs for C++ that #include GraphBLAS.h;
update from Markus Muetzel
v8.0.0 (May 18, 2023)
Version 8.0.0, May 18, 2023
* version 8: This version is a major SO version increase, since
it removes a few minor user-visible features from SuiteSparse:GraphBLAS:
the GrB_Descriptor no longer supports threading control, and some
features of the GxB_SelectOp are removed (see below). Enum values have
been changed for compatibility with the upcoming GrB_set/get features
in the V2.1 C API.
* The JIT: GraphBLAS v8.0.0 now includes a JIT for the CPU kernels, which
can compile kernels at run time. Added GxB_set/get options and
environment variables to control the JIT. The GxB_*Op_new methods can
accept NULL function pointers, if the strings are provided and valid.
* GxB_Type_new: the size of the type can be given as zero,
in which case the size is determined via a JIT kernel.
* GxB_UnaryOp_new, GxB_BinaryOp_new, and GxB_IndexUnaryOp_new: the function
pointer can be given as NULL, in which case the function is created by
the JIT.
* math kernels: revised for CUDA JIT. More accurate complex
floating-point for Mac OS on Apple Silicon.
* Demo/wildtype_demo: change to double so that CPU and GPU versions compute
the same result.
* GxB_get: can return malloc/calloc/realloc/free functions
* GxB_Context: an object for controlling computational resources:
# of OpenMP threads, the chunk factor, and (draft) GPU id.
* GrB_Descriptor: removed ability to control # of OpenMP threads from the
descriptor (a rarely used feature). Replaced with the GxB_Context
object.
* GxB_SelectOp: GraphBLAS no longer supports user-defined GxB_SelectOps.
Use a GrB_IndexUnaryOp instead. The GxB_SelectOp_new and
GxB_SelectOp_free functions are removed entirely. The built-in
GxB_SelectOps, GxB_Matrix_select, GxB_Vector_select, and GxB_select
still work. However, the GxB_EQ_THUNK, GxB_EQ_ZERO, GxB_NE_THUNK, and
GxB_NE_ZERO operators no longer work on user-defined types, as they did
in v7.4.4 and earlier. Create a user-defined GrB_IndexUnaryOp to
compute these operations instead, and use GrB_select.
* alternative/Makefile: removed; incompatible with the JIT
* zstd: upgraded to v1.5.5 (Apr 4, 2023)
v7.4.4 (Mar 25, 2023)
Version 7.4.4, Mar 25, 2023
* (47) bug fix: OpenMP atomics require seq_cst on the ARM.
Revised GB_atomics.h accordingly, and added them for all
architectures (caught by Gabor Szarnyas).
This version will appear as the ACM Collected Algorithm 10xx for this paper: https://dl.acm.org/doi/10.1145/3577195 .
v7.4.3 (Jan 20, 2023)
Version 7.4.3, Jan 20, 2023
* debug: turned on in GrB_Matrix_removeElement by mistake.
v7.4.2 (Jan 17, 2023)
Version 7.4.2, Jan 17, 2023
* minor change to build system: for SuiteSparse v7.0.0
* deprecation notice: in GraphBLAS v8.0.0, the ability to set the
# 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.
This version appears in SuiteSparse v7.0.0 as well.
v7.4.1 (Jan 9, 2023)
Version 7.4.1, Jan 9, 2023
* 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.
* GrB_mxm: revised task creation heuristics for sparse-times-sparse for
better performance. "chunk" and "very_costly" had been tuned in v7.3.x
for sparse-times-dense but this slowed down sparse-times-sparse. The
new heuristic keeps the chunk & very_costly parameters for
sparse-times-dense but restores the prior values for
sparse-times-sparse from v7.2.0 (Aug 8, 2022). See
Source/GB_AxB_saxpy3_slice_balanced.c.
v7.4.0 (Dec 23, 2022)
Version 7.4.0, Dec 23, 2022
* added non-va_arg methods: va_arg-based GxB_get/set methods are ANSI C11
but cause issues for cffi in Python. As a temporary workaround, new
methods have been added that do not use va_arg. The existing
GxB_get/set methods are not changed. The new methods are not in the
user guide, since all of the GxB_get/set methods will be superceded
with GrB_get/set in the v2.1 C API. At that point, all GxB_get/set
methods will become historical (kept, not deprecated, but removed from
the user guide).
v7.3.3 (Dec 9, 2022)
Version 7.3.3, Dec 9, 2022
* minor change to build system
* stdatomic.h: using #include <stdatomic.h> and atomic_compare_exchange_weak
instead of GCC/clang/icx __atomic_* variants.
Added -latomic if required.
* chunk factor for C=A*B (saxpy3 method): revised for non-builtin-semirings