Skip to content
Closed
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
10 changes: 9 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,12 @@ updates:
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
interval: "weekly"
- package-ecosystem: "julia"
directory: "/"
schedule:
interval: "weekly"
groups: # uncomment to group all julia package updates into a single PR
all-julia-packages:
patterns:
- "*"
45 changes: 0 additions & 45 deletions .github/workflows/CompatHelper.yml

This file was deleted.

56 changes: 8 additions & 48 deletions .github/workflows/Tests.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
name: Tests
name: CI

on:
push:
branches:
- 'master'
- 'main'
- 'release-'
tags: '*'
paths-ignore:
- 'docs/**'
Expand All @@ -14,53 +13,14 @@ on:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
# Cancel intermediate builds: only if it is a pull request build.
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}

jobs:
setup-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.mk.outputs.matrix }}
steps:
- id: mk
shell: bash
run: |
# Draft PR: only run ubuntu-latest + version=1 (all groups)
if [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.draft }}" == "true" ]]; then
cat >> "$GITHUB_OUTPUT" <<'EOF'
matrix={"version":["1"],"os":["ubuntu-latest"],"group":["states","operators","algorithms","multifusion","misc"]}
EOF
else
cat >> "$GITHUB_OUTPUT" <<'EOF'
matrix={"version":["lts","1"],"os":["ubuntu-latest","windows-latest","macOS-latest"],"group":["states","operators","algorithms","multifusion","misc"]}
EOF
fi

tests:
name: "Tests"
needs: setup-matrix
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.setup-matrix.outputs.matrix) }}

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
- uses: julia-actions/cache@v3
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
timeout-minutes: 120
with:
test_args: '--jobs=1 ${{ matrix.group }}'
- uses: julia-actions/julia-processcoverage@v1
with:
directories: 'src,ext'
- uses: codecov/codecov-action@v6
with:
files: lcov.info
token: "${{ secrets.CODECOV_TOKEN }}"
fail_ci_if_error: true
uses: "QuantumKitHub/QuantumKitHubActions/.github/workflows/TestGroups.yml@main"
with:
fast: "${{ github.event.pull_request.draft == true }}"
timeout-minutes: 120
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ authors:
orcid: "https://orcid.org/0000-0002-0858-291X"

title: "MPSKit"
version: 0.13.10
version: 0.13.11
doi: 10.5281/zenodo.10654900
date-released: 2026-02-26
date-released: 2026-05-04
url: "https://github.com/QuantumKitHub/MPSKit.jl"
43 changes: 11 additions & 32 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
name = "MPSKit"
uuid = "bb1c41ca-d63c-52ed-829e-0820dda26502"
version = "0.13.10"
version = "0.13.12"
authors = "Lukas Devos, Maarten Van Damme and contributors"

[workspace]
projects = ["test", "docs"]

[deps]
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
BlockTensorKit = "5f87ffc2-9cf1-4a46-8172-465d160bd8cd"
Expand All @@ -21,6 +24,7 @@ RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
TensorKit = "07d1fe3e-3e46-537d-9eac-e9e13d0d4cec"
TensorKitManifolds = "11fa318c-39cb-4a83-b1ed-cdc7ba1e3684"
TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
VectorInterface = "409d34a3-91d5-4945-b6ec-7529ddf182d8"

[weakdeps]
Expand All @@ -32,47 +36,22 @@ MPSKitAdaptExt = "Adapt"
[compat]
Accessors = "0.1"
Adapt = "4"
Aqua = "0.8.9"
BlockTensorKit = "0.3.8"
CUDA = "5.9"
Combinatorics = "1"
BlockTensorKit = "0.3.11"
Compat = "3.47, 4.10"
DocStringExtensions = "0.9.3"
HalfIntegers = "1.6.0"
KrylovKit = "0.8.3, 0.9.2, 0.10"
LinearAlgebra = "1.6"
LoggingExtras = "~1.0"
MatrixAlgebraKit = "0.6"
MatrixAlgebraKit = "0.6.5"
OhMyThreads = "0.7, 0.8"
OptimKit = "0.3.1, 0.4"
ParallelTestRunner = "2"
Pkg = "1"
Plots = "1.40"
Printf = "1"
Random = "1"
RecipesBase = "1.1"
TensorKit = "0.16.3"
TensorKitManifolds = "0.7"
TensorKitTensors = "0.2"
TensorKit = "0.16.5"
TensorKitManifolds = "0.7, 0.8"
TensorOperations = "5.5.1"
Test = "1"
TestExtras = "0.3"
VectorInterface = "0.2, 0.3, 0.4, 0.5"
cuTENSOR = "2.3"
TimerOutputs = "0.5.29"
VectorInterface = "0.2, 0.3, 0.4, 0.5, 0.6"
julia = "1.10"

