2024-07-12 –, For Loop (3.2)
Light based tomographic 3D printing is a new emerging field requiring the optimization of large scale optical problems.
Simulating and optimizing parameters of those problems needs high performance packages, which we develop in Julia Lang.
The implementation features CUDA acceleration (partially based on KernelAbstractions.jl) and automatic differentiation capabilities.
We talk about ray tracing based methods such as the Radon transform but are also going to cover the wave nature of light.
The presented notebook is available here: https://github.com/roflmaostc/TalkJuliaCon2024
Our work is mainly scattered in four packages: RadonKA.jl 1, DiffImageRotation.jl 2, WaveOpticsPropagation.jl 3, SwissVAMyKnife.jl 4.
The first package features a very simple but still quite fast implementation of the Radon and inverse Radon transform based on KernelAbstractions.jl.
In principle this allows to run it on multiple hardware accelerators such as CUDA.jl or AMDGPU.jl.
Notably, we implemented an exponential Radon transform which is not implemented in any of the existing solutions (ASTRA, TIGRE, Matlab).
The second package offers a differentiable image rotation routine implemented in KernelAbstractions.jl. According to benchmarks, it is the fastest image rotation routine in Julia. It features CUDA support and is automatic differentiation compatible.
The third package is WaveOpticsPropagation.jl which is partially based on the archived PhysicalOptics.jl 5.
It provides routines to solve wave optical propagations efficiently. Notable features are the (scalable) angular spectrum method 6 or the Fraunhofer diffraction propagation.
Those routines are highly memory efficient by cleverly using memory buffers and have implemented adjoints for automatic differentiation.
Finally, SwissVAMyKnife.jl bundles those packages together to provide user-friendly routines to solve optimization problems connected to Tomographic Volumetric Additive Manufacturing (TVAM) 7. TVAM is a novel light based 3D printing technique allowing to print centimeter scale objects in seconds to minutes.
At submission date of this proposal, SwissVAMyknife.jl is not public available yet. By the date of JuliaCon we expect to have uploaded an arXiv paper about the details behind this package and make it publicly available.