diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d19ba4f..a2bffe2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,8 @@ jobs: - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo fmt --all -- --check + - name: Check the generated result index + run: python3 scripts/gen_index.py --check - run: cargo clippy --locked --all-targets -- -D warnings - run: cargo test --release --locked - name: smoke Fourier elementwise @@ -30,4 +32,14 @@ jobs: run: > BENCH_NS=2 BENCH_RUNS=1 BENCH_WARMUPS=0 BENCH_INPUT_CACHE_DIR=/tmp/smoke-cache OUT_DIR=/tmp/smoke/raw + EXPORT_HDF5=/tmp/smoke-export cargo run --release --locked --bin mpo_mpo_aniso_patched + - uses: julia-actions/setup-julia@v2 + with: + version: "1" + - name: Julia cross-check of the MPO contraction inputs + # Reads the HDF5 the smoke step exported and evaluates it in ITensors.jl + # against the closed form the instance approximates. + run: | + julia --project=julia -e 'using Pkg; Pkg.instantiate()' + julia --project=julia julia/check_mpo_mpo.jl /tmp/smoke-export 2 diff --git a/AGENTS.md b/AGENTS.md index c66be6e..812ff5b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,7 +24,11 @@ single-core profile stays the reference, and the two profiles are never merged. ## Results -Files under `result//` are generated by `scripts/run_all.sh ` and committed deliberately. Do not edit them manually. Probe runs belong under `/tmp`. One profile belongs to one physical machine and contains no hostname. +Files under `result///` are generated by +`scripts/run_all.sh ` and committed deliberately. `result/INDEX.md` is +generated by `scripts/gen_index.py`. Do not edit either by hand. Probe runs +belong under `/tmp`. One profile directory belongs to one physical machine and +contains no hostname. ## Input cache diff --git a/README.md b/README.md index a212cef..7fb143e 100644 --- a/README.md +++ b/README.md @@ -4,22 +4,17 @@ Reproducible benchmarks for tensor network algorithms in [tensor4all-rs](https:/ ## Results -Every committed sweep is a directory under [`result/`](result/), one per hardware -profile. Each holds `run.yaml` (machine, revisions, thread count and CPU set), -`raw/` (one JSON record per case, arm and instance) and the generated -`report.md`. Read the reports: - -| Profile | Machine | Threads | tensor4all-rs | Report | -| --- | --- | ---: | --- | --- | -| `linux-ryzen-ai-9-hx-470` | AMD Ryzen AI 9 HX 470, 12 physical cores | 1 | `a515738` | [report.md](result/linux-ryzen-ai-9-hx-470/report.md) | -| `linux-ryzen-ai-9-hx-470-4t` | the same machine, CPUs 0-3 | 4 | `a515738` | [report.md](result/linux-ryzen-ai-9-hx-470-4t/report.md) | -| `linux-epyc-7713p` | AMD EPYC 7713P | 1 | `9e9aeda` | [report.md](result/linux-epyc-7713p/report.md) | - -The one-thread profile is the reference configuration, and each report repeats -the machine, revisions, thread count and CPU set in its header. The `-4t` -profile is scaling evidence only: read it against the one-thread profile of the -same machine, never instead of it. [`result/README.md`](result/README.md) -describes the layout. +[`result/INDEX.md`](result/INDEX.md) lists every recorded sweep: one row per +(hardware profile, measured tensor4all-rs revision), each linking to that +sweep's generated `report.md`. It is generated by `scripts/gen_index.py`, so it +cannot drift from the tree, and CI fails when it is out of date. + +A sweep is a directory `result///` holding `run.yaml` (machine, +revisions, thread count and CPU set), `raw/` (one JSON record per case, arm and +instance) and the `report.md` those records generate. The one-thread profile of +each machine is the reference configuration; its optional `-t` scaling sweep +is read against it, never instead of it. [`result/README.md`](result/README.md) +has the layout. ## Maintained cases @@ -66,6 +61,32 @@ Case 3 compares global TreeTN fit with patched chain-TreeTN fit. Its reference i Input construction, cache I/O, global input compression, format conversion, patch preparation, output conversion, and accuracy evaluation are outside timed regions. +## Julia cross-check + +Case 3 exports its two input QTTs on request, and `julia/check_mpo_mpo.jl` +evaluates them in ITensors.jl against the closed form the interpolative +construction approximates. This is the one place where an artifact written by +tensor4all-rs is read back and contracted by an independent implementation. + +```bash +BENCH_NS=2 OUT_DIR=/tmp/smoke/raw EXPORT_HDF5=/tmp/smoke-export \ + cargo run --release --locked --bin mpo_mpo_aniso_patched +julia --project=julia -e 'using Pkg; Pkg.instantiate()' +julia --project=julia julia/check_mpo_mpo.jl /tmp/smoke-export 2 +``` + +`EXPORT_HDF5` writes `instance-n.h5` (the fused site-dimension-4 QTTs as +ITensorMPS `MPS` groups `f` and `g`) and `instance-n.json` (the analytic +mixtures, the box, `r` and the tolerances) into that directory. The script +asserts the case name before reading, because the Gaussian cases once shared +these file names. + +It prints the largest sampled relative deviation and gates at `1e-4`, +overridable with `CHECK_THRESHOLD`. At the default instances that deviation is +between `5e-6` and `9e-6`, which is the scale of the `1e-6` input truncation: the +check catches a broken export or a wrong index convention, not an accuracy +bound. CI runs it on the `N = 2` smoke instance. + ## Running Requirements are Rust, HDF5, and a BLAS/LAPACK implementation. A complete single-core run is: @@ -114,7 +135,8 @@ cargo fmt --all -- --check cargo test --release cargo clippy --locked --all-targets -- -D warnings cargo check --locked --all-targets -python3 scripts/report.py result/ +python3 scripts/report.py result// +python3 scripts/gen_index.py --check git diff --check ``` diff --git a/julia/Manifest.toml b/julia/Manifest.toml new file mode 100644 index 0000000..1a191ac --- /dev/null +++ b/julia/Manifest.toml @@ -0,0 +1,1137 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.13.1" +manifest_format = "2.1" +project_hash = "1ad894913d90fca420e8a626640d9b80ee54308e" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "7063ad1083578215c7c4bf410368150abe8d5524" +registries = "General" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.45" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "dee8388a9bec89c8713ad176f96960ae2f98598a" +registries = "General" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.7.4" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgCheck]] +git-tree-sha1 = "f9e9a66c9b7be1ad7372bbd9b062d9230c30c5ce" +registries = "General" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.5.0" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.ArrayLayouts]] +deps = ["FillArrays", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "5fdde08f7c53f5c7c58c44c1926ca876a8500c3e" +registries = "General" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.14.0" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.BangBang]] +deps = ["Accessors", "ConstructionBase", "InitialValues", "LinearAlgebra"] +git-tree-sha1 = "cceb62468025be98d42a5dc581b163c20896b040" +registries = "General" +uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" +version = "0.4.9" + + [deps.BangBang.extensions] + BangBangChainRulesCoreExt = "ChainRulesCore" + BangBangDataFramesExt = "DataFrames" + BangBangStaticArraysExt = "StaticArrays" + BangBangStructArraysExt = "StructArrays" + BangBangTablesExt = "Tables" + BangBangTypedTablesExt = "TypedTables" + + [deps.BangBang.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.Baselet]] +git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" +registries = "General" +uuid = "9718e550-a3fa-408a-8086-8db961cd8217" +version = "0.1.1" + +[[deps.BitIntegers]] +deps = ["Random"] +git-tree-sha1 = "091d591a060e43df1dd35faab3ca284925c48e46" +registries = "General" +uuid = "c3b6d118-76ef-56ca-8cc7-ebb389d030a1" +version = "0.3.7" + +[[deps.BlockArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] +git-tree-sha1 = "533546f11d530269459ff1f89851e71b97559c1a" +registries = "General" +uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +version = "1.10.1" + + [deps.BlockArrays.extensions] + BlockArraysAdaptExt = "Adapt" + BlockArraysBandedMatricesExt = "BandedMatrices" + + [deps.BlockArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "12177ad6b3cad7fd50c8b3825ce24a99ad61c18f" +registries = "General" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.26.1" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad" +registries = "General" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.18.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.5.5+2" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +registries = "General" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +registries = "General" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.Crayons]] +git-tree-sha1 = "54b76cbb40d9a0f5368c880725b2f141da77c94f" +registries = "General" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.2.0" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +registries = "General" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +registries = "General" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.DefineSingletons]] +git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" +registries = "General" +uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" +version = "0.1.2" + +[[deps.Dictionaries]] +deps = ["Indexing", "Random", "Serialization"] +git-tree-sha1 = "a55766a9c8f66cf19ffcdbdb1444e249bb4ace33" +registries = "General" +uuid = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" +version = "0.4.6" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +registries = "General" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.7.0" + +[[deps.EllipsisNotation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "17ce831831d0cf59f1493165e1a8d3002e37e3e8" +registries = "General" +uuid = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" +version = "1.12.0" + + [deps.EllipsisNotation.extensions] + EllipsisNotationStaticArrayInterfaceExt = ["ArrayInterface", "Static", "StaticArrayInterface"] + + [deps.EllipsisNotation.weakdeps] + ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" + Static = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" + StaticArrayInterface = "0d7ed370-da01-4f52-bd93-41d350b8b718" + +[[deps.ExprTools]] +git-tree-sha1 = "d2e49e7efd29719d6f28b891b0e0e159daa9d2b4" +registries = "General" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.11" + +[[deps.ExternalDocstrings]] +git-tree-sha1 = "1224740fc4d07c989949e1c1b508ebd49a65a5f6" +registries = "General" +uuid = "e189563c-0753-4f5e-ad5c-be4293c83fb4" +version = "0.1.1" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9741b45e1189f878eefe5789e6833dbdefc5adfa" +registries = "General" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.18.0" + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStaticArraysExt = "StaticArrays" + FillArraysStatisticsExt = "Statistics" + + [deps.FillArrays.weakdeps] + PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.Folds]] +deps = ["Accessors", "BangBang", "Baselet", "DefineSingletons", "Distributed", "ExternalDocstrings", "InitialValues", "MicroCollections", "Referenceables", "Requires", "Test", "ThreadedScans", "Transducers"] +git-tree-sha1 = "7eb4bc88d8295e387a667fd43d67c157ddee76cf" +registries = "General" +uuid = "41a02a25-b8f0-4f67-bc48-60067656b558" +version = "0.2.10" + + [deps.Folds.extensions] + FoldsOnlineStatsBaseExt = "OnlineStatsBase" + + [deps.Folds.weakdeps] + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + +[[deps.Functors]] +deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "1ac2813982db52b974c9343124ca61adbf297316" +registries = "General" +uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" +version = "0.5.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.HDF5]] +deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "26e37af34e8ccb7a8358bd8de1619c7bcb526738" +registries = "General" +uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +version = "0.17.4" + + [deps.HDF5.extensions] + MPIExt = "MPI" + + [deps.HDF5.weakdeps] + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + +[[deps.HDF5_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "MPIABI_jll", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "aws_c_s3_jll", "dlfcn_win32_jll", "libaec_jll", "mpif_jll"] +git-tree-sha1 = "58d79d3a61d2fdeda667fead57546ae22a20b27a" +registries = "General" +uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" +version = "2.2.3+0" + +[[deps.HalfIntegers]] +git-tree-sha1 = "9c3149243abb5bc0bad0431d6c4fcac0f4443c7c" +registries = "General" +uuid = "f0d1745a-41c9-11e9-1dd9-e5d34d218721" +version = "1.6.0" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "XML2_jll", "Xorg_libpciaccess_jll"] +git-tree-sha1 = "cbbd99d516990d05c02aa132aa077b2bf50ae323" +registries = "General" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.15.0+0" + +[[deps.ITensorMPS]] +deps = ["Adapt", "Compat", "ITensors", "IsApprox", "KrylovKit", "LinearAlgebra", "NDTensors", "Printf", "Random", "SerializedElementArrays", "TupleTools"] +git-tree-sha1 = "6059e907e9722a51a54512a4d3ab4827f966443c" +registries = "General" +uuid = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2" +version = "0.4.2" + + [deps.ITensorMPS.extensions] + ITensorMPSChainRulesCoreExt = "ChainRulesCore" + ITensorMPSHDF5Ext = "HDF5" + ITensorMPSObserversExt = "Observers" + ITensorMPSPackageCompilerExt = "PackageCompiler" + ITensorMPSZygoteRulesExt = ["ChainRulesCore", "ZygoteRules"] + + [deps.ITensorMPS.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + Observers = "338f10d5-c7f1-4033-a7d1-f9dec39bcaa0" + PackageCompiler = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d" + ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444" + +[[deps.ITensors]] +deps = ["Adapt", "BitIntegers", "ChainRulesCore", "Compat", "Dictionaries", "DocStringExtensions", "Functors", "IsApprox", "LinearAlgebra", "NDTensors", "Pkg", "Printf", "Random", "Requires", "SerializedElementArrays", "SimpleTraits", "SparseArrays", "StaticArrays", "Strided", "TimerOutputs", "TupleTools", "Zeros"] +git-tree-sha1 = "24b985f1800d225c3e1e028e6abcac3def7545a8" +registries = "General" +uuid = "9136182c-28ba-11e9-034c-db9fb085ebd5" +version = "0.9.32" + + [deps.ITensors.extensions] + ITensorsHDF5Ext = "HDF5" + ITensorsTensorOperationsExt = "TensorOperations" + ITensorsVectorInterfaceExt = "VectorInterface" + ITensorsZygoteRulesExt = "ZygoteRules" + + [deps.ITensors.weakdeps] + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" + VectorInterface = "409d34a3-91d5-4945-b6ec-7529ddf182d8" + ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444" + +[[deps.Indexing]] +git-tree-sha1 = "ce1566720fd6b19ff3411404d4b977acd4814f9f" +registries = "General" +uuid = "313cdc1a-70c2-5d6a-ae34-0150d3930a38" +version = "1.1.1" + +[[deps.InitialValues]] +git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" +registries = "General" +uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" +version = "0.3.1" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +registries = "General" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.IsApprox]] +deps = ["Dictionaries", "LinearAlgebra"] +git-tree-sha1 = "d1a10e34d7f2e163cc1ebb45824c0226a5b57e37" +registries = "General" +uuid = "28f27b66-4bd8-47e7-9110-e2746eb8bed7" +version = "2.0.1" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +registries = "General" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7204148362dafe5fe6a273f855b8ccbe4df8173e" +registries = "General" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.8.0" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "411eccfe8aba0814ffa0fdf4860913ed09c34975" +registries = "General" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.14.3" + + [deps.JSON3.extensions] + JSON3ArrowExt = ["ArrowTypes"] + + [deps.JSON3.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + +[[deps.JuliaSyntaxHighlighting]] +deps = ["StyledStrings"] +uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" +version = "1.12.0" + +[[deps.KrylovKit]] +deps = ["LinearAlgebra", "PackageExtensionCompat", "Printf", "Random", "VectorInterface"] +git-tree-sha1 = "a3babd26e875e83b461e1c0f945bff52701e8181" +registries = "General" +uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" +version = "0.10.4" +weakdeps = ["ChainRulesCore"] + + [deps.KrylovKit.extensions] + KrylovKitChainRulesCoreExt = "ChainRulesCore" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "f88f3ccef05a6a72a0cf0ed417c8fd68530f4ab2" +registries = "General" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "1.0.0" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "Zstd_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.18.0+1" + +[[deps.LibGit2]] +deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.9.1+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl", "OpenSSL_jll", "Zlib_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.104+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +registries = "General" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.13.0" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.MPIABI_jll]] +deps = ["Artifacts", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "42e2cada9f35500b4d227106ce2b60e85d9f15bc" +registries = "General" +uuid = "b5ada748-db0f-5fc0-8972-9331c762740c" +version = "1.0.1+0" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "bdbb39057d6897527a702983b5fd5184207d23a2" +registries = "General" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "5.0.2+0" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "8e98d5d80b87403c311fd51e8455d4546ba7a5f8" +registries = "General" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.12" + +[[deps.MPItrampoline_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "675df097f8eeb28998b2cfe3b25655af73d5f7df" +registries = "General" +uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" +version = "5.5.6+0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +registries = "General" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.Markdown]] +deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MicroCollections]] +deps = ["Accessors", "BangBang", "InitialValues"] +git-tree-sha1 = "44d32db644e84c75dab479f1bc15ee76a1a3618f" +registries = "General" +uuid = "128add7d-3638-4c79-886c-908ea0c25c34" +version = "0.2.0" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bc95bf4149bf535c09602e3acdf950d9b4376227" +registries = "General" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.4+3" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2026.8.13" + +[[deps.NDTensors]] +deps = ["Accessors", "Adapt", "ArrayLayouts", "BlockArrays", "Compat", "Dictionaries", "EllipsisNotation", "FillArrays", "Folds", "Functors", "HalfIntegers", "LinearAlgebra", "MacroTools", "Random", "SimpleTraits", "SparseArrays", "SplitApplyCombine", "StaticArrays", "Strided", "StridedViews", "TimerOutputs", "TupleTools", "TypeParameterAccessors", "VectorInterface"] +git-tree-sha1 = "54ea663eaa419e48d5ab8ef231bc6cd80a2eb760" +registries = "General" +uuid = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" +version = "0.4.32" + + [deps.NDTensors.extensions] + NDTensorsAMDGPUExt = ["AMDGPU", "GPUArraysCore"] + NDTensorsCUDAExt = ["CUDA", "GPUArraysCore"] + NDTensorsGPUArraysCoreExt = "GPUArraysCore" + NDTensorsHDF5Ext = "HDF5" + NDTensorsJLArraysExt = ["GPUArraysCore", "JLArrays"] + NDTensorsMappedArraysExt = ["MappedArrays"] + NDTensorsMetalExt = ["GPUArraysCore", "Metal"] + NDTensorsOctavianExt = "Octavian" + NDTensorsTBLISExt = "TBLIS" + NDTensorscuTENSORExt = "cuTENSOR" + + [deps.NDTensors.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" + TBLIS = "48530278-0828-4a49-9772-0f3830dfa1e9" + cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.3.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.30+0" + +[[deps.OpenMPI_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] +git-tree-sha1 = "75eceed7df8ebb6af9c18c4ae89c070a99d91b00" +registries = "General" +uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" +version = "5.0.13+0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.6+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "f9b03759e9ef463718934fbed30820b39997511e" +registries = "General" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "2.0.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.46.0+0" + +[[deps.PackageExtensionCompat]] +git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" +registries = "General" +uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" +version = "1.0.2" +weakdeps = ["Requires", "TOML"] + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "ba0dc8a8a67cacac4842631f960c046e4e563675" +registries = "General" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.8" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "Zstd_jll", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.13.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "edbeefc7a4889f528644251bdb5fc9ab5348bc2c" +registries = "General" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.3.4" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "5005266de4bfe50e53ff44a5cb5c540b6e47a254" +registries = "General" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.6.0" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "REPL", "Reexport", "StringManipulation", "StyledStrings", "Tables"] +git-tree-sha1 = "99fd8f32ab6728ff205cddd24e2d9ea6cbb498d3" +registries = "General" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "3.5.0" + + [deps.PrettyTables.extensions] + PrettyTablesExcelExt = "XLSX" + PrettyTablesTypstryExt = "Typstry" + PrettyTablesWriteDocxExt = "WriteDocx" + + [deps.PrettyTables.weakdeps] + Typstry = "f0ed7684-a786-439e-b1e3-3b82803b501e" + WriteDocx = "d049ceea-54ee-41d7-a26f-ba29db3b6599" + XLSX = "fdbf4ff8-1666-58a4-91e7-1b58723a45e0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.REPL]] +deps = ["Base64", "Dates", "FileWatching", "InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +registries = "General" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Referenceables]] +deps = ["Adapt"] +git-tree-sha1 = "02d31ad62838181c1a3a5fd23a1ce5914a643601" +registries = "General" +uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" +version = "0.1.3" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +registries = "General" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "1.0.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.SerializedElementArrays]] +deps = ["Serialization"] +git-tree-sha1 = "8e73e49eaebf73486446a3c1eede403bff259826" +registries = "General" +uuid = "d3ce8812-9567-47e9-a7b5-65a6d70a3065" +version = "0.1.0" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" +registries = "General" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.2" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "7ddb0b49c109481b046972c0e4ab02b2127d6a75" +registries = "General" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.6" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.13.0" + +[[deps.SplitApplyCombine]] +deps = ["Dictionaries", "Indexing"] +git-tree-sha1 = "55db78e829cf726162fc4fc1b30d05f92092f3f6" +registries = "General" +uuid = "03a91e81-4c3e-53e1-a0a4-9c0c8f19dd66" +version = "1.3.0" + +[[deps.SplittablesBase]] +deps = ["Setfield", "Test"] +git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" +registries = "General" +uuid = "171d559e-b47b-412a-8079-5efa626c420e" +version = "0.1.15" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "de349d5585559b692f518b6d3fc7c179d64b2364" +registries = "General" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.23" + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + + [deps.StaticArrays.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "6ab403037779dae8c514bad259f32a447262455a" +registries = "General" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.4" + +[[deps.Strided]] +deps = ["LinearAlgebra", "PrecompileTools", "StridedViews", "TupleTools"] +git-tree-sha1 = "6a10fade188b73be83da925c6a55111c81467f2c" +registries = "General" +uuid = "5e0ebb24-38b0-5f93-81fe-25c709ecae67" +version = "2.6.5" + + [deps.Strided.extensions] + StridedAMDGPUExt = "AMDGPU" + StridedGPUArraysExt = "GPUArrays" + StridedcuBLASExt = "cuBLAS" + + [deps.Strided.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" + cuBLAS = "182d3088-87b7-4494-8cad-fc6afaa545bc" + +[[deps.StridedViews]] +deps = ["LinearAlgebra", "PrecompileTools"] +git-tree-sha1 = "c0407c7c4f7f1b0387b92ed7e94e82bd070fba46" +registries = "General" +uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" +version = "0.5.3" + + [deps.StridedViews.extensions] + StridedViewsAMDGPUExt = "AMDGPU" + StridedViewsAdaptExt = "Adapt" + StridedViewsCUDACoreExt = "CUDACore" + StridedViewsFiniteDifferencesExt = "FiniteDifferences" + StridedViewsJLArraysExt = "JLArrays" + StridedViewsPtrArraysExt = "PtrArrays" + + [deps.StridedViews.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + CUDACore = "bd0ed864-bdfe-4181-a5ed-ce625a5fdea2" + FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + PtrArrays = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" + +[[deps.StringManipulation]] +deps = ["PrecompileTools", "StyledStrings"] +git-tree-sha1 = "9e3a02d73a8f0a9be04e677dbef758aab40f8bea" +registries = "General" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.6.1" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "159331b30e94d7b11379037feeb9b690950cace8" +registries = "General" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.11.0" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.10.1+0" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +registries = "General" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "a94d9bdda1b7bed0046cea645639ab3f62196fac" +registries = "General" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.14.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.ThreadedScans]] +deps = ["ArgCheck"] +git-tree-sha1 = "ca1ba3000289eacba571aaa4efcefb642e7a1de6" +registries = "General" +uuid = "24d252fe-5d94-4a69-83ea-56a14333d47a" +version = "0.1.0" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "PrettyTables", "Printf", "Tables"] +git-tree-sha1 = "2244393f04554e24b54896b430b2ab3850a2232d" +registries = "General" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "1.2.2" + + [deps.TimerOutputs.extensions] + FlameGraphsExt = "FlameGraphs" + + [deps.TimerOutputs.weakdeps] + FlameGraphs = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" + +[[deps.Transducers]] +deps = ["Accessors", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "SplittablesBase", "Tables"] +git-tree-sha1 = "4aa1fdf6c1da74661f6f5d3edfd96648321dade9" +registries = "General" +uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" +version = "0.4.85" + + [deps.Transducers.extensions] + TransducersAdaptExt = "Adapt" + TransducersBlockArraysExt = "BlockArrays" + TransducersDataFramesExt = "DataFrames" + TransducersLazyArraysExt = "LazyArrays" + TransducersOnlineStatsBaseExt = "OnlineStatsBase" + TransducersReferenceablesExt = "Referenceables" + + [deps.Transducers.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" + +[[deps.TupleTools]] +git-tree-sha1 = "a1c7e924f746f0ebc792425e7d4d2ea5b4470697" +registries = "General" +uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" +version = "1.6.1" + +[[deps.TypeParameterAccessors]] +deps = ["LinearAlgebra", "SimpleTraits"] +git-tree-sha1 = "15553df00a2e5ddac528c859f356aa866f32e44d" +registries = "General" +uuid = "7e5a90cf-f82e-492e-a09b-e3e26432c138" +version = "0.4.23" + + [deps.TypeParameterAccessors.extensions] + TypeParameterAccessorsAMDGPUExt = "AMDGPU" + TypeParameterAccessorsCUDAExt = "CUDA" + TypeParameterAccessorsFillArraysExt = "FillArrays" + TypeParameterAccessorsJLArraysExt = "JLArrays" + TypeParameterAccessorsMetalExt = "Metal" + TypeParameterAccessorsStridedViewsExt = "StridedViews" + TypeParameterAccessorsoneAPIExt = "oneAPI" + + [deps.TypeParameterAccessors.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + StridedViews = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.VectorInterface]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "616c7ddfed0c9e991602f247cb754b3d632dbc14" +registries = "General" +uuid = "409d34a3-91d5-4945-b6ec-7529ddf182d8" +version = "0.6.1" + + [deps.VectorInterface.extensions] + VectorInterfaceChainRulesCoreExt = "ChainRulesCore" + VectorInterfaceEnzymeExt = "Enzyme" + VectorInterfaceMooncakeExt = "Mooncake" + VectorInterfaceStaticArraysExt = "StaticArrays" + + [deps.VectorInterface.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "b826aedca5fce2e3c91904e338c279e5c1a2da74" +registries = "General" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.15.4+0" + +[[deps.Xorg_libpciaccess_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "58972370b81423fc546c56a60ed1a009450177c3" +registries = "General" +uuid = "a65dc6b1-eb27-53a1-bb3e-dea574b5389e" +version = "0.19.0+0" + +[[deps.Zeros]] +git-tree-sha1 = "3286921ca285adecd40313c375540421be5fffeb" +registries = "General" +uuid = "bd1ec220-6eb4-527a-9b49-e79c3db6233b" +version = "0.5.0" + + [deps.Zeros.extensions] + ZerosRandomExt = "Random" + ZerosSIMDExt = "SIMD" + + [deps.Zeros.weakdeps] + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + SIMD = "fdea26ae-647d-5447-a871-4b548cad5224" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.3.1+2" + +[[deps.Zstd_jll]] +deps = ["CompilerSupportLibraries_jll", "Libdl"] +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.aws_c_auth_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_cal_jll", "aws_c_http_jll", "aws_c_sdkutils_jll"] +git-tree-sha1 = "8cab83c96af80a1be968251ce1a0548a7545484d" +registries = "General" +uuid = "2b3700d1-4306-52e2-a478-c162f0c514be" +version = "0.9.6+0" + +[[deps.aws_c_cal_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_common_jll"] +git-tree-sha1 = "22c0f42f4a1f0dc5dcfa8fd267c4ac407c455e7a" +registries = "General" +uuid = "70f11efc-bab2-57f1-b0f3-22aad4e67c4b" +version = "0.9.13+0" + +[[deps.aws_c_common_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a759cb9bf456ad792cc7898a81ae333cce9ef02a" +registries = "General" +uuid = "73048d1d-b8c4-5092-a58d-866c5e8d1e50" +version = "0.12.6+0" + +[[deps.aws_c_compression_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_common_jll"] +git-tree-sha1 = "7910c72f45f44afd297c39fe43b99c56d5ed22ec" +registries = "General" +uuid = "73a04cd5-f3d7-5bac-9290-e8adb709f224" +version = "0.3.2+0" + +[[deps.aws_c_http_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_compression_jll", "aws_c_io_jll"] +git-tree-sha1 = "3fb8685778068de502c72fec5dd8075e037cee15" +registries = "General" +uuid = "3254fc65-9028-534d-aa9d-d76d128babc6" +version = "0.10.15+0" + +[[deps.aws_c_io_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_cal_jll", "aws_c_common_jll", "s2n_tls_jll"] +git-tree-sha1 = "7e481d474b2087ee8bbf55b81bf9119f21e396d9" +registries = "General" +uuid = "13c41daa-f319-5298-b5eb-5754e0170d52" +version = "0.26.3+0" + +[[deps.aws_c_s3_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_auth_jll", "aws_c_common_jll", "aws_c_http_jll", "aws_checksums_jll", "s2n_tls_jll"] +git-tree-sha1 = "3e9917ab25114feba657e71be41cad068b9f6595" +registries = "General" +uuid = "bd1f34fb-993f-5903-a121-aaf302eed6d4" +version = "0.11.5+0" + +[[deps.aws_c_sdkutils_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_common_jll"] +git-tree-sha1 = "c43dfba2c1ab9ea9f02f2c80e86fa16f6460244e" +registries = "General" +uuid = "1282aa60-004d-510b-9f52-12498d409daa" +version = "0.2.4+1" + +[[deps.aws_checksums_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "aws_c_common_jll"] +git-tree-sha1 = "2570c8e23f4771a087b12a47edcaaa670ac05a01" +registries = "General" +uuid = "b2a88e68-78e7-5e94-8c20-c02986ec140e" +version = "0.2.10+0" + +[[deps.dlfcn_win32_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e141d67ffe550eadfb5af1bdbdaf138031e4805f" +registries = "General" +uuid = "c4b69c83-5512-53e3-94e6-de98773c479f" +version = "1.4.2+0" + +[[deps.libaec_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "60f4792734488db6f42e2c7699f1d4594780bd03" +registries = "General" +uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" +version = "1.1.7+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.15.0+0" + +[[deps.mpif_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIABI_jll", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "TOML"] +git-tree-sha1 = "a06fcd368cfe6fe2c0eb7b63320d4d27ddcd010d" +registries = "General" +uuid = "9aeb927a-4695-514f-a259-621a69f20ec0" +version = "1.0.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.67.1+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.8.2+0" + +[[deps.s2n_tls_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d6cfe0874f96962fe4b20ed8bdb71c467e09c2c6" +registries = "General" +uuid = "cddc5d3d-934d-5d3a-9747-62fc12ea3f48" +version = "1.7.11+0" + +[registries.General] +url = "https://github.com/JuliaRegistries/General.git" +uuid = "23338594-aafe-5451-b93e-139f81909106" diff --git a/julia/Project.toml b/julia/Project.toml new file mode 100644 index 0000000..37fa888 --- /dev/null +++ b/julia/Project.toml @@ -0,0 +1,11 @@ +[deps] +HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5" +ITensorMPS = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2" +JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" + +[compat] +HDF5 = "0.17" +ITensorMPS = "0.4" +ITensors = "0.9" +JSON3 = "1" diff --git a/julia/check_mpo_mpo.jl b/julia/check_mpo_mpo.jl new file mode 100644 index 0000000..82baac1 --- /dev/null +++ b/julia/check_mpo_mpo.jl @@ -0,0 +1,85 @@ +# Usage: julia --project=julia julia/check_mpo_mpo.jl +# +# Independent ITensors.jl check of case 3's inputs. Reads instance-n.h5 (MPS +# groups "f" and "g", one site of dimension 4 per quantics bit pair) and +# instance-n.json, evaluates both MPS at sampled fused grid indices, and +# compares with the closed form the interpolative construction approximates: +# +# f(x, y) = sum_i w_i exp(-(a_i dx^2 + 2 b_i dx dy + c_i dy^2)) +# +# The tensors are written by the Rust arm through tensor4all-hdf5's ITensorMPS +# `MPS` schema, so a mismatch here is a mismatch between what Rust stores and +# what an independent implementation reads and contracts. +using HDF5, ITensors, ITensorMPS, JSON3 +using Random + +Random.seed!(0) + +dir, nstr = ARGS[1], ARGS[2] +n = parse(Int, nstr) +meta = JSON3.read(read(joinpath(dir, "instance-n$nstr.json"), String)) +@assert meta.schema_version == 1 +# Cases 2 and 3 once shared the instance file names, so the name is asserted +# rather than trusted. +@assert meta.case == "gaussian_mpo_contraction" +@assert meta.n_gauss == n +r = meta.r +L = meta.box_l + +# The check catches a broken export or a wrong index convention, not an accuracy +# bound: the instance is truncated relative to its own norm, so the pointwise +# deviation scales with that tolerance. Overridable for a tighter local run. +threshold = parse(Float64, get(ENV, "CHECK_THRESHOLD", "1e-4")) + +function mixture(m, x, y) + s = 0.0 + for i in eachindex(m.weights) + q = m.quad[i] + a, b, c = q[1], q[2], q[3] + center = m.centers[i] + cx, cy = center[1], center[2] + dx, dy = x - cx, y - cy + s += m.weights[i] * exp(-(a * dx^2 + 2 * b * dx * dy + c * dy^2)) + end + return s +end + +coord(i) = -L + i * 2.0 * L / 2^r + +function eval_mps(psi::MPS, locals::Vector{Int}) + s = siteinds(psi) + v = ITensor(1.0) + for m in eachindex(psi) + v *= psi[m] * onehot(s[m] => locals[m] + 1) + end + return scalar(v) +end + +fails = 0 +maxdev = 0.0 +h5open(joinpath(dir, "instance-n$nstr.h5"), "r") do file + for (name, m) in (("f", meta.left), ("g", meta.right)) + psi = read(file, name, MPS) + @assert length(psi) == r + @assert all(dim(s) == 4 for s in siteinds(psi)) + for trial in 1:50 + ix, iy = rand(0:(2^r - 1)), rand(0:(2^r - 1)) + xb = [Int((ix >> (r - b)) & 1) for b in 1:r] # MSB first + yb = [Int((iy >> (r - b)) & 1) for b in 1:r] + # Fused local index s = x + 2y with x least significant, matching + # gaussian::fused_qtt_to_mpo. + fused = [xb[b] + 2 * yb[b] for b in 1:r] + got = eval_mps(psi, fused) + want = mixture(m, coord(ix), coord(iy)) + dev = abs(got - want) / max(1.0, abs(want)) + global maxdev = max(maxdev, dev) + if dev > threshold + global fails += 1 + println("MISMATCH $name ($(coord(ix)), $(coord(iy))): $got vs $want") + end + end + end +end +println("max relative deviation: $maxdev (threshold $threshold)") +fails == 0 || error("$fails mismatches") +println("check_mpo_mpo: OK") diff --git a/result/INDEX.md b/result/INDEX.md new file mode 100644 index 0000000..decc256 --- /dev/null +++ b/result/INDEX.md @@ -0,0 +1,18 @@ +# Result index + +Generated by `scripts/gen_index.py`. **Do not edit by hand**; CI checks that this file is what the generator produces. + +- Pinned tensor4all-rs revision: `a5157385f58048355a28a6a003d4cb63d3b1349b` +- Recorded sweeps: 3 + +One row is one complete sweep of the three maintained cases on one machine +at one tensor4all-rs revision. `status` compares the measured revision with +the pin in `Cargo.toml`: `current` is measured at it, `superseded` is not. +A `-t` profile is that machine's optional multithreaded scaling sweep, +read against its one-thread profile rather than instead of it. + +| profile | tensor4all-rs | status | date (UTC) | threads | CPUs | records | report | +| --- | --- | --- | --- | ---: | --- | ---: | --- | +| `linux-ryzen-ai-9-hx-470-4t` | `a5157385f580` | current | 2026-10-10T23:07:58Z | 4 | 0-3 | 48 | [report.md](linux-ryzen-ai-9-hx-470-4t/a5157385f580/report.md) | +| `linux-ryzen-ai-9-hx-470` | `a5157385f580` | current | 2026-10-10T22:45:59Z | 1 | 0 | 48 | [report.md](linux-ryzen-ai-9-hx-470/a5157385f580/report.md) | +| `linux-epyc-7713p` | `9e9aedaebe0d` | superseded | 2026-08-20T06:56:20Z | 1 | 0 | 48 | [report.md](linux-epyc-7713p/9e9aedaebe0d/report.md) | diff --git a/result/README.md b/result/README.md index 3826e53..d1c4f4b 100644 --- a/result/README.md +++ b/result/README.md @@ -1,22 +1,28 @@ # result/ -One directory per hardware profile, each holding one complete sweep of the three -maintained cases: +One directory per (hardware profile, measured tensor4all-rs revision), each +holding one complete sweep of the three maintained cases: ```text -result//run.yaml machine, source and tensor4all-rs revision, thread count, CPU set -result//raw/*.json one record per case, arm and instance -result//report.md generated by scripts/report.py from the records above +result/INDEX.md generated table of contents over every sweep +result///run.yaml machine, source and tensor4all-rs revision, thread count, CPU set +result///raw/*.json one record per case, arm and instance +result///report.md generated by scripts/report.py from the records above ``` -`report.md` is the human-facing entry point. The records behind it are the -source of truth: they carry the per-instance timings, accuracy against the case +[`INDEX.md`](INDEX.md) is the entry point and links every sweep. `report.md` is +the human-facing page of one sweep; the records behind it are the source of +truth, and they carry the per-instance timings, accuracy against the case reference, output bond dimensions, allocation counts, and the parameters that produced them. A profile name is the machine alone on the reference single-core sweep, plus `-t` on the optional multithreaded scaling sweep of the same machine. Read a `-t` profile against that machine's single-core profile, never instead of it. +Measuring a new revision adds a directory rather than replacing one, so the tree +keeps the history the index links to; re-measuring the same revision replaces +that one directory. -Regenerate a report with `python3 scripts/report.py result/`; never edit -one by hand. Historical reports are not maintained, use git history. +Regenerate a report with `python3 scripts/report.py result//` and +the index with `python3 scripts/gen_index.py` (`--check` fails instead of +writing). Never edit either by hand. diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k128.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k128.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k128.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k128.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k16.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k16.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k32.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k32.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k32.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k32.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k4.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k4.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k4.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k4.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k64.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k64.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-aci-k8.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k8.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-aci-k8.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-aci-k8.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k128.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k128.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k128.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k128.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k16.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k16.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k32.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k32.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k32.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k32.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k4.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k4.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k4.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k4.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k64.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k64.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-fit-k8.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k8.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-fit-k8.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-fit-k8.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k128.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k128.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k128.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k128.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k16.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k16.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k32.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k32.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k32.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k32.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k4.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k4.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k4.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k4.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k64.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k64.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-naive-k8.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k8.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-naive-k8.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-naive-k8.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k128.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k128.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k128.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k128.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k16.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k16.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k32.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k32.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k32.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k32.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k4.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k4.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k4.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k4.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k64.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k64.json diff --git a/result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k8.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k8.json similarity index 100% rename from result/linux-epyc-7713p/raw/elementwise_fourier-zipup-k8.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/elementwise_fourier-zipup-k8.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_aci-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_aci-chi64.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-global_fit-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-global_fit-chi64.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_aci-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_aci-chi64.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_elementwise-patched_fit-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_elementwise-patched_fit-chi64.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-global_fit-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-global_fit-chi64.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi16.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi16.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi16.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi16.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi24.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi24.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi24.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi24.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi41.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi41.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi41.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi41.json diff --git a/result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi64.json b/result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi64.json similarity index 100% rename from result/linux-epyc-7713p/raw/gaussian_mpo_contraction-patched_fit-chi64.json rename to result/linux-epyc-7713p/9e9aedaebe0d/raw/gaussian_mpo_contraction-patched_fit-chi64.json diff --git a/result/linux-epyc-7713p/report.md b/result/linux-epyc-7713p/9e9aedaebe0d/report.md similarity index 52% rename from result/linux-epyc-7713p/report.md rename to result/linux-epyc-7713p/9e9aedaebe0d/report.md index 116889f..e15b5f4 100644 --- a/result/linux-epyc-7713p/report.md +++ b/result/linux-epyc-7713p/9e9aedaebe0d/report.md @@ -8,63 +8,63 @@ All timings exclude input construction, cache I/O, format conversion, patch prep ## Case 1: Fourier elementwise -| input χ | K | arm | time (s) | sampled relative L2 | output χ | parameters | -|---:|---:|---|---:|---:|---:|---:| -| 5 | 4 | aci | 0.073347 | 1.163e-08 | 9 | 1026 | -| 5 | 4 | fit | 0.078786 | 1.213e-08 | 8 | 606 | -| 5 | 4 | naive | 0.001891 | 1.211e-08 | 8 | 606 | -| 5 | 4 | zipup | 0.036320 | 1.197e-08 | 8 | 606 | -| 8 | 8 | aci | 0.077033 | 8.173e-09 | 15 | 1628 | -| 8 | 8 | fit | 0.080764 | 1.066e-08 | 8 | 726 | -| 8 | 8 | naive | 0.002576 | 1.066e-08 | 8 | 726 | -| 8 | 8 | zipup | 0.037141 | 1.080e-08 | 8 | 726 | -| 8 | 16 | aci | 0.072607 | 6.089e-09 | 16 | 2206 | -| 8 | 16 | fit | 0.085960 | 1.620e-08 | 10 | 900 | -| 8 | 16 | naive | 0.003332 | 1.620e-08 | 10 | 900 | -| 8 | 16 | zipup | 0.038438 | 1.636e-08 | 10 | 900 | -| 11 | 32 | aci | 0.080893 | 4.939e-09 | 22 | 3324 | -| 11 | 32 | fit | 0.087356 | 1.806e-08 | 13 | 1200 | -| 11 | 32 | naive | 0.006156 | 1.806e-08 | 13 | 1200 | -| 11 | 32 | zipup | 0.038147 | 2.001e-08 | 13 | 1182 | -| 14 | 64 | aci | 0.080989 | 4.480e-09 | 29 | 4752 | -| 14 | 64 | fit | 0.096748 | 1.813e-08 | 16 | 1638 | -| 14 | 64 | naive | 0.009583 | 1.813e-08 | 16 | 1638 | -| 14 | 64 | zipup | 0.044973 | 1.856e-08 | 16 | 1638 | -| 16 | 128 | aci | 0.089005 | 3.255e-09 | 32 | 6728 | -| 16 | 128 | fit | 0.094404 | 1.044e-08 | 18 | 2258 | -| 16 | 128 | naive | 0.016861 | 1.044e-08 | 18 | 2258 | -| 16 | 128 | zipup | 0.044607 | 1.064e-08 | 18 | 2258 | +| input χ | K | arm | time (s) | sampled relative L2 | output χ | parameters | allocations | allocated (MiB) | +|---:|---:|---|---:|---:|---:|---:|---:|---:| +| 5 | 4 | aci | 0.073347 | 1.163e-08 | 9 | 1026 | | | +| 5 | 4 | fit | 0.078786 | 1.213e-08 | 8 | 606 | | | +| 5 | 4 | naive | 0.001891 | 1.211e-08 | 8 | 606 | | | +| 5 | 4 | zipup | 0.036320 | 1.197e-08 | 8 | 606 | | | +| 8 | 8 | aci | 0.077033 | 8.173e-09 | 15 | 1628 | | | +| 8 | 8 | fit | 0.080764 | 1.066e-08 | 8 | 726 | | | +| 8 | 8 | naive | 0.002576 | 1.066e-08 | 8 | 726 | | | +| 8 | 8 | zipup | 0.037141 | 1.080e-08 | 8 | 726 | | | +| 8 | 16 | aci | 0.072607 | 6.089e-09 | 16 | 2206 | | | +| 8 | 16 | fit | 0.085960 | 1.620e-08 | 10 | 900 | | | +| 8 | 16 | naive | 0.003332 | 1.620e-08 | 10 | 900 | | | +| 8 | 16 | zipup | 0.038438 | 1.636e-08 | 10 | 900 | | | +| 11 | 32 | aci | 0.080893 | 4.939e-09 | 22 | 3324 | | | +| 11 | 32 | fit | 0.087356 | 1.806e-08 | 13 | 1200 | | | +| 11 | 32 | naive | 0.006156 | 1.806e-08 | 13 | 1200 | | | +| 11 | 32 | zipup | 0.038147 | 2.001e-08 | 13 | 1182 | | | +| 14 | 64 | aci | 0.080989 | 4.480e-09 | 29 | 4752 | | | +| 14 | 64 | fit | 0.096748 | 1.813e-08 | 16 | 1638 | | | +| 14 | 64 | naive | 0.009583 | 1.813e-08 | 16 | 1638 | | | +| 14 | 64 | zipup | 0.044973 | 1.856e-08 | 16 | 1638 | | | +| 16 | 128 | aci | 0.089005 | 3.255e-09 | 32 | 6728 | | | +| 16 | 128 | fit | 0.094404 | 1.044e-08 | 18 | 2258 | | | +| 16 | 128 | naive | 0.016861 | 1.044e-08 | 18 | 2258 | | | +| 16 | 128 | zipup | 0.044607 | 1.064e-08 | 18 | 2258 | | | ## Case 2: Gaussian elementwise, global versus patched -| input χ | raw χ | N | R | arm | time (s) | sampled relative L2 | input patches | input max patch χ | output patches | parameters | speedup | -|---:|---:|---:|---:|---|---:|---:|---:|---:|---:|---:|---:| -| 16 | 32 | 2 | 6 | global_aci | 0.008655 | 1.398e-06 | 2 | 16 | 1 | 6560 | 1.000 | -| 16 | 32 | 2 | 6 | global_fit | 0.028473 | 2.293e-06 | 2 | 16 | 1 | 2300 | 1.000 | -| 16 | 32 | 2 | 6 | patched_aci | 0.021844 | 2.292e-06 | 2 | 16 | 1 | 2300 | 0.396 | -| 16 | 32 | 2 | 6 | patched_fit | 0.044864 | 2.292e-06 | 2 | 16 | 1 | 2300 | 0.635 | -| 24 | 50 | 8 | 7 | global_aci | 0.019403 | 2.942e-06 | 2 | 24 | 1 | 23268 | 1.000 | -| 24 | 50 | 8 | 7 | global_fit | 0.042136 | 3.462e-06 | 2 | 24 | 1 | 4776 | 1.000 | -| 24 | 50 | 8 | 7 | patched_aci | 0.270262 | 3.459e-06 | 2 | 24 | 1 | 4908 | 0.072 | -| 24 | 50 | 8 | 7 | patched_fit | 0.112770 | 3.459e-06 | 2 | 24 | 1 | 4908 | 0.374 | -| 41 | 64 | 32 | 8 | global_aci | 0.065374 | 3.468e-06 | 2 | 41 | 1 | 98992 | 1.000 | -| 41 | 64 | 32 | 8 | global_fit | 0.088816 | 4.661e-06 | 2 | 41 | 1 | 11072 | 1.000 | -| 41 | 64 | 32 | 8 | patched_aci | 2.430336 | 4.366e-06 | 2 | 41 | 1 | 11740 | 0.027 | -| 41 | 64 | 32 | 8 | patched_fit | 0.593427 | 4.365e-06 | 2 | 41 | 1 | 11740 | 0.150 | -| 64 | 99 | 128 | 9 | global_aci | 0.212690 | 2.705e-06 | 2 | 64 | 1 | 317712 | 1.000 | -| 64 | 99 | 128 | 9 | global_fit | 0.329209 | 3.993e-06 | 2 | 64 | 1 | 25476 | 1.000 | -| 64 | 99 | 128 | 9 | patched_aci | 8.942323 | 3.168e-06 | 2 | 64 | 1 | 28028 | 0.024 | -| 64 | 99 | 128 | 9 | patched_fit | 4.083926 | 3.136e-06 | 2 | 64 | 1 | 28028 | 0.081 | +| input χ | raw χ | N | R | arm | time (s) | sampled relative L2 | input patches | input max patch χ | output patches | parameters | allocations | allocated (MiB) | speedup | +|---:|---:|---:|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| 16 | 32 | 2 | 6 | global_aci | 0.008655 | 1.398e-06 | 2 | 16 | 1 | 6560 | | | 1.000 | +| 16 | 32 | 2 | 6 | global_fit | 0.028473 | 2.293e-06 | 2 | 16 | 1 | 2300 | | | 1.000 | +| 16 | 32 | 2 | 6 | patched_aci | 0.021844 | 2.292e-06 | 2 | 16 | 1 | 2300 | | | 0.396 | +| 16 | 32 | 2 | 6 | patched_fit | 0.044864 | 2.292e-06 | 2 | 16 | 1 | 2300 | | | 0.635 | +| 24 | 50 | 8 | 7 | global_aci | 0.019403 | 2.942e-06 | 2 | 24 | 1 | 23268 | | | 1.000 | +| 24 | 50 | 8 | 7 | global_fit | 0.042136 | 3.462e-06 | 2 | 24 | 1 | 4776 | | | 1.000 | +| 24 | 50 | 8 | 7 | patched_aci | 0.270262 | 3.459e-06 | 2 | 24 | 1 | 4908 | | | 0.072 | +| 24 | 50 | 8 | 7 | patched_fit | 0.112770 | 3.459e-06 | 2 | 24 | 1 | 4908 | | | 0.374 | +| 41 | 64 | 32 | 8 | global_aci | 0.065374 | 3.468e-06 | 2 | 41 | 1 | 98992 | | | 1.000 | +| 41 | 64 | 32 | 8 | global_fit | 0.088816 | 4.661e-06 | 2 | 41 | 1 | 11072 | | | 1.000 | +| 41 | 64 | 32 | 8 | patched_aci | 2.430336 | 4.366e-06 | 2 | 41 | 1 | 11740 | | | 0.027 | +| 41 | 64 | 32 | 8 | patched_fit | 0.593427 | 4.365e-06 | 2 | 41 | 1 | 11740 | | | 0.150 | +| 64 | 99 | 128 | 9 | global_aci | 0.212690 | 2.705e-06 | 2 | 64 | 1 | 317712 | | | 1.000 | +| 64 | 99 | 128 | 9 | global_fit | 0.329209 | 3.993e-06 | 2 | 64 | 1 | 25476 | | | 1.000 | +| 64 | 99 | 128 | 9 | patched_aci | 8.942323 | 3.168e-06 | 2 | 64 | 1 | 28028 | | | 0.024 | +| 64 | 99 | 128 | 9 | patched_fit | 4.083926 | 3.136e-06 | 2 | 64 | 1 | 28028 | | | 0.081 | ## Case 3: Gaussian MPO-MPO contraction, global versus patched -| input χ | raw χ | N | R | arm | time (s) | sampled relative L2 | input patches | input max patch χ | output patches | parameters | speedup | -|---:|---:|---:|---:|---|---:|---:|---:|---:|---:|---:|---:| -| 16 | 32 | 2 | 6 | global_fit | 0.021572 | 5.943e-07 | 2 | 16 | 1 | 2008 | 1.000 | -| 16 | 32 | 2 | 6 | patched_fit | 0.022959 | 5.943e-07 | 2 | 16 | 1 | 2008 | 0.940 | -| 24 | 50 | 8 | 7 | global_fit | 0.046198 | 7.318e-07 | 2 | 24 | 1 | 3652 | 1.000 | -| 24 | 50 | 8 | 7 | patched_fit | 0.048666 | 7.318e-07 | 2 | 24 | 1 | 3652 | 0.949 | -| 41 | 64 | 32 | 8 | global_fit | 0.093784 | 1.343e-06 | 2 | 41 | 1 | 7340 | 1.000 | -| 41 | 64 | 32 | 8 | patched_fit | 0.098161 | 1.773e-06 | 2 | 41 | 1 | 7192 | 0.955 | -| 64 | 99 | 128 | 9 | global_fit | 0.435670 | 1.525e-06 | 2 | 64 | 1 | 17604 | 1.000 | -| 64 | 99 | 128 | 9 | patched_fit | 0.299308 | 2.108e-06 | 2 | 64 | 1 | 16764 | 1.456 | +| input χ | raw χ | N | R | arm | time (s) | sampled relative L2 | input patches | input max patch χ | output patches | parameters | allocations | allocated (MiB) | speedup | +|---:|---:|---:|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| 16 | 32 | 2 | 6 | global_fit | 0.021572 | 5.943e-07 | 2 | 16 | 1 | 2008 | | | 1.000 | +| 16 | 32 | 2 | 6 | patched_fit | 0.022959 | 5.943e-07 | 2 | 16 | 1 | 2008 | | | 0.940 | +| 24 | 50 | 8 | 7 | global_fit | 0.046198 | 7.318e-07 | 2 | 24 | 1 | 3652 | | | 1.000 | +| 24 | 50 | 8 | 7 | patched_fit | 0.048666 | 7.318e-07 | 2 | 24 | 1 | 3652 | | | 0.949 | +| 41 | 64 | 32 | 8 | global_fit | 0.093784 | 1.343e-06 | 2 | 41 | 1 | 7340 | | | 1.000 | +| 41 | 64 | 32 | 8 | patched_fit | 0.098161 | 1.773e-06 | 2 | 41 | 1 | 7192 | | | 0.955 | +| 64 | 99 | 128 | 9 | global_fit | 0.435670 | 1.525e-06 | 2 | 64 | 1 | 17604 | | | 1.000 | +| 64 | 99 | 128 | 9 | patched_fit | 0.299308 | 2.108e-06 | 2 | 64 | 1 | 16764 | | | 1.456 | diff --git a/result/linux-epyc-7713p/run.yaml b/result/linux-epyc-7713p/9e9aedaebe0d/run.yaml similarity index 100% rename from result/linux-epyc-7713p/run.yaml rename to result/linux-epyc-7713p/9e9aedaebe0d/run.yaml diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k128.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k128.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k32.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k32.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k4.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k4.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k8.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-aci-k8.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-aci-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k128.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k128.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k32.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k32.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k4.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k4.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k8.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-fit-k8.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-fit-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k128.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k128.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k32.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k32.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k4.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k4.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k8.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-naive-k8.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-naive-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k128.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k128.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k32.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k32.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k4.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k4.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k8.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/elementwise_fourier-zipup-k8.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/elementwise_fourier-zipup-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_aci-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_aci-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-global_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-global_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_aci-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_aci-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_elementwise-patched_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_elementwise-patched_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-global_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/raw/gaussian_mpo_contraction-patched_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470-4t/report.md b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/report.md similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/report.md rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/report.md diff --git a/result/linux-ryzen-ai-9-hx-470-4t/run.yaml b/result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/run.yaml similarity index 100% rename from result/linux-ryzen-ai-9-hx-470-4t/run.yaml rename to result/linux-ryzen-ai-9-hx-470-4t/a5157385f580/run.yaml diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k128.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k128.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k32.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k32.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k4.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k4.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k8.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-aci-k8.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-aci-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k128.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k128.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k32.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k32.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k4.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k4.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k8.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-fit-k8.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-fit-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k128.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k128.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k32.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k32.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k4.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k4.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k8.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-naive-k8.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-naive-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k128.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k128.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k128.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k128.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k32.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k32.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k32.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k32.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k4.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k4.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k4.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k4.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k8.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k8.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/elementwise_fourier-zipup-k8.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/elementwise_fourier-zipup-k8.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_aci-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_aci-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-global_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-global_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_aci-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_aci-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_elementwise-patched_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_elementwise-patched_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-global_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-global_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi16.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi16.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi16.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi16.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi24.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi24.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi24.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi24.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi41.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi41.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi41.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi41.json diff --git a/result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi64.json b/result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi64.json similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/raw/gaussian_mpo_contraction-patched_fit-chi64.json rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/raw/gaussian_mpo_contraction-patched_fit-chi64.json diff --git a/result/linux-ryzen-ai-9-hx-470/report.md b/result/linux-ryzen-ai-9-hx-470/a5157385f580/report.md similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/report.md rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/report.md diff --git a/result/linux-ryzen-ai-9-hx-470/run.yaml b/result/linux-ryzen-ai-9-hx-470/a5157385f580/run.yaml similarity index 100% rename from result/linux-ryzen-ai-9-hx-470/run.yaml rename to result/linux-ryzen-ai-9-hx-470/a5157385f580/run.yaml diff --git a/scripts/gen_index.py b/scripts/gen_index.py new file mode 100644 index 0000000..78d8809 --- /dev/null +++ b/scripts/gen_index.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Generate and validate result/INDEX.md. + +The index is the entry point to the committed sweeps: one row per +(profile, measured tensor4all-rs revision), each linking to that sweep's report. +It is generated so that it cannot drift from the tree it describes. +""" + +import argparse +import re +import sys +from pathlib import Path + +RESULT = Path(__file__).resolve().parents[1] / "result" +HEADER = ( + "Generated by `scripts/gen_index.py`. **Do not edit by hand**; CI checks " + "that this file is what the generator produces." +) + + +def pinned_revision() -> str: + cargo = (RESULT.parent / "Cargo.toml").read_text() + found = re.search( + r'package = "tensor4all-itensorlike".*?rev = "([0-9a-f]+)"', cargo, re.S + ) + if found is None: + raise SystemExit("cannot read the tensor4all-rs pin from Cargo.toml") + return found.group(1) + + +def metadata(path: Path) -> dict[str, str]: + result = {} + for line in path.read_text().splitlines(): + if ":" in line: + key, value = line.split(":", 1) + result[key.strip()] = value.strip() + return result + + +def pages() -> list[dict[str, object]]: + rows = [] + for run in sorted(RESULT.glob("*/*/run.yaml")): + revision_dir = run.parent + profile = revision_dir.parent.name + meta = metadata(run) + revision = meta.get("tensor4all_rs_rev", "") + if not revision.startswith(revision_dir.name): + raise SystemExit( + f"{run}: directory name {revision_dir.name!r} does not match " + f"tensor4all_rs_rev {revision!r}" + ) + records = len(list((revision_dir / "raw").glob("*.json"))) + if records == 0: + raise SystemExit(f"{revision_dir}: no JSON records") + if not (revision_dir / "report.md").exists(): + raise SystemExit(f"{revision_dir}: no report.md") + rows.append( + { + "profile": profile, + "revision": revision, + "date": meta.get("date_utc", ""), + "threads": meta.get("threads", ""), + "cpus": meta.get("cpu_affinity", ""), + "chip": meta.get("chip", ""), + "records": records, + "path": revision_dir.relative_to(RESULT).as_posix(), + } + ) + rows.sort(key=lambda row: (row["date"], row["profile"]), reverse=True) + return rows + + +def render(rows: list[dict[str, object]], pin: str) -> str: + lines = [ + "# Result index", + "", + HEADER, + "", + f"- Pinned tensor4all-rs revision: `{pin}`", + f"- Recorded sweeps: {len(rows)}", + "", + "One row is one complete sweep of the three maintained cases on one machine", + "at one tensor4all-rs revision. `status` compares the measured revision with", + "the pin in `Cargo.toml`: `current` is measured at it, `superseded` is not.", + "A `-t` profile is that machine's optional multithreaded scaling sweep,", + "read against its one-thread profile rather than instead of it.", + "", + "| profile | tensor4all-rs | status | date (UTC) | threads | CPUs | records | report |", + "| --- | --- | --- | --- | ---: | --- | ---: | --- |", + ] + for row in rows: + status = "current" if row["revision"] == pin else "superseded" + lines.append( + f"| `{row['profile']}` | `{row['revision'][:12]}` | {status} | " + f"{row['date']} | {row['threads']} | {row['cpus']} | {row['records']} | " + f"[report.md]({row['path']}/report.md) |" + ) + lines.append("") + return "\n".join(lines) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--check", + action="store_true", + help="fail instead of writing when result/INDEX.md is out of date", + ) + args = parser.parse_args() + + text = render(pages(), pinned_revision()) + index = RESULT / "INDEX.md" + if args.check: + current = index.read_text() if index.exists() else "" + if current != text: + print( + "result/INDEX.md is out of date; run scripts/gen_index.py", + file=sys.stderr, + ) + raise SystemExit(1) + print("result/INDEX.md is current") + return + index.write_text(text) + print(f"wrote {index}") + + +if __name__ == "__main__": + main() diff --git a/scripts/run_all.sh b/scripts/run_all.sh index b78e115..7dcf46f 100755 --- a/scripts/run_all.sh +++ b/scripts/run_all.sh @@ -7,7 +7,14 @@ if [[ $# -ne 1 ]]; then fi profile=$1 -out="result/$profile" +# The measured revision comes from the pin, so the recorded revision and the +# directory the sweep lands in cannot disagree with the code that was built. +rev=$(grep -m1 'tensor4all-itensorlike = ' Cargo.toml | sed -n 's/.*rev = "\([0-9a-f]*\)".*/\1/p') +if [[ -z $rev ]]; then + echo "cannot read the tensor4all-rs pin from Cargo.toml" >&2 + exit 2 +fi +out="result/$profile/${rev:0:12}" raw="$out/raw" core=${BENCH_CPU_CORE:-0} threads=${BENCH_THREADS:-1} @@ -23,6 +30,8 @@ else affinity="$core-$((core + threads - 1))" fi mkdir -p "$raw" +# Re-measuring a (profile, revision) replaces that sweep; other revisions of the +# same profile stay, and result/INDEX.md links them all. rm -f "$raw"/*.json export RAYON_NUM_THREADS="$threads" @@ -57,7 +66,7 @@ os: $(uname -s) chip: ${chip:-unknown} memory_gb: ${memory_gb:-unknown} repo_rev: $repo_rev -tensor4all_rs_rev: a5157385f58048355a28a6a003d4cb63d3b1349b +tensor4all_rs_rev: $rev threads: $threads cpu_affinity: $affinity EOF @@ -66,3 +75,4 @@ run cargo run --release --locked --bin elementwise_fourier run cargo run --release --locked --bin elementwise_gauss2d_patched run cargo run --release --locked --bin mpo_mpo_aniso_patched python3 scripts/report.py "$out" +python3 scripts/gen_index.py diff --git a/src/bin/mpo_mpo_aniso_patched.rs b/src/bin/mpo_mpo_aniso_patched.rs index 1ee04f8..cec6899 100644 --- a/src/bin/mpo_mpo_aniso_patched.rs +++ b/src/bin/mpo_mpo_aniso_patched.rs @@ -6,10 +6,10 @@ use std::time::Instant; use tensor4all_itensorlike::TensorTrain; use tensor4all_simplett::AbstractTensorTrain; -use t4a_bench::gaussian::fused_qtt_to_mpo; +use t4a_bench::gaussian::{fused_qtt_to_mpo, AnisoMixture2D}; use t4a_bench::gaussian_input::{ prepare_gaussian_pair, sampled_input_relative_l2, tensortrain_n_params as simple_n_params, - GaussianInputConfig, INPUT_L2_RTOL, PATCH_CAP, + GaussianInputConfig, GaussianInputPair, INPUT_L2_RTOL, PATCH_CAP, }; use t4a_bench::harness::time_median; use t4a_bench::mpo_contract::sampled_relative_l2_vs_aniso_grid; @@ -28,6 +28,45 @@ fn env_or(name: &str, default: T) -> T { .unwrap_or(default) } +/// One term of the closed form the interpolative input approximates. +fn mixture_json(mixture: &AnisoMixture2D) -> serde_json::Value { + serde_json::json!({ + "weights": mixture.weights, + "quad": mixture.quad.iter().map(|&q| [q.0, q.1, q.2]).collect::>(), + "centers": mixture.centers.iter().map(|&c| [c.0, c.1]).collect::>(), + }) +} + +/// Write the ITensors-compatible instance dump for the Julia cross-check. +/// +/// The two groups `f` and `g` are the fused site-dimension-4 QTTs, one MPS site +/// per quantics bit pair, and the JSON carries the mixtures they approximate. +/// The case name is asserted on the Julia side, because cases 2 and 3 once +/// shared these file names. +fn export_instance(dir: &str, n: usize, input: &GaussianInputPair) -> anyhow::Result<()> { + std::fs::create_dir_all(dir)?; + let h5 = format!("{dir}/instance-n{n}.h5"); + t4a_bench::hdf5_export::save_tt_as_mps(&h5, "f", &input.left, false)?; + t4a_bench::hdf5_export::save_tt_as_mps(&h5, "g", &input.right, true)?; + let meta = serde_json::json!({ + "schema_version": 1, + "case": CASE, + "n_gauss": n, + "r": input.r, + "box_l": input.box_l, + "interpolation_tolerance": 1e-10, + "input_l2_rtol": INPUT_L2_RTOL, + "left": mixture_json(&input.left_mixture), + "right": mixture_json(&input.right_mixture), + }); + std::fs::write( + format!("{dir}/instance-n{n}.json"), + serde_json::to_string_pretty(&meta)?, + )?; + eprintln!("exported instance-n{n} to {dir}"); + Ok(()) +} + fn main() -> anyhow::Result<()> { let ns = std::env::var("BENCH_NS").unwrap_or_else(|_| "2,8,32,128".into()); let ns = ns @@ -93,6 +132,13 @@ fn run_point( let input_chi = input.left.rank().max(input.right.rank()); let input_params = simple_n_params(&input.left) + simple_n_params(&input.right); + // Independent ITensors.jl cross-check export: the two input QTTs and the + // analytic mixtures they approximate. `julia/check_mpo_mpo.jl` reads both and + // evaluates the tensors at sampled grid points against the closed form. + if let Some(dir) = std::env::var("EXPORT_HDF5").ok().filter(|d| !d.is_empty()) { + export_instance(&dir, n, &input)?; + } + let (global_result, global_timing) = time_median(warmups, runs, || { prepared.contract_fit_global(INPUT_L2_RTOL, GLOBAL_MAX_BOND) });