[extras]
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
ParallelTestRunner = "d3525ed8-44d0-4b2c-a655-542cee43accc"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
TensorKitTensors = "41b62e7d-e9d1-4e23-942c-79a97adf954b"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a"
cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1"

[targets]
test = ["Aqua", "Adapt", "CUDA", "cuTENSOR", "Pkg", "Test", "TestExtras", "Plots", "Combinatorics", "ParallelTestRunner", "TensorKitTensors"]
4 changes: 3 additions & 1 deletion benchmark/MPSKitBenchmarks/MPSKitBenchmarks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ BenchmarkTools.DEFAULT_PARAMETERS.memory_tolerance = 0.01
const PARAMS_PATH = joinpath(@__DIR__, "etc", "params.json")
const SUITE = BenchmarkGroup()
const MODULES = Dict{String, Symbol}(
"derivatives" => :DerivativesBenchmarks
"derivatives" => :DerivativesBenchmarks,
"timestep" => :TimestepBenchmarks,
)

include("derivatives/DerivativesBenchmarks.jl")
include("timestep/TimestepBenchmarks.jl")

load!(id::AbstractString; kwargs...) = load!(SUITE, id; kwargs...)

Expand Down
26 changes: 26 additions & 0 deletions benchmark/MPSKitBenchmarks/timestep/TimestepBenchmarks.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module TimestepBenchmarks

using BenchmarkTools
using MPSKit
using MPSKitModels

const SUITE = BenchmarkGroup()
const dt = 0.05

const HAMILTONIANS = (
"tfim" => transverse_field_ising(),
"heis_xxx" => heisenberg_XXX(),
)

let g_top = addgroup!(SUITE, "make_time_mpo")
for (Hname, H) in HAMILTONIANS
g = addgroup!(g_top, Hname)
for N in (1, 2, 3)
alg = TaylorCluster(; N)
g["N=$N"] = @benchmarkable make_time_mpo($H, $dt, $alg)
end
g["WII"] = @benchmarkable make_time_mpo($H, $dt, $(MPSKit.WII()))
end
end

end # module
6 changes: 6 additions & 0 deletions docs/Project.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name = "MPSKitDocs"

