Skip to content

Commit 5009a8b

Browse files
authored
Improve CompressedSensingIPM.jl (#25)
1 parent 564f0c8 commit 5009a8b

File tree

12 files changed

+218
-465
lines changed

12 files changed

+218
-465
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1717
[compat]
1818
AMDGPU = "2.0.1"
1919
CUDA = "5.8.2"
20-
FFTW = "1.8.1"
20+
FFTW = "1.9.0"
2121
Krylov = "0.10.1"
2222
LinearAlgebra = "1.10"
23-
MadNLP = "0.8.9"
23+
MadNLP = "0.8.10"
2424
MadNLPGPU = "0.7.13"
2525
NLPModels = "0.21.5"
2626
Random = "1.10"

benchmarks/Manifest.toml

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ version = "0.5.3"
1212

1313
[[deps.AMDGPU]]
1414
deps = ["AbstractFFTs", "AcceleratedKernels", "Adapt", "Atomix", "CEnum", "ExprTools", "GPUArrays", "GPUCompiler", "GPUToolbox", "KernelAbstractions", "LLD_jll", "LLVM", "LLVM_jll", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "PrettyTables", "Printf", "ROCmDeviceLibs_jll", "Random", "Random123", "RandomNumbers", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "Statistics", "UnsafeAtomics"]
15-
git-tree-sha1 = "0cd47f7233bea4cf0201eb0047f532176da2621d"
15+
git-tree-sha1 = "7508a4e161f28689740a7ef9dcc907e679d1a735"
1616
uuid = "21141c5a-9bdb-4563-92ae-f87d6854732e"
17-
version = "1.3.4"
17+
version = "2.0.1"
1818

1919
[deps.AMDGPU.extensions]
2020
AMDGPUChainRulesCoreExt = "ChainRulesCore"
@@ -39,17 +39,15 @@ version = "1.5.0"
3939
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
4040

4141
[[deps.AcceleratedKernels]]
42-
deps = ["ArgCheck", "GPUArraysCore", "KernelAbstractions", "Markdown"]
43-
git-tree-sha1 = "bf0d8cca80cdf7f0f6d9851d94d42a5db862f1b9"
42+
deps = ["ArgCheck", "GPUArraysCore", "KernelAbstractions", "Markdown", "UnsafeAtomics"]
43+
git-tree-sha1 = "0de01460ed11e90b42ce666c8ed0265bad59aa6a"
4444
uuid = "6a4ca0a5-0e36-4168-a932-d9be78d558f1"
45-
version = "0.4.2"
45+
version = "0.4.3"
4646

4747
[deps.AcceleratedKernels.extensions]
48-
AcceleratedKernelsMetalExt = "Metal"
4948
AcceleratedKernelsoneAPIExt = "oneAPI"
5049

5150
[deps.AcceleratedKernels.weakdeps]
52-
Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
5351
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
5452

5553
[[deps.Adapt]]
@@ -84,9 +82,9 @@ version = "1.11.0"
8482

8583
[[deps.Atomix]]
8684
deps = ["UnsafeAtomics"]
87-
git-tree-sha1 = "b5bb4dc6248fde467be2a863eb8452993e74d402"
85+
git-tree-sha1 = "29bb0eb6f578a587a49da16564705968667f5fa8"
8886
uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458"
89-
version = "1.1.1"
87+
version = "1.1.2"
9088

9189
[deps.Atomix.extensions]
9290
AtomixCUDAExt = "CUDA"
@@ -189,9 +187,9 @@ version = "0.13.1"
189187

190188
[[deps.Compat]]
191189
deps = ["TOML", "UUIDs"]
192-
git-tree-sha1 = "3a3dfb30697e96a440e4149c8c51bf32f818c0f3"
190+
git-tree-sha1 = "0037835448781bb46feb39866934e243886d756a"
193191
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
194-
version = "4.17.0"
192+
version = "4.18.0"
195193
weakdeps = ["Dates", "LinearAlgebra"]
196194

197195
[deps.Compat.extensions]
@@ -220,15 +218,15 @@ version = "1.16.0"
220218

221219
[[deps.DataFrames]]
222220
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
223-
git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6"
221+
git-tree-sha1 = "a37ac0840a1196cd00317b57e39d6586bf0fd6f6"
224222
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
225-
version = "1.7.0"
223+
version = "1.7.1"
226224

227225
[[deps.DataStructures]]
228-
deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
229-
git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0"
226+
deps = ["OrderedCollections"]
227+
git-tree-sha1 = "6c72198e6a101cccdd4c9731d3985e904ba26037"
230228
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
231-
version = "0.18.22"
229+
version = "0.19.1"
232230

233231
[[deps.DataValueInterfaces]]
234232
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
@@ -368,9 +366,9 @@ uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
368366
version = "0.3.28"
369367

370368
[[deps.InlineStrings]]
371-
git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420"
369+
git-tree-sha1 = "8f3d257792a522b4601c24a577954b0a8cd7334d"
372370
uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48"
373-
version = "1.4.4"
371+
version = "1.4.5"
374372

375373
[deps.InlineStrings.extensions]
376374
ArrowTypesExt = "ArrowTypes"
@@ -382,9 +380,9 @@ version = "1.4.4"
382380

383381
[[deps.IntelOpenMP_jll]]
384382
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
385-
git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48"
383+
git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303"
386384
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
387-
version = "2025.0.4+0"
385+
version = "2025.2.0+0"
388386

389387
[[deps.InteractiveUtils]]
390388
deps = ["Markdown"]
@@ -408,9 +406,9 @@ version = "1.0.0"
408406

409407
[[deps.JLLWrappers]]
410408
deps = ["Artifacts", "Preferences"]
411-
git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6"
409+
git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2"
412410
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
413-
version = "1.7.0"
411+
version = "1.7.1"
414412

415413
[[deps.JSON]]
416414
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
@@ -426,9 +424,9 @@ version = "0.2.1+0"
426424

427425
[[deps.KernelAbstractions]]
428426
deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"]
429-
git-tree-sha1 = "4efa9cec6f308e0f492ea635421638bff81cf6f8"
427+
git-tree-sha1 = "83c617e9e9b02306a7acab79e05ec10253db7c87"
430428
uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c"
431-
version = "0.9.36"
429+
version = "0.9.38"
432430

433431
[deps.KernelAbstractions.extensions]
434432
EnzymeExt = "EnzymeCore"
@@ -493,7 +491,7 @@ version = "1.4.0"
493491
deps = ["LinearAlgebra", "SparseArrays"]
494492
git-tree-sha1 = "71297e2bb9f92e675dfd218cc1b309ae180ffa15"
495493
repo-rev = "master"
496-
repo-url = "https://github.com/vishwas1984/LaplaceInterpolation.jl.git"
494+
repo-url = "https://github.com/vishwas1984/LaplaceInterpolation.jl"
497495
uuid = "afb1b68e-e51f-4e49-a799-0e085170423d"
498496
version = "0.1.1"
499497

@@ -544,9 +542,9 @@ version = "1.11.0"
544542

545543
[[deps.LinearOperators]]
546544
deps = ["FastClosures", "LinearAlgebra", "Printf", "Requires", "SparseArrays", "TimerOutputs"]
547-
git-tree-sha1 = "1894a798ed8887895c5ae70f1fe8331c0c1d8480"
545+
git-tree-sha1 = "db137007d2c4ed948aa5f2518a2b451851ea8bda"
548546
uuid = "5c8ed15e-5a4c-59e4-a42b-c7e8811fb125"
549-
version = "2.10.0"
547+
version = "2.11.0"
550548

551549
[deps.LinearOperators.extensions]
552550
LinearOperatorsAMDGPUExt = "AMDGPU"
@@ -592,9 +590,9 @@ version = "5.1.3+0"
592590

593591
[[deps.MKL_jll]]
594592
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"]
595-
git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae"
593+
git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa"
596594
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
597-
version = "2025.0.1+1"
595+
version = "2025.2.0+0"
598596

599597
[[deps.MacroTools]]
600598
git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522"
@@ -603,9 +601,9 @@ version = "0.5.16"
603601

604602
[[deps.MadNLP]]
605603
deps = ["LDLFactorizations", "LinearAlgebra", "Logging", "NLPModels", "Pkg", "Printf", "SolverCore", "SparseArrays", "SuiteSparse"]
606-
git-tree-sha1 = "70ae9a1212ae748a19926db8b59642044709af13"
604+
git-tree-sha1 = "6b8cda243ee56472853b92bd131da5998ce95d71"
607605
uuid = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6"
608-
version = "0.8.8"
606+
version = "0.8.10"
609607

610608
[deps.MadNLP.extensions]
611609
MadNLPMOI = "MathOptInterface"
@@ -615,9 +613,9 @@ version = "0.8.8"
615613

616614
[[deps.MadNLPGPU]]
617615
deps = ["AMD", "CUDA", "CUDSS", "KernelAbstractions", "LinearAlgebra", "MadNLP", "Metis", "SparseArrays"]
618-
git-tree-sha1 = "fb72ac1ee9ff608670315dd00514e9b423d1ff48"
616+
git-tree-sha1 = "760bc61aa70d536729ec6d08ed6799726b126f3b"
619617
uuid = "d72a61cc-809d-412f-99be-fd81f4b8a598"
620-
version = "0.7.10"
618+
version = "0.7.13"
621619

622620
[[deps.Markdown]]
623621
deps = ["Base64"]
@@ -673,15 +671,15 @@ version = "0.4.3"
673671

674672
[[deps.NVTX]]
675673
deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"]
676-
git-tree-sha1 = "1a24c3430fa2ef3317c4c97fa7e431ef45793bd2"
674+
git-tree-sha1 = "6b573a3e66decc7fc747afd1edbf083ff78c813a"
677675
uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f"
678-
version = "1.0.0"
676+
version = "1.0.1"
679677

680678
[[deps.NVTX_jll]]
681679
deps = ["Artifacts", "JLLWrappers", "Libdl"]
682-
git-tree-sha1 = "cd475b587ff77910789a18e68da789fc446a2a05"
680+
git-tree-sha1 = "af2232f69447494514c25742ba1503ec7e9877fe"
683681
uuid = "e98f9f5b-d649-5603-91fd-7774390e6439"
684-
version = "3.2.1+0"
682+
version = "3.2.2+0"
685683

686684
[[deps.NetworkOptions]]
687685
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
@@ -745,9 +743,9 @@ version = "1.2.1"
745743

746744
[[deps.Preferences]]
747745
deps = ["TOML"]
748-
git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
746+
git-tree-sha1 = "0f27480397253da18fe2c12a4ba4eb9eb208bf3d"
749747
uuid = "21216c6a-2e73-6563-6e65-726566657250"
750-
version = "1.4.3"
748+
version = "1.5.0"
751749

752750
[[deps.PrettyTables]]
753751
deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"]
@@ -833,9 +831,9 @@ version = "0.7.0"
833831

834832
[[deps.ScopedValues]]
835833
deps = ["HashArrayMappedTries", "Logging"]
836-
git-tree-sha1 = "1147f140b4c8ddab224c94efa9569fc23d63ab44"
834+
git-tree-sha1 = "c3b2323466378a2ba15bea4b2f73b081e022f473"
837835
uuid = "7e506255-f358-4e82-b7e4-beb19740aa63"
838-
version = "1.3.0"
836+
version = "1.5.0"
839837

840838
[[deps.Scratch]]
841839
deps = ["Dates"]
@@ -861,9 +859,9 @@ version = "0.3.8"
861859

862860
[[deps.SortingAlgorithms]]
863861
deps = ["DataStructures"]
864-
git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085"
862+
git-tree-sha1 = "64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9"
865863
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
866-
version = "1.2.1"
864+
version = "1.2.2"
867865

868866
[[deps.SparseArrays]]
869867
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
@@ -884,9 +882,9 @@ version = "2.5.1"
884882

885883
[[deps.StaticArrays]]
886884
deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
887-
git-tree-sha1 = "0feb6b9031bd5c51f9072393eb5ab3efd31bf9e4"
885+
git-tree-sha1 = "cbea8a6bd7bed51b1619658dec70035e07b8502f"
888886
uuid = "90137ffa-7385-5640-81b9-e52037218182"
889-
version = "1.9.13"
887+
version = "1.9.14"
890888

891889
[deps.StaticArrays.extensions]
892890
StaticArraysChainRulesCoreExt = "ChainRulesCore"
@@ -919,9 +917,9 @@ version = "1.7.1"
919917

920918
[[deps.StatsBase]]
921919
deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
922-
git-tree-sha1 = "b81c5035922cc89c2d9523afc6c54be512411466"
920+
git-tree-sha1 = "2c962245732371acd51700dbb268af311bddd719"
923921
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
924-
version = "0.34.5"
922+
version = "0.34.6"
925923

926924
[[deps.StatsFuns]]
927925
deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"]

benchmarks/crystal.jl

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ function crystal(z3d; variant::Bool=false, gpu::Bool=false, gpu_arch::String="cu
4242
punched_pmn = copy(z3d)
4343
punched_pmn = punched_pmn[1:210, 1:310, 1:310]
4444

45-
index_missing_2D = CartesianIndex{3}[]
45+
index_missing_3D = CartesianIndex{3}[]
4646
for i=0:4.
4747
for j=0:6.
4848
for k = 0:6.
4949
center =[i,j,k]
5050
absolute_indices1 = punch_3D_cart(center, radius, x, y, z)
5151
punched_pmn[absolute_indices1] .= 0
52-
append!(index_missing_2D, absolute_indices1)
52+
append!(index_missing_3D, absolute_indices1)
5353
end
5454
end
5555
end
@@ -68,51 +68,39 @@ function crystal(z3d; variant::Bool=false, gpu::Bool=false, gpu_arch::String="cu
6868
punched_pmn = copy(z3d)
6969
punched_pmn = punched_pmn[1:310, 1:410, 1:410]
7070

71-
index_missing_2D = CartesianIndex{3}[]
71+
index_missing_3D = CartesianIndex{3}[]
7272
for i=0:6.
7373
for j=0:8.
7474
for k = 0:8.
7575
center =[i,j,k]
7676
absolute_indices1 = punch_3D_cart(center, radius, x, y, z)
7777
punched_pmn[absolute_indices1] .= 0
78-
append!(index_missing_2D, absolute_indices1)
78+
append!(index_missing_3D, absolute_indices1)
7979
end
8080
end
8181
end
8282
end
8383

8484
DFTsize = size(punched_pmn) # problem dim
8585
DFTdim = length(DFTsize) # problem size
86-
M_perptz = M_perp_tz_wei(DFTdim, DFTsize, punched_pmn)
87-
S = Vector{Float64}
8886
if gpu
8987
if gpu_arch == "cuda"
90-
M_perptz = CuArray(M_perptz)
91-
S = CuVector{Float64}
88+
AT = CuArray{Float64}
89+
VT = CuVector{Float64}
9290
elseif gpu_arch == "rocm"
93-
M_perptz = ROCArray(M_perptz)
94-
S = ROCVector{Float64}
91+
AT = ROCArray{Float64}
92+
VT = ROCVector{Float64}
9593
else
9694
error("Unsupported GPU architecture \"$gpu_arch\".")
9795
end
96+
else
97+
AT = Array{Float64}
98+
VT = Vector{Float64}
9899
end
99-
Nt = prod(DFTsize)
100100

101101
lambda = 1
102-
103-
alpha_LS = 0.1
104-
gamma_LS = 0.8
105-
eps_NT = 1e-6
106-
eps_barrier = 1e-6
107-
mu_barrier = 10
108-
109-
parameters = FFTParameters(DFTdim, DFTsize, M_perptz, lambda, index_missing_2D, alpha_LS, gamma_LS, eps_NT, mu_barrier, eps_barrier)
110-
111-
t_init = 1
112-
beta_init = ones(Nt) ./ 2
113-
c_init = ones(Nt)
114-
115-
nlp = FFTNLPModel{Float64, S}(parameters; rdft, preconditioner=true)
102+
parameters = FFTParameters(DFTdim, DFTsize, punched_pmn |> AT, lambda, index_missing_3D)
103+
nlp = FFTNLPModel{VT}(parameters; rdft, preconditioner=true)
116104

117105
# Solve with MadNLP/CG
118106
t1 = time()

0 commit comments

Comments
 (0)