Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 1 addition & 31 deletions .github/coverage/exclude_files.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ src/ssls/sslst.F90
src/ssls/sslsti.F90
src/smt/smtt.F90
src/sort/sortt.F90
src/ssids/ssidst.F90
src/slblt/slbltt.F90
src/svt/svtt.F90
src/trb/trbt.F90
src/trb/trbti.F90
Expand Down Expand Up @@ -429,33 +429,3 @@ src/nodend/metis52/include/rename_52s.h
src/nodend/metis52/include/stdheaders_52.h
src/nodend/metis52/include/struct_52.h
src/nodend/metis52/include/test_proto_52.h
include/spral_compat.hxx
include/spral_guess_topology.hxx
include/spral_hwloc_wrapper.hxx
include/spral_omp.hxx
include/ssids_cpu_AppendAlloc.hxx
include/ssids_cpu_BlockPool.hxx
include/ssids_cpu_BuddyAllocator.hxx
include/ssids_cpu_NumericNode.hxx
include/ssids_cpu_NumericSubtree.hxx
include/ssids_cpu_SmallLeafNumericSubtree.hxx
include/ssids_cpu_SmallLeafSymbolicSubtree.hxx
include/ssids_cpu_SymbolicNode.hxx
include/ssids_cpu_SymbolicSubtree.hxx
include/ssids_cpu_ThreadStats.hxx
include/ssids_cpu_Workspace.hxx
include/ssids_cpu_cpu_iface.hxx
include/ssids_cpu_factor.hxx
include/ssids_cpu_kernels_SimdVec.hxx
include/ssids_cpu_kernels_assemble.hxx
include/ssids_cpu_kernels_block_ldlt.hxx
include/ssids_cpu_kernels_calc_ld.hxx
include/ssids_cpu_kernels_cholesky.hxx
include/ssids_cpu_kernels_common.hxx
include/ssids_cpu_kernels_ldlt_app.hxx
include/ssids_cpu_kernels_ldlt_nopiv.hxx
include/ssids_cpu_kernels_ldlt_tpp.hxx
include/ssids_cpu_kernels_verify.hxx
include/ssids_cpu_kernels_wrappers.hxx
include/ssids_profile.hxx
include/ssids_rip.hxx
14 changes: 3 additions & 11 deletions .github/julia/build_tarballs_int32.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ version = VersionNumber(ENV["GALAHAD_RELEASE"])
# Collection of sources required to complete build
sources = [
GitSource(ENV["GALAHAD_URL"], ENV["GALAHAD_COMMIT"]),
# MUMPS v5.9.0
ArchiveSource("https://mumps-solver.org/MUMPS_5.9.0.tar.gz",
"02c6efdb91749ec0f82351d40f3f860547272a1eb1d899126a4265b4d6bcc4ca"),
# MUMPS v5.9.1
ArchiveSource("https://mumps-solver.org/MUMPS_5.9.1.tar.gz",
"659c9b57646b5a003ac618baa1faf9dd2044e46c732b3daaccbc7158003e1b46"),
]

