ParallelParticleSwarms.jl
Particle swarm optimization inside GPU kernels, made to scale to any problem dimension and to handle ill-conditioned problems.
- Organisation
- SciML
- Period
- 2026 – present
- Stack
- Julia, KernelAbstractions.jl, CUDA.jl
- Code
- SciML/ParallelParticleSwarms.jl
ParallelParticleSwarms.jl runs global optimization with whole particle swarms inside GPU kernels, for problems such as fitting the parameters of ODE models.
What I did
- GPU kernels that scale with dimension. The kernels kept full particles in shared memory, so they stopped compiling once problems had more than a few dimensions. I restructured the reductions so shared memory no longer depends on the problem size.
- A working hybrid local search. The L-BFGS phase that refines the swarm’s best points minimized the wrong quantity and could not solve ill-conditioned problems. I rewrote it as a projected L-BFGS with a Strong Wolfe line search that runs inside the GPU kernel.
- Benchmarks. I built the particle swarm benchmarks in SciMLBenchmarks.jl, including neural ODE parameter estimation.