Skip to content

Commit 404b8d1

Browse files
authored
Merge pull request #51 from SciML/u/rename
Rename PSOGPU->ParallelParticleSwarms
2 parents ea677ab + 3cfa812 commit 404b8d1

File tree

27 files changed

+128
-117
lines changed

27 files changed

+128
-117
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name = "PSOGPU"
1+
name = "ParallelParticleSwarms"
22
uuid = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
33
authors = ["Utkarsh <[email protected]> and contributors"]
44
version = "0.1.0"

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
# PSOGPU
1+
# ParallelParticleSwarms
22

3-
[![Build Status](https://github.com/utkarsh530/PSOGPU.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/utkarsh530/PSOGPU.jl/actions/workflows/CI.yml?query=branch%3Amain)
4-
[![codecov](https://codecov.io/gh/utkarsh530/PSOGPU.jl/graph/badge.svg?token=H5U5UAIRXX)](https://codecov.io/gh/utkarsh530/PSOGPU.jl)
3+
[![Build Status](https://github.com/utkarsh530/ParallelParticleSwarms.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/utkarsh530/ParallelParticleSwarms.jl/actions/workflows/CI.yml?query=branch%3Amain)
4+
[![codecov](https://codecov.io/gh/utkarsh530/ParallelParticleSwarms.jl/graph/badge.svg?token=H5U5UAIRXX)](https://codecov.io/gh/utkarsh530/ParallelParticleSwarms.jl)
55

66
Accelerating convex/non-convex optimization with GPUs using Particle-Swarm based methods
77

88
Supports generic Julia's SciML interface
99

1010
```julia
1111

12-
using PSOGPU, StaticArrays, CUDA
12+
using ParallelParticleSwarms, StaticArrays, CUDA
1313

1414
lb = @SArray [-1.0f0, -1.0f0, -1.0f0]
1515
ub = @SArray [10.0f0, 10.0f0, 10.0f0]

benchmarks/CPU_vs_GPU/Manifest.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,9 +1484,9 @@ git-tree-sha1 = "8b3b19351fa24791f94d7ae85faf845ca1362541"
14841484
uuid = "32165bc3-0280-59bc-8c0b-c33b6203efab"
14851485
version = "4.2.7+0"
14861486

1487-
[[deps.PSOGPU]]
1487+
[[deps.ParallelParticleSwarms]]
14881488
deps = ["Adapt", "DiffEqGPU", "Enzyme", "ForwardDiff", "KernelAbstractions", "MLDatasets", "NonlinearSolve", "Optimization", "QuasiMonteCarlo", "Random", "SciMLBase", "Setfield", "SimpleChains", "SimpleNonlinearSolve", "StaticArrays"]
1489-
path = "/home/utkarsh530/.julia/dev/PSOGPU"
1489+
path = "/home/utkarsh530/.julia/dev/ParallelParticleSwarms"
14901490
uuid = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
14911491
version = "1.0.0-DEV"
14921492

benchmarks/CPU_vs_GPU/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ OptimizationBBO = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b"
66
OptimizationFlux = "253f991c-a7b2-45f8-8852-8b9a9df78a86"
77
OptimizationOptimJL = "36348300-93cb-4f02-beb5-3c3902f8871e"
88
OptimizationOptimisers = "42dfb2eb-d2b4-4451-abcd-913932933ac1"
9-
PSOGPU = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
9+
ParallelParticleSwarms = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
1010
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

benchmarks/CPU_vs_GPU/benchmark.jl

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using Pkg
22

33
Pkg.activate(@__DIR__)
44

5-
using PSOGPU, StaticArrays, KernelAbstractions, Optimization
5+
using ParallelParticleSwarms, StaticArrays, KernelAbstractions, Optimization
66
using CUDA
77

88
device!(2)
@@ -51,11 +51,11 @@ sol = solve(prob,
5151
@show sol.stats.time
5252

5353
sol = solve(prob,
54-
PSOGPU.HybridPSO(; backend = CUDABackend(),
55-
pso = PSOGPU.ParallelPSOKernel(n_particles;
54+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
55+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
5656
global_update = false,
5757
backend = CUDABackend()),
58-
local_opt = PSOGPU.LBFGS()), maxiters = 500,
58+
local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
5959
local_maxiters = 30)
6060

6161
@show sol.objective
@@ -77,7 +77,8 @@ for n_particles in Ns
7777
## CPU solve
7878
backend = CPU()
7979
opt = ParallelSyncPSOKernel(n_particles; backend)
80-
init_gbest, particles = PSOGPU.init_particles(prob, opt, typeof(prob.u0))
80+
init_gbest, particles = ParallelParticleSwarms.init_particles(
81+
prob, opt, typeof(prob.u0))
8182

8283
particles_eltype = eltype(particles) === Float64 ? Float32 : eltype(particles)
8384

@@ -87,12 +88,12 @@ for n_particles in Ns
8788

8889
copyto!(backend_particles, particles)
8990

90-
PSOGPU.vectorized_solve!(prob,
91+
ParallelParticleSwarms.vectorized_solve!(prob,
9192
init_gbest,
9293
backend_particles,
9394
opt; maxiters = 500)
9495

95-
el_time = @elapsed PSOGPU.vectorized_solve!(prob,
96+
el_time = @elapsed ParallelParticleSwarms.vectorized_solve!(prob,
9697
init_gbest,
9798
backend_particles,
9899
opt; maxiters = 500)
@@ -112,12 +113,12 @@ for n_particles in Ns
112113

113114
copyto!(backend_particles, particles)
114115

115-
PSOGPU.vectorized_solve!(prob,
116+
ParallelParticleSwarms.vectorized_solve!(prob,
116117
init_gbest,
117118
backend_particles,
118119
opt; maxiters = 500)
119120

120-
el_time = @elapsed PSOGPU.vectorized_solve!(prob,
121+
el_time = @elapsed ParallelParticleSwarms.vectorized_solve!(prob,
121122
init_gbest,
122123
backend_particles,
123124
opt; maxiters = 500)
@@ -129,12 +130,12 @@ for n_particles in Ns
129130
gpu_init_gbest = KernelAbstractions.allocate(backend, typeof(init_gbest), (1,))
130131
copyto!(gpu_init_gbest, [init_gbest])
131132

132-
PSOGPU.vectorized_solve!(prob,
133+
ParallelParticleSwarms.vectorized_solve!(prob,
133134
gpu_init_gbest,
134135
backend_particles,
135136
opt, Val(opt.global_update); maxiters = 500)
136137

137-
el_time = @elapsed PSOGPU.vectorized_solve!(prob,
138+
el_time = @elapsed ParallelParticleSwarms.vectorized_solve!(prob,
138139
gpu_init_gbest,
139140
backend_particles,
140141
opt, Val(opt.global_update); maxiters = 500)
@@ -146,12 +147,12 @@ for n_particles in Ns
146147
gpu_init_gbest = KernelAbstractions.allocate(backend, typeof(init_gbest), (1,))
147148
copyto!(gpu_init_gbest, [init_gbest])
148149

149-
PSOGPU.vectorized_solve!(prob,
150+
ParallelParticleSwarms.vectorized_solve!(prob,
150151
gpu_init_gbest,
151152
backend_particles,
152153
opt, Val(opt.global_update); maxiters = 500)
153154

154-
el_time = @elapsed PSOGPU.vectorized_solve!(prob,
155+
el_time = @elapsed ParallelParticleSwarms.vectorized_solve!(prob,
155156
gpu_init_gbest,
156157
backend_particles,
157158
opt, Val(opt.global_update); maxiters = 500)
@@ -167,19 +168,19 @@ for n_particles in Ns
167168
@info n_particles
168169

169170
sol = solve(prob,
170-
PSOGPU.HybridPSO(; backend = CUDABackend(),
171-
pso = PSOGPU.ParallelPSOKernel(n_particles;
171+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
172+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
172173
global_update = false,
173174
backend = CUDABackend()),
174-
local_opt = PSOGPU.LBFGS()), maxiters = 500,
175+
local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
175176
local_maxiters = 30)
176177

177178
sol = solve(prob,
178-
PSOGPU.HybridPSO(; backend = CUDABackend(),
179-
pso = PSOGPU.ParallelPSOKernel(n_particles;
179+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
180+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
180181
global_update = false,
181182
backend = CUDABackend()),
182-
local_opt = PSOGPU.LBFGS()), maxiters = 500,
183+
local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
183184
local_maxiters = 30)
184185

185186
push!(gpu_hybrid_times, sol.stats.time)
@@ -309,15 +310,15 @@ using Statistics
309310
# push!(gpu_queue_lock_times_total, el_time)
310311

311312
# sol = solve(prob,
312-
# PSOGPU.HybridPSO(; backend = CUDABackend(),
313-
# pso = PSOGPU.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
314-
# local_opt = PSOGPU.LBFGS()), maxiters = 500,
313+
# ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
314+
# pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
315+
# local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
315316
# local_maxiters = 30)
316317

317318
# el_time = @elapsed solve(prob,
318-
# PSOGPU.HybridPSO(; backend = CUDABackend(),
319-
# pso = PSOGPU.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
320-
# local_opt = PSOGPU.LBFGS()), maxiters = 500,
319+
# ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
320+
# pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
321+
# local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
321322
# local_maxiters = 30)
322323

323324
# push!(gpu_hybrid_times_total, el_time)

benchmarks/CPU_vs_GPU/wp_algs.jl

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using Pkg
22

33
Pkg.activate(@__DIR__)
44

5-
using PSOGPU, StaticArrays, KernelAbstractions, Optimization
5+
using ParallelParticleSwarms, StaticArrays, KernelAbstractions, Optimization
66
using CUDA
77

88
device!(2)
@@ -55,11 +55,11 @@ sol = solve(prob,
5555
@show sol.stats.time
5656

5757
sol = solve(prob,
58-
PSOGPU.HybridPSO(; backend = CUDABackend(),
59-
pso = PSOGPU.ParallelPSOKernel(n_particles;
58+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
59+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
6060
global_update = false,
6161
backend = CUDABackend()),
62-
local_opt = PSOGPU.LBFGS()), maxiters = 500,
62+
local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
6363
local_maxiters = 30)
6464

6565
@show sol.objective
@@ -91,7 +91,7 @@ function solve_run(prob, alg, maxiters; runs = 10, kwargs...)
9191
# 4 was a good candidate
9292
Random.seed!(rng, 1)
9393
for run in 1:runs
94-
sol = if alg isa PSOGPU.HybridPSO
94+
sol = if alg isa ParallelParticleSwarms.HybridPSO
9595
solve(prob, alg; maxiters, local_maxiters = 30)
9696
else
9797
solve(prob, alg; maxiters, kwargs...)
@@ -135,11 +135,11 @@ for n_particles in Ns
135135
push!(gpu_queue_lock_times, sol_time)
136136

137137
obj, solve_time = solve_run(prob,
138-
PSOGPU.HybridPSO(; backend = CUDABackend(),
139-
pso = PSOGPU.ParallelPSOKernel(n_particles;
138+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
139+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
140140
global_update = false,
141141
backend = CUDABackend()),
142-
local_opt = PSOGPU.LBFGS()), 500)
142+
local_opt = ParallelParticleSwarms.LBFGS()), 500)
143143

144144
push!(gpu_hybrid_loss, obj)
145145
push!(gpu_hybrid_times, solve_time)
@@ -256,11 +256,11 @@ sol = solve(prob,
256256
@show sol.stats.time
257257

258258
sol = solve(prob,
259-
PSOGPU.HybridPSO(; backend = CUDABackend(),
260-
pso = PSOGPU.ParallelPSOKernel(n_particles;
259+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
260+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
261261
global_update = false,
262262
backend = CUDABackend()),
263-
local_opt = PSOGPU.LBFGS()), maxiters = 500,
263+
local_opt = ParallelParticleSwarms.LBFGS()), maxiters = 500,
264264
local_maxiters = 30)
265265

266266
@show sol.objective
@@ -300,7 +300,7 @@ function solve_run(prob, alg, maxiters; runs = 10, kwargs...)
300300
# 4 was a good candidate
301301
Random.seed!(rng, 9)
302302
for run in 1:runs
303-
sol = if alg isa PSOGPU.HybridPSO
303+
sol = if alg isa ParallelParticleSwarms.HybridPSO
304304
solve(prob, alg; maxiters, local_maxiters = maxiters)
305305
else
306306
solve(prob, alg; maxiters, kwargs...)
@@ -377,23 +377,23 @@ begin
377377
push!(pso_cpu_time, sol_time)
378378

379379
# sol = solve(prob,
380-
# PSOGPU.HybridPSO(; backend = CUDABackend(),
381-
# pso = PSOGPU.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
382-
# local_opt = PSOGPU.LBFGS()), maxiters = iters,
380+
# ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
381+
# pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
382+
# local_opt = ParallelParticleSwarms.LBFGS()), maxiters = iters,
383383
# local_maxiters = iters)
384384

385385
# sol = solve(prob,
386-
# PSOGPU.HybridPSO(; backend = CUDABackend(),
387-
# pso = PSOGPU.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
388-
# local_opt = PSOGPU.LBFGS()), maxiters = iters,
386+
# ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
387+
# pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles; global_update = false, backend = CUDABackend()),
388+
# local_opt = ParallelParticleSwarms.LBFGS()), maxiters = iters,
389389
# local_maxiters = iters)
390390

391391
obj, solve_time = solve_run(prob,
392-
PSOGPU.HybridPSO(; backend = CUDABackend(),
393-
pso = PSOGPU.ParallelPSOKernel(n_particles;
392+
ParallelParticleSwarms.HybridPSO(; backend = CUDABackend(),
393+
pso = ParallelParticleSwarms.ParallelPSOKernel(n_particles;
394394
global_update = false,
395395
backend = CUDABackend()),
396-
local_opt = PSOGPU.LBFGS()), iters)
396+
local_opt = ParallelParticleSwarms.LBFGS()), iters)
397397

398398
push!(hybrid_losses, obj)
399399
push!(hybrid_time, solve_time)

benchmarks/Fitzhugh_Nagumo/Manifest.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1515,7 +1515,7 @@ git-tree-sha1 = "8b3b19351fa24791f94d7ae85faf845ca1362541"
15151515
uuid = "32165bc3-0280-59bc-8c0b-c33b6203efab"
15161516
version = "4.2.7+0"
15171517

1518-
[[deps.PSOGPU]]
1518+
[[deps.ParallelParticleSwarms]]
15191519
deps = ["Adapt", "CUDA", "DiffEqGPU", "Enzyme", "ForwardDiff", "KernelAbstractions", "MLDatasets", "NonlinearSolve", "Optimization", "QuasiMonteCarlo", "Random", "SciMLBase", "Setfield", "SimpleChains", "SimpleNonlinearSolve", "StaticArrays"]
15201520
path = "../.."
15211521
uuid = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"

benchmarks/Fitzhugh_Nagumo/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
44
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
55
OptimizationOptimJL = "36348300-93cb-4f02-beb5-3c3902f8871e"
66
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
7-
PSOGPU = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
7+
ParallelParticleSwarms = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"
88
SciMLSensitivity = "1ed8b502-d754-442c-8d5d-10ac956f44a1"
99
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

benchmarks/Fitzhugh_Nagumo/ode_estimation.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Pkg
22
Pkg.activate(@__DIR__)
3-
using PSOGPU, OrdinaryDiffEq, StaticArrays
3+
using ParallelParticleSwarms, OrdinaryDiffEq, StaticArrays
44
using SciMLSensitivity, Optimization
55

66
function f(u, p, t)
@@ -91,7 +91,7 @@ using OptimizationOptimJL
9191

9292
optprob = OptimizationProblem(loss, prob.p, (prob, t_short); lb = lb, ub = ub)
9393

94-
using PSOGPU
94+
using ParallelParticleSwarms
9595
using CUDA
9696

9797
using Random
@@ -101,7 +101,7 @@ rng = Random.default_rng()
101101
Random.seed!(rng, 0)
102102

103103
opt = ParallelPSOKernel(n_particles)
104-
gbest, particles = PSOGPU.init_particles(optprob, opt, typeof(prob.u0))
104+
gbest, particles = ParallelParticleSwarms.init_particles(optprob, opt, typeof(prob.u0))
105105

106106
gpu_data = cu([SVector{length(prob.u0), eltype(prob.u0)}(@view data_short[:, i])
107107
for i in 1:length(t_short)])
@@ -118,7 +118,7 @@ solver_cache = (; losses, gpu_particles, gpu_data, gbest)
118118

119119
adaptive = false
120120

121-
@time gsol = PSOGPU.parameter_estim_ode!(prob,
121+
@time gsol = ParallelParticleSwarms.parameter_estim_ode!(prob,
122122
solver_cache,
123123
lb,
124124
ub, Val(adaptive);
@@ -128,7 +128,7 @@ adaptive = false
128128

129129
using BenchmarkTools
130130

131-
@benchmark PSOGPU.parameter_estim_ode!($prob,
131+
@benchmark ParallelParticleSwarms.parameter_estim_ode!($prob,
132132
$(deepcopy(solver_cache)),
133133
$lb,
134134
$ub, $Val(adaptive);

benchmarks/Lotka_Volterra/Manifest.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1527,7 +1527,7 @@ git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65"
15271527
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
15281528
version = "0.11.31"
15291529

1530-
[[deps.PSOGPU]]
1530+
[[deps.ParallelParticleSwarms]]
15311531
deps = ["Adapt", "CUDA", "DiffEqGPU", "Enzyme", "ForwardDiff", "KernelAbstractions", "MLDatasets", "NonlinearSolve", "Optimization", "QuasiMonteCarlo", "Random", "SciMLBase", "Setfield", "SimpleChains", "SimpleNonlinearSolve", "StaticArrays"]
15321532
path = "../.."
15331533
uuid = "ab63da0c-63b4-40fa-a3b7-d2cba5be6419"

0 commit comments

Comments
 (0)