# Bash recipe for building across all platforms
Expand Down Expand Up @@ -88,20 +88,13 @@ cp lib/*.${dlext} ${libdir}
# Compile GALAHAD
cd ${WORKSPACE}/srcdir/GALAHAD

if [[ "${target}" == *mingw* ]]; then
HWLOC="hwloc-15"
else
HWLOC="hwloc"
fi

QUADRUPLE="true"
if [[ "${target}" == *arm* ]] || [[ "${target}" == *aarch64-linux* ]] || [[ "${target}" == *aarch64-unknown-freebsd* ]] || [[ "${target}" == *powerpc64le-linux-gnu* ]] || [[ "${target}" == *riscv64* ]]; then
QUADRUPLE="false"
fi

meson setup builddir_int32 --cross-file=${MESON_TARGET_TOOLCHAIN%.*}_gcc.meson \
--prefix=$prefix \
-Dlibhwloc=$HWLOC \
-Dlibblas=openblas \
-Dliblapack=openblas \
-Dsingle=true \
Expand Down Expand Up @@ -139,7 +132,6 @@ dependencies = [
Dependency(PackageSpec(name="CompilerSupportLibraries_jll", uuid="e66e0078-7015-5450-92f7-15fbd957f2ae")),
Dependency(PackageSpec(name="METIS_jll", uuid="d00139f3-1899-568f-a2f0-47f597d42d70")),
Dependency(PackageSpec(name="OpenBLAS32_jll", uuid="656ef2d0-ae68-5445-9ca0-591084a874a2")),
Dependency(PackageSpec(name="Hwloc_jll", uuid="e33a78d0-f292-5ffc-b300-72abe9b543c8")),
Dependency(PackageSpec(name="HSL_jll", uuid="017b0a0e-03f4-516a-9b91-836bbd1904dd"), compat="4.0.5"),
Dependency(PackageSpec(name="CUTEst_jll", uuid="bb5f6f25-f23d-57fd-8f90-3ef7bad1d825"), compat="2.7.0"),
]
Expand Down
8 changes: 0 additions & 8 deletions .github/julia/build_tarballs_int64.jl
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,13 @@ cp ${host_prefix}/bin/ninja /usr/bin/ninja
# Compile GALAHAD
cd ${WORKSPACE}/srcdir/GALAHAD

if [[ "${target}" == *mingw* ]]; then
HWLOC="hwloc-15"
else
HWLOC="hwloc"
fi

QUADRUPLE="true"
if [[ "${target}" == *arm* ]] || [[ "${target}" == *aarch64-linux* ]] || [[ "${target}" == *aarch64-unknown-freebsd* ]] || [[ "${target}" == *powerpc64le-linux-gnu* ]] || [[ "${target}" == *riscv64* ]]; then
QUADRUPLE="false"
fi

meson setup builddir_int64 --cross-file=${MESON_TARGET_TOOLCHAIN%.*}_gcc.meson \
--prefix=$prefix \
-Dlibhwloc=$HWLOC \
-Dlibblas=openblas64_ \
-Dliblapack=openblas64_ \
-Dlibsmumps= \
Expand Down Expand Up @@ -91,7 +84,6 @@ dependencies = [
HostBuildDependency(PackageSpec(name="Ninja_jll", uuid="76642167-d241-5cee-8c94-7a494e8cb7b7")),
Dependency(PackageSpec(name="CompilerSupportLibraries_jll", uuid="e66e0078-7015-5450-92f7-15fbd957f2ae")),
Dependency(PackageSpec(name="OpenBLAS_jll", uuid="4536629a-c528-5b80-bd46-f80d51c5b363")),
Dependency(PackageSpec(name="Hwloc_jll", uuid="e33a78d0-f292-5ffc-b300-72abe9b543c8")),
Dependency(PackageSpec(name="HSL_jll", uuid="017b0a0e-03f4-516a-9b91-836bbd1904dd"), compat="4.0.5"),
]

Expand Down
4 changes: 2 additions & 2 deletions .github/julia/check_copies.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ excluded_fortran_fields = Dict(
"presolve_control_type" => ["get_q", "get_f", "get_g", "get_H", "get_A", "get_x", "get_x_bounds", "get_z", "get_z_bounds", "get_c", "get_c_bounds", "get_y", "get_y_bounds"],
"wcp_inform_type" => ["x_status", "c_status"],
"sbls_inform_type" => ["sils_analyse_status", "sils_factorize_status", "sils_solve_status", "sls_analyse_status", "sls_factorize_status", "sls_solve_status", "uls_analyse_status", "uls_factorize_status", "uls_solve_status"],
"ssids_control_type" => ["auction", "rb_dump"],
"ssids_inform_type" => ["auction"],
"slblt_control_type" => ["auction", "rb_dump"],
"slblt_inform_type" => ["auction"],
)

function extract_type_fields(text, typename)
Expand Down
3 changes: 1 addition & 2 deletions .github/julia/check_files.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ function meson_check_headers()
startswith(file, "galahad_sls_") && continue
startswith(file, "cutest_routines_") && continue
startswith(file, "hsl_subset_") && continue
startswith(file, "ssids_") && continue
(file in excluded_headers) && continue

if !occursin(file, content)
Expand Down Expand Up @@ -86,7 +85,7 @@ function meson_check_files()
"trs_paper.F90", "trs_paper_large.F90", "rqs_paper_large.F90",
# I should check the following files with Nick!
"cdqp_ciface.F90", "check.f90.ver1", "dummy.f", "dummy_hsl.F90",
"dummy_hsl_c.F90", "dummy_spral.F90", "empty", "umfpack.F90",
"dummy_hsl_c.F90", "empty", "umfpack.F90",
"filter_orig.F90", "filtrane_ciface.F90", "glrt.f90.1", "glrtti.F90",
"glssbig.F90", "glssbig1.F90", "glssbig2.F90", "runl1qp_qplib.F90",
"lancelot.pointers.F90", "details", "details2", "runlsrb", "lsqr.F90",
Expand Down
1 change: 0 additions & 1 deletion .github/julia/check_headers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ for file in readdir(folder_headers)
startswith(file, "galahad_sls_") && continue
startswith(file, "cutest_routines_") && continue
startswith(file, "hsl_") && continue
startswith(file, "ssids_") && continue
(file in excluded_headers) && continue

if !occursin(file, content)
Expand Down
1 change: 0 additions & 1 deletion .github/julia/check_macros.jl
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ append_macros!(macros, joinpath(@__DIR__, "..", "..", "include", "hsl_subset_cif
append_macros!(macros, joinpath(@__DIR__, "..", "..", "include", "hsl_subset_ciface_quadruple.h"))
append_macros!(macros, joinpath(@__DIR__, "..", "..", "include", "galahad_cfunctions.h"))
append_macros!(macros, joinpath(@__DIR__, "..", "..", "include", "galahad_kinds.h"))
append_macros!(macros, joinpath(@__DIR__, "..", "..", "include", "ssids_routines.h"))

# Check the number of characters
for (root, dirs, files) in walkdir(joinpath(@__DIR__, "..", "..", "src"))
Expand Down
4 changes: 2 additions & 2 deletions .github/julia/check_modules.jl
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ single_double_quadruple_modules = ["galahad_blas_interface",
"galahad_pastixf_enums",
"galahad_pastixf_interfaces",
"galahad_spmf_interfaces",
"galahad_hw",
"galahad_hw_64",
"galahad_topology",
"galahad_topology_64",
]

for (modules1, modules2, int1, int2, name) in modules_combinations
Expand Down
8 changes: 4 additions & 4 deletions .github/julia/check_structures.jl
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ excluded_fortran_fields = Dict(
"presolve_control_type" => ["get_q", "get_f", "get_g", "get_h", "get_a", "get_x", "get_x_bounds", "get_z", "get_z_bounds", "get_c", "get_c_bounds", "get_y", "get_y_bounds"],
"wcp_inform_type" => ["x_status", "c_status"],
"sbls_inform_type" => ["sils_analyse_status", "sils_factorize_status", "sils_solve_status", "sls_analyse_status", "sls_factorize_status", "sls_solve_status", "uls_analyse_status", "uls_factorize_status", "uls_solve_status"],
"ssids_control_type" => ["auction", "rb_dump"],
"ssids_inform_type" => ["auction"],
"slblt_control_type" => ["auction", "rb_dump"],
"slblt_inform_type" => ["auction"],
"ugo_inform_type" => ["dx_best"],
)

Expand All @@ -78,7 +78,7 @@ function F_structures()
(folders[end-1] != "forthcoming") && (folders[end-1] != "src") && continue
package = folders[end]
if file == "$package.F90"
if package == "ssids"
if package == "slblt"
path = joinpath(root, "types.F90") |> normpath
end
code = read(path, String)
Expand All @@ -104,7 +104,7 @@ function F_structures()
f_extend[f_struct] = lowercase(extension) |> strip
end
end
if contains(line |> uppercase, "TYPE SSIDS_INFORM") || contains(line |> uppercase, "TYPE SSIDS_OPTIONS")
if contains(line |> uppercase, "TYPE SLBLT_INFORM") || contains(line |> uppercase, "TYPE SLBLT_OPTIONS")
f_struct = split(line, "type")[2] |> strip
f_types[f_struct] = String[]
f_structures[f_struct] = String[]
Expand Down
18 changes: 6 additions & 12 deletions .github/julia/check_symbols.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ function exported_symbols(path::String)
for line in lines
tab = split(line, " ", keepempty=false)
symbol = tab[1]
symbol = readchomp(`c++filt -t $symbol`)
push!(symbols, symbol)
end
return symbols
Expand Down Expand Up @@ -42,11 +41,11 @@ single_double_quadruple_modules = ["hash_MOD", "string_MOD", "string_64_MOD", "c
"common_ciface_MOD", "hash_ciface_MOD", "hash_64_MOD", "hash_ciface_64_MOD", "hsl_kb22_long_integer_MOD",
"hsl_mc68_integer_ciface_MOD", "hsl_mc68_integer_MOD", "hsl_mc78_integer_MOD", "hsl_mc78_integer_64_MOD", "hsl_zb01_integer_MOD",
"hsl_of01_integer_MOD", "hsl_of01_integer_64_MOD", "mkl_pardiso_private_MOD", "pastixf_enums_MOD", "pastixf_interfaces_MOD", "spmf_enums_MOD",
"spral_pgm_64_MOD", "pastixf_enums_64_MOD", "mkl_pardiso_private_64_MOD", "spmf_enums_64_MOD", "spral_hw_topology_64_MOD",
"spral_metis_wrapper_64_MOD", "tools_64_MOD", "galahad_symbols_64_MOD", "hsl_mc68_integer_64_ciface_MOD", "hsl_kb22_long_integer_64_MOD",
"pastixf_enums_64_MOD", "mkl_pardiso_private_64_MOD", "spmf_enums_64_MOD",
"tools_64_MOD", "galahad_symbols_64_MOD", "hsl_mc68_integer_64_ciface_MOD", "hsl_kb22_long_integer_64_MOD",
"common_ciface_64_MOD", "clock_64_MOD", "hsl_mc68_integer_64_MOD", "hsl_zb01_integer_64_MOD", "copyright_64_MOD",
"version_64_MOD", "galahad_hw_MOD", "galahad_hw_64_MOD", "spral_metis_wrapper_MOD", "spral_core_analyse_64_MOD",
"galahad_version_MOD", "galahad_ssids_profile_MOD", "galahad_ssids_profile_64_MOD", "galahad_spmf_interfaces_MOD",
"version_64_MOD", "galahad_topology_MOD", "galahad_topology_64_MOD",
"galahad_version_MOD", "galahad_spmf_interfaces_MOD",
"galahad_spmf_interfaces_64_MOD", "galahad_pastixf_interfaces_MOD", "galahad_pastixf_interfaces_64_MOD"]

metis_adapters = ["galahad_nodend4_adapter", "galahad_nodend51_adapter", "galahad_nodend52_adapter"]
Expand All @@ -63,7 +62,7 @@ metis_symbols = ["PrintBackTrace", "errexit", "getpathname", "iAllocMatrix", "iF
"rpqFree", "rpqGetTop", "rpqInit", "rpqInsert", "rpqLength", "rpqReset", "rpqSeeKey", "rpqSeeTopKey", "rpqSeeTopVal",
"rpqUpdate", "rrealloc", "rscale", "rset", "rsmalloc", "rsortd", "rsorti", "rsum", "uvwsorti"]

unknown_symbols = ["errexit", "getpathname", "gkfooo", "main", "PrintBackTrace", "spral_hw_topology_free", "spral_hw_topology_guess",
unknown_symbols = ["errexit", "getpathname", "gkfooo", "main", "PrintBackTrace",
"Test_ND", "VerifyND", "xerbla2_"]

for (symbols1, symbols2, int1, int2, name) in symbols_combinations
Expand All @@ -84,13 +83,8 @@ for (symbols1, symbols2, int1, int2, name) in symbols_combinations
flag11 = mapreduce(x -> symbol == x, |, unknown_symbols)
flag12 = mapreduce(x -> symbol == x || symbol == x * "_64", |, metis_adapters)
flag13 = mapreduce(x -> symbol == x * "_51" || symbol == x * "_51_64" || symbol == x * "_52" || symbol == x * "_52_64", |, metis_symbols)
flag14 = mapreduce(x -> contains(symbol, x), |, ["::", "<", ">"]) && (int1 == int2)
flag15 = contains(symbol, "std::") || contains(symbol, "__gnu_cxx::")
flag16 = contains(symbol, "operator delete") || contains(symbol, "operator new")
flag17 = contains(symbol, "galahad_ssids_cpu_create_symbolic_subtree") || contains(symbol, "galahad_ssids_cpu_destroy_symbolic_subtree")
flag18 = contains(symbol, "galahad_hw_topology_guess") || contains(symbol, "galahad_hw_topology_free")
if !flag1 && !flag2 && !flag3 && !flag4 && !flag5 && !flag6 && !flag7 && !flag8 && !flag9 && !flag10
if !flag11 && !flag12 && !flag13 && !flag14 && !flag15 && !flag16 && !flag17 && !flag18
if !flag11 && !flag12 && !flag13
println(symbol)
global n = n+1
end
Expand Down
40 changes: 0 additions & 40 deletions .github/workflows/dummy_ssids.yml

This file was deleted.

26 changes: 12 additions & 14 deletions .github/workflows/meson_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,16 +127,16 @@ jobs:
run: |
echo "LSAN_OPTIONS=suppressions=$GITHUB_WORKSPACE/.github/lsan_suppressions.txt" >> $GITHUB_ENV

# Exercise SSIDS (GALAHAD's own embedded sparse solver) as both the
# Exercise SLBLT (GALAHAD's own embedded sparse solver) as both the
# symmetric and definite linear solver under the sanitizers. The test
# drivers read these at run time (see include/galahad_sls_defaults_ls.h),
# so no rebuild is needed; unset, they would fall back to sytr / potr.
- name: Select the linear solvers exercised by the tests
if: inputs.sanitizers == 'true'
shell: bash
run: |
echo "GALAHAD_SYMMETRIC_LINEAR_SOLVER=ssids" >> $GITHUB_ENV
echo "GALAHAD_DEFINITE_LINEAR_SOLVER=ssids" >> $GITHUB_ENV
echo "GALAHAD_SYMMETRIC_LINEAR_SOLVER=slblt" >> $GITHUB_ENV
echo "GALAHAD_DEFINITE_LINEAR_SOLVER=slblt" >> $GITHUB_ENV

- name: Set environment variables for self-hosted runner
if: inputs.os == 'self-hosted'
Expand All @@ -157,7 +157,7 @@ jobs:
if: inputs.os != 'windows-latest' && inputs.compiler != 'nvidia-hpc'
shell: bash
run: |
VERSION_CUTEST="2.6.0"
VERSION_CUTEST="2.7.1"
INT64="false"
if [[ "${{ inputs.int }}" == "64" ]]; then
INT64="true"
Expand Down Expand Up @@ -226,7 +226,7 @@ jobs:
meson compile -C builddir
meson install -C builddir
else
VERSION_LIBHSL="4.0.6"
VERSION_LIBHSL="4.0.7"
cd ..
if [[ "${{ inputs.os }}" == "windows-latest" ]]; then
wget https://github.com/ralna/libHSL/archive/refs/tags/v${VERSION_LIBHSL}.zip
Expand Down Expand Up @@ -261,11 +261,14 @@ jobs:
echo "PASTIX_INT64=OFF" >> $GITHUB_ENV
fi
if [[ "${{ inputs.os }}" == "ubuntu-latest" || "${{ inputs.os }}" == "ubuntu-24.04-arm" ]]; then
sudo apt-get -y install libhwloc-dev libopenblas-dev liblapacke-dev bison flex
sudo apt-get -y install libopenblas-dev liblapacke-dev libhwloc-dev bison flex
elif [[ "${{ inputs.os }}" == "macos-15-intel" || "${{ inputs.os }}" == "macos-latest" ]]; then
brew install hwloc openblas bison flex
# brew's bison/flex are keg-only (SCOTCH needs a recent bison/flex) and
# OpenBLAS/hwloc are keg-only too; expose them to the later build steps
# OpenBLAS/hwloc are keg-only too; expose them to the later build steps.
# hwloc is a dependency of PaStiX/SCOTCH (GALAHAD itself no longer uses
# it): without it PaStiX falls back to isched_nohwloc.c, which fails to
# compile on macOS (CTL_HW / HW_NCPU undeclared).
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH
echo "CMAKE_PREFIX_PATH=$(brew --prefix openblas):$(brew --prefix hwloc):${CMAKE_PREFIX_PATH}" >> $GITHUB_ENV
Expand Down Expand Up @@ -296,7 +299,7 @@ jobs:
if: inputs.compiler == 'gcc' && inputs.os != 'windows-latest'
shell: bash
run: |
VERSION_SCOTCH="7.0.12"
VERSION_SCOTCH="7.0.13"
cd "$DEPS"
git clone --depth 1 --branch v${VERSION_SCOTCH} https://gitlab.inria.fr/scotch/scotch.git scotch
cd scotch
Expand Down Expand Up @@ -346,7 +349,7 @@ jobs:
if: inputs.compiler == 'gcc' && inputs.os != 'windows-latest' && inputs.int == '32'
shell: bash
run: |
VERSION_MUMPS="5.9.0"
VERSION_MUMPS="5.9.1"
cd "$DEPS"
wget -q https://mumps-solver.org/MUMPS_${VERSION_MUMPS}.tar.gz
tar -xzf MUMPS_${VERSION_MUMPS}.tar.gz
Expand Down Expand Up @@ -432,7 +435,6 @@ jobs:
CPPSTD="c++11"
INT64="false"
QUADRUPLE="true"
SSIDS="true"
BLAS=""
LAPACK=""
BLAS_PATH="$DEPS/deps/$LIBDIR"
Expand Down Expand Up @@ -487,9 +489,6 @@ jobs:
if [[ "${{inputs.sanitizers}}" == "true" || ( "${{ inputs.compiler }}" == "intel" && "${{ inputs.os }}" == "windows-latest" ) ]]; then
PYTHON_INTERFACE="false"
fi
if [[ "${{ inputs.compiler }}" == "nvidia-hpc" || ( "${{ inputs.compiler }}" == "intel" && "${{ inputs.os }}" == "windows-latest" ) ]]; then
SSIDS="false"
fi
if [[ "${{ inputs.os }}" == "ubuntu-24.04-arm" || "${{ inputs.compiler }}" == "nvidia-hpc" || "${{ inputs.compiler }}" == "intel" ]]; then
QUADRUPLE="false"
fi
Expand All @@ -510,7 +509,6 @@ jobs:
-Dexamples=true \
-Dtests=true \
-Dbinaries=true \
-Dssids=${SSIDS} \
-Dciface=${C_INTERFACE} \
-Dpythoniface=${PYTHON_INTERFACE} \
-Dint64=${INT64} \
Expand Down
Loading
Loading