Skip to content

Commit

Permalink
Merge pull request #778 from DrTimothyAldenDavis/dev2
Browse files Browse the repository at this point in the history
SuiteSparse 7.7.0
  • Loading branch information
DrTimothyAldenDavis authored Mar 22, 2024
2 parents 9fc13e0 + f81b20e commit ca264af
Show file tree
Hide file tree
Showing 562 changed files with 66,640 additions and 26,758 deletions.
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: 2
updates:

- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
6 changes: 3 additions & 3 deletions .github/workflows/build-arch-emu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
run: lscpu

- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# shell: bash

- name: install dependencies
Expand Down Expand Up @@ -94,7 +94,7 @@ jobs:
- name: restore ccache
# setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
# location of the ccache of the chroot in the root file system
path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache
Expand Down Expand Up @@ -164,7 +164,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down
33 changes: 22 additions & 11 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ jobs:
run: lscpu

- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: install dependencies
env:
Expand All @@ -115,7 +115,7 @@ jobs:
- name: restore ccache
# setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ~/.ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -192,7 +192,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: ~/.ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -298,8 +298,18 @@ jobs:
# Allow other runners in the matrix to continue if some fail
fail-fast: false

# CLANG32 is broken, as of Mar 21, 2024. The stable branch CI also fails
# the same way, even though it succeeded on Mar 2, with the same
# SuiteSparse 7.6.1 and same workflow file. Between that time, clang and
# openmp were upgraded. clang-openmp went from 17.0.6-1 to 18.1.1-1, and
# clang itself went from 17.0.6-7 to 18.1.1-3. Nothing else changed, so
# it must be a problem with the github runner (changed from 2.313.0 to
# 2.314.1). So for now, CLANG32 is excluded from this CI test.

matrix:
msystem: [MINGW64, MINGW32, CLANG64, CLANG32]
# CLANG32 disabled for now:
# msystem: [MINGW64, MINGW32, CLANG64, CLANG32]
msystem: [MINGW64, MINGW32, CLANG64]
include:
- msystem: MINGW64
target-prefix: mingw-w64-x86_64
Expand All @@ -310,10 +320,11 @@ jobs:
- msystem: CLANG64
target-prefix: mingw-w64-clang-x86_64
f77-package: mingw-w64-clang-x86_64-fc
- msystem: CLANG32
target-prefix: mingw-w64-clang-i686
# There's no Fortran compiler for this environment.
f77-package: mingw-w64-clang-i686-cc
# CLANG32 disabled for now:
# - msystem: CLANG32
# target-prefix: mingw-w64-clang-i686
# # There's no Fortran compiler for this environment.
# f77-package: mingw-w64-clang-i686-cc

env:
CHERE_INVOKING: 1
Expand Down Expand Up @@ -348,7 +359,7 @@ jobs:
msystem: ${{ matrix.msystem }}

- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: prepare ccache
# create key with human readable timestamp
Expand All @@ -360,7 +371,7 @@ jobs:
- name: restore ccache
# Setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ${{ steps.ccache-prepare.outputs.ccachedir }}
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -425,7 +436,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: ${{ steps.ccache-prepare.outputs.ccachedir }}
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
sysctl machdep
- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: install dependencies
# Homebrew's Python conflicts with the Python that comes pre-installed
Expand All @@ -61,7 +61,7 @@ jobs:
- name: restore ccache
# setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: /Users/runner/Library/Caches/ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -192,7 +192,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: /Users/runner/Library/Caches/ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down
59 changes: 44 additions & 15 deletions .github/workflows/root-cmakelists.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
run: lscpu

- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: install dependencies
env:
Expand All @@ -101,7 +101,7 @@ jobs:
- name: restore ccache
# setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ~/.ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -135,6 +135,22 @@ jobs:
ccache -s
echo "/usr/lib/ccache" >> $GITHUB_PATH
- name: check auto-dependency resolution
# no need to check this with all runners. One is enough.
if: ${{ matrix.cc == 'gcc' && matrix.cuda == 'without' }}
run: |
mkdir -p ${GITHUB_WORKSPACE}/build-dep && cd ${GITHUB_WORKSPACE}/build-dep
IFS=':' read -r -a libs <<< "${INSTALLED_LIBS}"
for lib in "${libs[@]}"; do
printf "::group:: \033[0;32m==>\033[0m Configuring to build only \033[0;32m${lib}\033[0m\n"
cmake --fresh \
-DCMAKE_BUILD_TYPE="Release" \
-DBLA_VENDOR="OpenBLAS" \
-DSUITESPARSE_ENABLE_PROJECTS="${lib,,}" \
..
echo "::endgroup::"
done
- name: configure
run: |
mkdir -p ${GITHUB_WORKSPACE}/build && cd ${GITHUB_WORKSPACE}/build
Expand Down Expand Up @@ -174,7 +190,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building.
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: ~/.ccache
key: ${{ steps.ccache-prepare.outputs.key }}
Expand Down Expand Up @@ -273,7 +289,7 @@ jobs:
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
runs-on: windows-latest

