1. SuperLU 3.0 (released October 15, 2003)
- Added "options" input argument for the driver routines. This structure
contains all the parameter settings.
You can call the routine set_default_options()
to set the default values.
- Added "stat" output argument for the driver routines. This structure
contains all the statistics collected at run-time.
- The driver routines xGSSV/xGSSVX have new interfaces reflecting the
above changes.
See an example EXAMPLE/dlinsol.c
- Added more examples in EXAMPLE/ directory. See README in that directory.
- Added a "symmetric mode" which gives better performance when the
matrix is or diagonally heavy, or symmetric and/or positive definite,
or nearly so. In this mode, the algorithm attempts to select pivots
on the diagonal.
See an example in EXAMPLE/dlinsol1.c
- Better Fortran interface. See FORTRAN/ directory, and README in
that directory.
- 06/14/05 :
  fixed a bug in the complex drivers sgssvx/zgssvx when
the input matrix is stored in compressed row format.
- 08/01/05 :
- Prefixed the header files by "slu_".
- Fixed a memory leak in get_perm_c() when bnz=0.
- Changed "abs" to "fabs" in izmax1.
- Upgraded COLAMD to the latest version (2.3).
- 01/02/06 :
- Changed the argument of SUPERLU_MALLOC from "int" to "size_t".
Otherwise the computation of the argument to SUPERLU_MALLOC
may cause 32-bit integer overflow.
- In TESTING/[cdsz]drive.c, moved the forward declaration of the
prototype to the top of the file before main().
- Used standard name for library archive: libsuperlu_3.0.a.
2. SuperLU 3.1 (released August 1, 2008)
- Remove recursive DFS for postordering elimination tree in
sp_coletree.c
(The nonrecursive routine nr_etdfs() was contributed by Cedric Doucet, CEDRAT Group, Meylan, France.)
- Make supermatrix.h the same for all three libraries
- Include an on-line HTML documentation for the source code
- Bug fixes:
- corrected backward error BERR formula when a component of the
RHS and the residual are exactly zero
- change parameter "delta" to genmmd() from 1 to 0 in get_perm_c
- remove "static" declaration in EXAMPLE/xlinsolx*.c
3. SuperLU 4.0 (released June 30, 2009)
- Include threshold-based incomplete factorization (ILU)
- Removed the static global variables so that it is thread-safe.
4. SuperLU 4.1 (released November 25, 2010)
- Make superlu_options_t{} structure and enum constants the same for
both superlu & superlu_dist.
- Replace qsort by "quick select" (qselect) in ILU's secondary dropping.
- Replace mc64ad.f by mc64ad.c using f2c.
- Bug fixes, including:
- ilu_sdrop_row.c.
- xgsisx.c, so that when mc64 permutation is used in ILU,
the right-hand side is permuted properly.
- Add parameter #7 in sp_ienv(), setting as the maxsuper for
ILU code (smaller than parameter #3).
- Update Users Guide.
- Update doxygen code documentation.
5. SuperLU 4.2 (released August 25, 2011)
- Fix a bug in ILU driver routine dgsisx.c, so that on return, the
initial row permutation is combined with perm_r[] from partial pivoting.
- Modify 2 ILU examples: EXAMPLE/ditersol.c, EXAMPLE/ditersol1.c
- Update superlu_timer.c
6. SuperLU 5.0 (released July 26, 2015)
- Modified for thread-safety
- Remove 'static' variable 'Glu' in *gstrf.c, instead, pass it as an argument.
- dlacon.c --> dlacon2.c, replace 'static' variables used for
reverse communication by an array of size 3, passed as argument.
- Replace dlamch.c by dmach.c (C99 standard, table lookup in float.h), no 'static' variables.
6. SuperLU 5.1 (released December 3, 2015)
- Rename many routines to avoid name conflicts with other libraries.
- Allow real and complex to be linked together.
- Fix a bug in iterative refinement routine xGSRFS(),
related to complex trans=CONJ case.
7. SuperLU 5.2.0 (released April 8, 2016)
- First xSDK release, added copyright notice in each file.
8. SuperLU 5.2.1 (May 22, 2016)
- Update License.txt to include mc64 license
- MATLAB/, remove nonfree code spypart.m, time.m
- SRC/, use GNUInstallDirs module to Define GNU standard installation directories
- Add macro-defined version string in SRC/slu_util.h
9. SuperLU 5.2.2 (October 17, 2020)
- Provide pkg-config and superluConfig.cmake
- Remove m library on Windows
- Include user guide ug.pdf in tarball
- Minor fixes
10. SuperLU 5.3.0 (September 29, 2021)
- Add CI with GitHub Actions
- Remove warnings; fix a bug in xgsisx.c (mc64 & equil).
- CBLAS/ cleanup
- Update supermatrix.h and superlu_enum_const.h to the new ones in superlu_dist
11. SuperLU 6.0.0 (April 5, 2023)
- Add 64-bit indexing support, with mixed int and int64_t types.
Use cmake definition to install: -DXSDK_INDEX_SIZE=64
- Add METIS ordering option: In code, set: options->ColPerm = METIS_ATA;
- 09/10/07 :
- Included support for complex data types.
(now has four types: single and double precision / real and complex.)
- Included OpenMP, in addition to POSIX threads.
- Removed an explicit recursion in a subroutine, which often causes
stack overflow for large problems.
- A number of bug fixes.
- 01/15/08 :
- enable detailed profiling by compiling with -DPROFILE.
- a number of bug fixes.
- 12/12/12 :
- add comments in various MAKE_INC/make.inc -- NOOPTS needs to be
defined as C compiler's no optimization level, to prevent
optimization of some routines.
- bug fix in EXAMPLE/pxlinsolx.c
- Fixed a race condition bug in the OpenMP version.
- Fixed a char string bug in TESTING/ drivers.
- Updates to work on Windows.
- Fixed bugs in "Symmetric Mode".
- Update to use latest COLAMD from SuiteSparse.
- Replace a static PTHREAD_MUTEX_INITIALIZER by call to pthread_mutex_init().
- Suppress unnessary printing.
- Add {c,z}matvec2() routines in {c,z}myblas2.c
- 03/15/03 :
  Included the distributed input interface
- The driver routine for the distributed interface is pdgssvx()
- The driver routine for the global interface is pdgssvx_ABglobal()
- 02/23/05 :   Improved the time of the redistribution routines.
- 08/01/05 :
- In pdgsrfs_ABXglobal.c / pzgsrfs_ABXglobal.c, put the "static"
function prototypes at file scope.
- Fixed a memory leak in get_perm_c() when bnz=0.
- Fixed a memory leak in superlu_grid.c:
added a call MPI_Group_free( &superlu_grp ).
- Removed COLAMD ordering option.
- 01/02/06:
- Added prototypes to the BLAS routines, in superlu_ddefs.h/superlu_zdefs.h.
- CBLAS/ directory: made a symbolic link Cnames.h -> ../SRC/Cnames.h
- Fixed memory leaks related to MPI, in supelu_grid.c
- added MPI_Group_free(&mpi_base_group);
- added MPI_Type_free( &SuperLU_MPI_DOUBLE_COMPLEX );
- Added "slamch" in Cnames.h.
- Use standard name for library archive: libsuperlu_dist_2.0.a.
- Restricted the length of Fortran names (in FORTRAN/ directory)
not exceeding 31 characters.
2. SuperLU_DIST 2.1 (released November 1, 2007)
- 11/01/07 :
- Included parallel symbolic factorization, which depends on the
ParMeTiS parallel ordering code.
To use this, you need to set one field in the "options" structure as:
- options.ParSymbFact = YES;
- Corrected backward error BERR formula when a component of the RHS
and the residual are exactly zero.
- Made "supermatrix.h" identical for serial SuperLU, SuperLU_MT,
and SuperLU_DIST.
- Fixed a memory leak of the equilibration factors R/C, when Equil
and SamePattern_SameRowPerm are set at the same time.
3. SuperLU_DIST 2.2 (released February 20, 2008)
- 02/20/08 :
- Fixed a number of memory leaks and other bugs related to parallel
symbolic factorization.
- Updated files in SRC/ directory:
- superlu_defs.h
- psymbfact.c
- get_perm_c_parmetis.c
- pdgssvx.c, pzgssvx.c
- pdsymbfact_distdata.c, pzsymbfact_distdata.c
4. SuperLU_DIST 2.3 (October 15, 2008)
- Improved panel factorization: 20-25% faster overall.
- Improved triangular solve: 60-80% faster.
- Updated the Cnames.h with BLAS name mangling [UPCASE].
- Included an on-line HTML documentation for the source code.
- Fixed a few bugs.
- No change of calling sequences.
- Fixed a few bugs related to 64-bit long long int. (04/04/10)
5. SuperLU_DIST 2.4 (June 9, 2010)
- Updated several headers which are used by a new hybrid solver.
- No change of calling sequences.
6. SuperLU_DIST 2.5 (November 25, 2010)
- Make superlu_options_t{} structure and enum constants the same for
both superlu & superlu_dist.
- Update several header files which are needed by a new hybrid solver
PDSLin: superlu_defs.h, superlu_ddefs.h.
- Replace mc64ad.f by mc64ad.c using f2c.
- Update Fortran90 interface to handle 64-bit integers properly.
- Update Users Guide.
- Update doxygen code documentation.
7. SuperLU_DIST 3.0 (October 18, 2011)
- Use better task scheduling strategy for LU factorization,
which resulted in 2-3x faster than V2.5, especially when using
large number of processors.
- Fixed a bug with METIS(A'+A), when the input A is diagonal matrix.
- Add a few options in options_t {...} structure.
- Rename enum constants SINGLE, DOUBLE, EXTRA to SLU_SINGLE,
SLU_DOUBLE, SLU_EXTRA, to avoid name clash in Windows.
- Update Users Guide.
- Update doxygen code documentation.
8. SuperLU_DIST 3.1 (May 20, 2012)
- Update interface to (par)metis to be compatible with new 64-bit ParMetis 4.0.2.
- Fix a bug in the factorization routine of V3.0 when using 64-bit integer.
9. SuperLU_DIST 3.2 (Oct. 24, 2012)
- Fix a bug in look-ahead factorization.
- Allow three orderings: PARMETIS, NATURAL, MY_PERMC when the user
chooses ParSymbFact = YES.
- Fortran90 wrapper for "double complex" datatype.
10. SuperLU_DIST 3.3 (March 31, 2013)
- Fix a bug related to MPI tag numbering in the look-ahead factorization.
(The bug may cause deadlock or wrong answer.)
- Use own quick-sort routine (#define ISORT); work-around qsort() bug on Mac.
11. SuperLU_DIST 4.0 (October 1, 2014)
- Include support for OpenMP and GPU (CUDA).
- bug fixes.
12. SuperLU_DIST 4.1 (July 17, 2015)
- Piyush fixed some bugs in xSchCompUpt-2Ddynamic.c:
- array access out of bound.
- printing of 64 bit integer.
- Patches from Satish Balay. (March 14, and May 22, 2015)
13. SuperLU_DIST 4.2 (September 25, 2015)
- replace xLAMCH by xMACH, using C99 standard.
14. SuperLU_DIST 4.3 (December 31, 2015)
- Fix a bug in parallel symbolic factorization, related to dense separator.
- Resolve name conflicts with serial SuperLU and LAPACK.
- Driver routines return proper INFO error flag, instead of exiting.
15. SuperLU_DIST 5.0.0 (April 8, 2016)
- Cleaned up many valgrind reported memory errors, especially for
the buffers used by MPI.
- First xSDK release, added copyright notice in each file.
16. SuperLU_DIST 5.1.0 (May 15, 2016)
- Add p?GetDiagU() routines to extract the diagonal entries of the
U factor. This can be useful for computing the determinant
of matrix A.
17. SuperLU_DIST 5.1.1 (October 4, 2016)
- Fix a bug in calculating the size of U panel buffer.
- Some optimizations in L block search in dlook_ahead_update.c, and
using parallel regions with omp for loop in dSchCompUdt-2Ddynamic.c
18. SuperLU_DIST 5.1.3 (December 31, 2016)
- Bug fix for repeated factorization using SamePattern or DOFACT.
- In FORTRAN/, modified superlu_options_t to use struct superlu_dist_options_t.
- Corrected detailed timings in Schur update: Gather, GEMM, Scatter.
19. SuperLU_DIST 5.2.0 (September 30, 2017)
- Performed a number of optimizations for the factorization routines,
targeted at the Intel KNL manycore node. The optimizations
include aggregated larger GEMM calls, vectorized scatter operations.
For best performance, should like with a multithreaded BLAS library..
- Include a new SRC/superlu_dist_config.h, which contains the important
CPP defs used when the library was build.
- Remove USUB and LSUB memory type defs in psymbfact.h, because they are
already defined in superlu_enum_const.h.
20. SuperLU_DIST 5.2.2 (October 29, 2017)
- Add a query function superlu_dist_GetVersionNumber.
- Update top-level Makefile to compile library first, then install.
- Tested and fixed some issues with 64-bit index size.
21. SuperLU_DIST 5.3.0 (January 28, 2018)
- Add Windows support.
- Allow superlu_dist to build without (Par)Metis.
- Support building shared and static libraries simultaneously.
- Redefine MemType_t in superlu_enum_consts.h, so that USUB=0, LSUB=1.
This is required in psymbfact.c.
22. SuperLU_DIST 5.4.0 (June 1, 2018)
- Incorporate a parallel approximate max-weight matching as
numerical pre-pivoting.
- options.LargeDiag_MC64 matches the old LargeDiag.
- options.LargeDiag_AWPM is the new parallel code (Approximate Weight
Bipartite Matching).
- Fixed bugs associated with static scheduling and look-ahead,
which caused deadlock for certain process grid.
23. SuperLU_DIST 6.0.0 (September 18, 2018)
- Improved strong scaling for the triangular solve -- up to 4x faster
than the Version 5.x on 4000+ cores.
- Add several utility routines in dutil_dist.c, per request from SUNDIALS.
- Change "long long int" to int64_t (C99 standard);
include stdint.h.
24. SuperLU_DIST 6.1.0 (December 8, 2018)
- Improved OpenMP threading performance in triangular solve.
- Bug fix in factorization: bigV memory size is insufficient.
- Add declarations of "full", "gemm_timer", "scatter_timer" in
xSchCompUdt-cuda.c
- Fixed couple of bugs in triangular solve:
- In repeated factorization options, diagonal block need be re-inverted.
- Added new trisolve features in pxdrive_ABglobal (modified xdistribute.c).
- In EXAMPLE/ drivers, change MPI_init() to MPI_init_thread().
25. SuperLU_DIST 6.1.1 (February 8, 2019) BugFix patch
- For SUNDIALS, remove "clone" in xCopy_CompRowLoc_matrix.
- In zscatter.c and sscatter.c when ACC=GPU is enabled, sp_ienv() is
corrected to sp_ienv_dist().
- Unused arguments Urbs2 and send_req cause crashes on Windows.
- log_memory() in pxgstrs causes overflow for multiple solves.
- Merge pull request #39 from bavier/master: Replace deprecated MPI_Attr_get by MPI_Comm_get_attr.
26. SuperLU_DIST 6.2.0 (November 12, 2019)
- Use cmake's FortranCInterface module to automatically handle Fortran-C name mangling.
Create a new file superlu_FCnames.h.
- Add initialization of current_buffer and peak_buffer in PStatInit().
- Add LAPACK name {d,z}trtri in superlu_FCnames.h.
- Update superlu_dist.pc.in
- Merge pull request #41 from tristan0x/bug/pkgconfig-libdir
27. SuperLU_DIST 6.3.0 (February 27, 2020)
- Redefine several structures as precision-dependent, so that both real
and complex codes can be compiled at the same time.
- localLU_t -> dlocalLU_t, zlocalLU_t
- LUstruct_t -> dLUstruct_t, zLUstruct_t
- SOLVEstruct_t -> dSOLVEstruct_t, zSOLVEstruct_t
- ScalePermstruct_t -> dScalePermstruct_t, zScalePermstruct_t
- Clean up some valgrind errors.
- PStatInit(): add stat->gpu_buffer = 0.0; (reported by Hong Zhang 2/18/20)
- A number of fixes for GPU code, Dec. 2019 - Jan. 2020
- gemm_division_cpu_gpu()
- dSchCompUdt-cuda.c
- Add a driver pddrive_spawn.c in order to use GPTune.
- Fix a problem in testing code related to SamePattern_SameRowPerm.
28. SuperLU_DIST 6.3.1 (April 2, 2020) BugFix patch
- update interface to CombBLAS, include both real and complex.
- update FORTRAN/ wrapper to include CMakeLists.txt file.
29. SuperLU_DIST 6.4.0 (October 23, 2020) MINOR update
- Improved OpenMP performance in pxgstrs.c, removed threadprivate variables.
- Add Fortran interface file for name mangling; XSDK_ENABLE_Fortran=FALSE.
- Add CUDA build in CMakeLists.txt.
- Use MPI_C_DOUBLE_COMPLEX type in MPI communication,
instead of old way of using a derived datatype.
30. SuperLU_DIST 7.0.0 (May 12, 2021) Version-7
- Add communication-avoiding 3D sparse LU factorization algorithm
31. SuperLU_DIST 7.1.0 (October 5, 2021) Version 7.1.0
- Much improved user interface for the 3D algorithm framework:
- Support uneven block row partition of user matrices {A,B}
- Allow separate calls to Factorization and Solve routines
- For GPU code, allow OpenMP to be disabled
- Resolved some issues in the complex code using OpenMP, related to 'omp simd' pragma
32. SuperLU_DIST 7.2.0 (December 12, 2021) Version 7.2.0
- Remove cub/ dependency, update xsuperlu_gpu.cu files:
- Move routines dnextpow2() and incScan() into precision-independent file superlu_gpu_utils.cu
- Remove the erroneous free() in xfree_LUstruct_gpu() routine.
- Update ComBLAS interface:
- Add set(CMAKE_CXX_STANDARD 14) for CombBLAS
- Pass SuperLU's communicator to CombBLAS constructor.
- Set default fortran format to free and preproess all files in MakeLists.txt.
33. SuperLU_DIST 8.0.0 (May 22, 2022) Version 8.0.0
https://github.com/xiaoyeli/superlu_dist/releases/tag/v8.0.0
34. SuperLU_DIST 8.1.0 (July 05, 2022) MINOR update
https://github.com/xiaoyeli/superlu_dist/releases/tag/v8.1.0