Publication:
Exploring CPU and GPU strategies for solving some coupled nonlinear Schrödinger systems in Julia

dc.contributor.advisor Castillo, Paul
dc.contributor.author Pérez López, William J.
dc.contributor.college College of Arts and Sciences - Sciences
dc.contributor.committee Cruz, Ángel
dc.contributor.committee Narciso, Flor
dc.contributor.department Department of Mathematics
dc.contributor.representative Huérfano, Víctor
dc.date.accessioned 2024-12-18T13:54:42Z
dc.date.available 2024-12-18T13:54:42Z
dc.date.issued 2024-12-12
dc.description.abstract We developed the SchrodingerToolkit.jl package in the Julia programming language to solve systems of coupled nonlinear Schrödinger equations in both 2D and 3D. The package builds upon the theories, methods, and strategies presented in [1-3]. It supports parallel computations with GPU acceleration and is designed for extensibility, making it a valuable research tool for exploring parallel techniques for these problems. The package features high-order spatial schemes using finite differences and high-order temporal schemes employing composition methods. It also includes tools for plotting, constructing and modeling abstract grids, tracking runtime statistics for execution and solver analysis, and logging key physical quantities such as mass per component, system energy, and total mass perturbation. GPU parallel implementation is achieved through CUDA.jl, allowing the generation of CUDA kernels directly from Julia code. This approach results in significant speedups of 5x to 10x, depending on the method used, particularly for 3D problems where matrix factorizations are often impractical due to time and memory constraints, even for smaller problems. The main bottlenecks in the implementation are related to solving linear systems, especially due to the use of implicit time-stepping methods, which require global communication or some form of internal state.
dc.description.abstract Desarrollamos el paquete SchrodingerToolkit.jl en el lenguaje de programación Julia para resolver sistemas de ecuaciones de Schrödinger no lineales acopladas en 2D y 3D. El paquete se basa en las teorías, métodos y estrategias presentados en \cite{aguilera2021structure,Aguilera_Castillo_Gómez_2022,Castillo2023}. Soporta cálculos paralelos con aceleración por GPU y está diseñado para ser extensible, convirtiéndose en una valiosa herramienta de investigación para explorar técnicas paralelas en estos problemas. El paquete ofrece esquemas espaciales de alto orden utilizando diferencias finitas y esquemas temporales de alto orden empleando métodos de composición. También incluye herramientas para la visualización, construcción y modelado de cuadrículas abstractas, seguimiento de estadísticas de ejecución y registro de cantidades físicas clave como la masa por componente, la energía del sistema y la perturbación de la masa total. La implementación paralela en GPU se logra mediante CUDA.jl, lo que permite la generación de kernels CUDA directamente desde código en Julia. Este enfoque resulta en aceleraciones significativas de 5x a 10x, dependiendo del método utilizado, especialmente en problemas 3D donde las factorizaciones de matrices a menudo son impracticables debido a las limitaciones de tiempo y memoria, incluso para problemas más pequeños. Las principales limitaciones en la implementación están relacionados con la resolución de sistemas lineales, especialmente debido al uso de métodos de integración temporal implícitos, que requieren comunicación global o alguna forma de estado interno.
dc.description.graduationSemester Fall
dc.description.graduationYear 2024
dc.identifier.uri https://hdl.handle.net/20.500.11801/3972
dc.language.iso en
dc.rights Attribution-NonCommercial-ShareAlike 4.0 International *
dc.rights.holder (c) 2024 William J. Pérez López
dc.rights.uri http://creativecommons.org/licenses/by-nc-sa/4.0/ *
dc.subject CGPE
dc.subject CNLS
dc.subject Julia
dc.subject GPU
dc.subject.lcsh Julia sets
dc.subject.lcsh Schrödinger equation
dc.subject.lcsh Linear systems
dc.title Exploring CPU and GPU strategies for solving some coupled nonlinear Schrödinger systems in Julia
dc.type Thesis
dspace.entity.type Publication
thesis.degree.discipline Science in Scientific Computing
thesis.degree.level M.S.
Files