name: msvc (${{ matrix.openmp }} OpenMP ${{ matrix.cuda }} CUDA, ${{ matrix.link }})
name: msvc (${{ matrix.cc }} ${{ matrix.openmp }} OpenMP ${{ matrix.cuda }} CUDA, ${{ matrix.link }})

defaults:
run:
Expand All @@ -288,6 +304,7 @@ jobs:
openmp: [with, without]
cuda: [without]
link: [both]
cc: [cl]
include:
- openmp: without
openmp-cmake-flags: "-DSUITESPARSE_USE_OPENMP=OFF"
Expand All @@ -297,6 +314,7 @@ jobs:
-DSUITESPARSE_USE_CUDA=ON
-DCMAKE_CUDA_COMPILER_LAUNCHER="ccache"
link: both
cc: cl
- openmp: with
cuda: with
cuda-cmake-flags:
Expand All @@ -306,6 +324,11 @@ jobs:
link-cmake-flags:
-DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
cc: cl
- openmp: with
cuda: without
link: both
cc: clang-cl

env:
CHERE_INVOKING: 1
Expand All @@ -317,15 +340,15 @@ jobs:
Get-CIMInstance -Class Win32_Processor | Select-Object -Property Name
- name: checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- uses: conda-incubator/setup-miniconda@v2
- uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true

- name: cache conda packages
id: conda-cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: C:/Miniconda/envs/test
key: conda:msvc
Expand Down Expand Up @@ -361,7 +384,7 @@ jobs:
msystem: UCRT64

- uses: Jimver/[email protected].11
- uses: Jimver/[email protected].14
name: install CUDA toolkit
if: matrix.cuda == 'with'
id: cuda-toolkit
Expand Down Expand Up @@ -401,18 +424,18 @@ jobs:
shell: msys2 {0}
run: |
echo "ccachedir=$(cygpath -m $(${CCACHE} -k cache_dir))" >> $GITHUB_OUTPUT
echo "key=ccache:msvc:root:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT
echo "key=ccache:msvc:root:${{ matrix.cc }}:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT
- name: restore ccache
# Setup the GitHub cache used to maintain the ccache from one job to the next
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ${{ steps.ccache-prepare.outputs.ccachedir }}
key: ${{ steps.ccache-prepare.outputs.key }}
# Prefer caches from the same branch. Fall back to caches from the dev branch.
restore-keys: |
ccache:msvc:root:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:${{ github.ref }}
ccache:msvc:root:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:
ccache:msvc:root:${{ matrix.cc }}:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:${{ github.ref }}
ccache:msvc:root:${{ matrix.cc }}:${{ matrix.openmp }}:${{ matrix.cuda }}:${{ matrix.link }}:
- name: configure ccache
# Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota.
Expand All @@ -435,6 +458,8 @@ jobs:
fi
mkdir -p ${GITHUB_WORKSPACE}/build && cd ${GITHUB_WORKSPACE}/build
cmake -G"Ninja Multi-Config" \
-DCMAKE_C_COMPILER=${{ matrix.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.cc }} \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX=".." \
-DCMAKE_PREFIX_PATH="C:/Miniconda/envs/test/Library;${GITHUB_WORKSPACE}/dependencies" \
Expand Down Expand Up @@ -476,7 +501,7 @@ jobs:
- name: save ccache
# Save the cache after we are done (successfully) building
# This helps to retain the ccache even if the subsequent steps are failing.
uses: actions/cache/save@v3
uses: actions/cache/save@v4
with:
path: ${{ steps.ccache-prepare.outputs.ccachedir }}
key: ${{ steps.ccache-prepare.outputs.key }}
Expand All @@ -497,7 +522,9 @@ jobs:
run: |
cd ${GITHUB_WORKSPACE}/Example/build
printf "::group::\033[0;32m==>\033[0m Configuring example\n"
cmake \
cmake -G"Ninja Multi-Config" \
-DCMAKE_C_COMPILER=${{ matrix.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.cc }} \
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/lib/cmake;C:/Miniconda/envs/test/Library;${GITHUB_WORKSPACE}/dependencies" \
-DBLA_VENDOR="All" \
${{ matrix.openmp-cmake-flags }} \
Expand Down Expand Up @@ -533,7 +560,9 @@ jobs:
printf "::group:: \033[0;32m==>\033[0m Building with Config.cmake with library \033[0;32m${lib}\033[0m\n"
cd ${GITHUB_WORKSPACE}/TestConfig/${lib}
cd build
cmake \
cmake -G"Ninja Multi-Config" \
-DCMAKE_C_COMPILER=${{ matrix.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.cc }} \
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/lib/cmake;C:/Miniconda/envs/test/Library;${GITHUB_WORKSPACE}/dependencies" \
..
cmake --build . --config Release
Expand Down
10 changes: 5 additions & 5 deletions AMD/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@