[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244"
Expand All @@ -12,5 +14,9 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
TensorKit = "07d1fe3e-3e46-537d-9eac-e9e13d0d4cec"
TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2"

[sources]
MPSKit = {path = ".."}

[compat]
Documenter = "1.0"
DocumenterInterLinks = "1"
3 changes: 1 addition & 2 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
if Base.active_project() != joinpath(@__DIR__, "Project.toml")
using Pkg
Pkg.activate(@__DIR__)
Pkg.develop(PackageSpec(; path = (@__DIR__) * "/../"))
Pkg.resolve()
Pkg.instantiate()
end
Expand Down Expand Up @@ -30,7 +29,7 @@ links = InterLinks(
"TensorKit" => "https://quantumkithub.github.io/TensorKit.jl/stable/",
"TensorOperations" => "https://quantumkithub.github.io/TensorOperations.jl/stable/",
"KrylovKit" => "https://jutho.github.io/KrylovKit.jl/stable/",
"BlockTensorKit" => "https://lkdvos.github.io/BlockTensorKit.jl/dev/",
"BlockTensorKit" => "https://quantumkithub.github.io/BlockTensorKit.jl/dev/",
"MatrixAlgebraKit" => "https://quantumkithub.github.io/MatrixAlgebraKit.jl/stable/",
"MPSKitModels" => "https://quantumkithub.github.io/MPSKitModels.jl/dev/"
)
Expand Down
31 changes: 30 additions & 1 deletion docs/src/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ When making changes to this project, please update the "Unreleased" section with

When releasing a new version, move the "Unreleased" changes to a new version section with the release date.

## [Unreleased](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.10...HEAD)
## [Unreleased](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.11...HEAD)

### Added

Expand All @@ -29,6 +29,35 @@ When releasing a new version, move the "Unreleased" changes to a new version sec

### Fixed

### Performance

## [0.13.11](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.10...v0.13.11) - 2026-05-04

### Added

- `MultilineMPO` space getters ([#407](https://github.com/QuantumKitHub/MPSKit.jl/pull/407))

### Changed

- Refactored time-evolution MPO construction ([#422](https://github.com/QuantumKitHub/MPSKit.jl/pull/422))
- Updated `TensorKitManifolds` compat to 0.8 ([#421](https://github.com/QuantumKitHub/MPSKit.jl/pull/421))
- Updated MatrixAlgebraKit algorithm specification ([#418](https://github.com/QuantumKitHub/MPSKit.jl/pull/418))
- Preparations for GPU / non-CPU array support ([#375](https://github.com/QuantumKitHub/MPSKit.jl/pull/375), [#392](https://github.com/QuantumKitHub/MPSKit.jl/pull/392))
- Generalized `calc_galerkin` to `AbstractMPS` ([#395](https://github.com/QuantumKitHub/MPSKit.jl/pull/395))
- Removed explicit call to `InfiniteMPS` in VUMPS ([#396](https://github.com/QuantumKitHub/MPSKit.jl/pull/396))
- Generalized `regauge!` to `AbstractVector` ([#393](https://github.com/QuantumKitHub/MPSKit.jl/pull/393))

### Fixed

- Various fixes for compatibility with latest TensorKit versions ([#416](https://github.com/QuantumKitHub/MPSKit.jl/pull/416))
- `changebonds` inconsistencies ([#415](https://github.com/QuantumKitHub/MPSKit.jl/pull/415))
- Small fixes for density operators ([#409](https://github.com/QuantumKitHub/MPSKit.jl/pull/409))
- Tolerance on positivity test ([#398](https://github.com/QuantumKitHub/MPSKit.jl/pull/398))

### Performance

- Benchmarks and AC/AC2 contraction improvements ([#345](https://github.com/QuantumKitHub/MPSKit.jl/pull/345))

## [0.13.10](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.9...v0.13.10) - 2026-02-26

### Added
Expand Down
3 changes: 2 additions & 1 deletion src/MPSKit.jl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ using TensorKit
using TensorKit: BraidingTensor
using TensorKit: TupleTools as TT
using MatrixAlgebraKit
using MatrixAlgebraKit: TruncationStrategy, PolarViaSVD, LAPACK_SVDAlgorithm
using MatrixAlgebraKit: TruncationStrategy
using BlockTensorKit
using BlockTensorKit: TensorMapSumSpace
using TensorOperations
Expand All @@ -85,6 +85,7 @@ using Random
using Base: @kwdef, @propagate_inbounds
using LoggingExtras
using OhMyThreads
using TimerOutputs: TimerOutput, @timeit, timeit, reset_timer!, disable_timer!, enable_timer!

# Includes
# --------
Expand Down
10 changes: 10 additions & 0 deletions src/algorithms/algorithm.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,13 @@ function Base.show(io::IO, ::MIME"text/plain", alg::Algorithm)
end
return nothing
end

# TIMEROUTPUT utility
# -------------------
# Shared sentinel passed as the default `timeroutput` kwarg by functions that optionally accept a timer.
# `@timeit` is a no-op when the destination timer is disabled, so unrelated callers pay no instrumentation cost.
# The merge sites that mutate `timeroutput` must gate on `timeroutput.enabled` so they don't pollute this shared object.
const DISABLED_TIMER = let t = TimerOutput("DISABLED")
disable_timer!(t)
t
end
Loading
Loading