cmake_minimum_required ( VERSION 3.22 )

set ( AMD_DATE "Jan 10, 2024" )
set ( AMD_DATE "Mar 22, 2024" )
set ( AMD_VERSION_MAJOR 3 CACHE STRING "" FORCE )
set ( AMD_VERSION_MINOR 3 CACHE STRING "" FORCE )
set ( AMD_VERSION_SUB 1 CACHE STRING "" FORCE )
set ( AMD_VERSION_SUB 2 CACHE STRING "" FORCE )

message ( STATUS "Building AMD version: v"
${AMD_VERSION_MAJOR}.
Expand Down Expand Up @@ -49,10 +49,10 @@ endif ( )
#-------------------------------------------------------------------------------

if ( NOT SUITESPARSE_ROOT_CMAKELISTS )
find_package ( SuiteSparse_config 7.5.0
find_package ( SuiteSparse_config 7.7.0
PATHS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/build NO_DEFAULT_PATH )
if ( NOT TARGET SuiteSparse::SuiteSparseConfig )
find_package ( SuiteSparse_config 7.5.0 REQUIRED )
find_package ( SuiteSparse_config 7.7.0 REQUIRED )
endif ( )
endif ( )

Expand Down Expand Up @@ -113,7 +113,7 @@ if ( BUILD_STATIC_LIBS )
OUTPUT_NAME amd
PUBLIC_HEADER "Include/amd.h" )

if ( MSVC )
if ( MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC") )
set_target_properties ( AMD_static PROPERTIES
OUTPUT_NAME amd_static )
endif ( )
Expand Down
4 changes: 2 additions & 2 deletions AMD/Config/amd.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -392,8 +392,8 @@ void amd_version (int version [3]) ;

#define AMD__VERSION SUITESPARSE__VERCODE(@AMD_VERSION_MAJOR@,@AMD_VERSION_MINOR@,@AMD_VERSION_SUB@)
#if !defined (SUITESPARSE__VERSION) || \
(SUITESPARSE__VERSION < SUITESPARSE__VERCODE(7,5,0))
#error "AMD @AMD_VERSION_MAJOR@.@AMD_VERSION_MINOR@.@AMD_VERSION_SUB@ requires SuiteSparse_config 7.5.0 or later"
(SUITESPARSE__VERSION < SUITESPARSE__VERCODE(7,7,0))
#error "AMD @AMD_VERSION_MAJOR@.@AMD_VERSION_MINOR@.@AMD_VERSION_SUB@ requires SuiteSparse_config 7.7.0 or later"
#endif

#endif
6 changes: 3 additions & 3 deletions AMD/Demo/amd_demo.out
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
AMD version 3.3.1, date: Jan 10, 2024
AMD version 3.3.2, date: Mar 22, 2024
AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:

AMD version 3.3.1, Jan 10, 2024: approximate minimum degree ordering
AMD version 3.3.2, Mar 22, 2024: approximate minimum degree ordering
dense row parameter: 10
(rows with more than max (10 * sqrt (n), 16) entries are
considered "dense", and placed last in output permutation)
Expand Down Expand Up @@ -115,7 +115,7 @@ Plot of input matrix pattern:
23: . . . . . . X . . . . X X . . . . . . . . . . X
return value from amd_order: 0 (should be 0)

AMD version 3.3.1, Jan 10, 2024, results:
AMD version 3.3.2, Mar 22, 2024, results:
status: OK
n, dimension of A: 24
nz, number of nonzeros in A: 160
Expand Down
Loading

0 comments on commit ca264af

Please sign in to comment.