Julia for numerical problems in quantum and solid-state physics
Location: BCH 2103, Batochime building, Lausanne, Switzerland
Organisers
The Julia programming language has emerged in the past years as an alternative to the traditional python / Fortran / C++ mix in scientific computing. Being both compiled and high-level it attracts a remarkably broad user base covering computer scientists, applied mathematicians and application scientists in physics, chemistry, biology and many more. In the past Julia has shown not only to excel excellent performance in an HPC context [1], but also to provide an ecosystem which facilitates the integration of advances from numerical mathematics and computer science to scientific computing [1-3].
Successful in particular in the regimes of high-performance computing and numerical methods for optimisation and differential equations, it has recently gained attention in the context of atomistic modelling and quantum physics, to the point of being very close to the de facto standard for new algorithm development. This includes packages for tensor networks, density-functional theory, interatomic potentials and many more. A particular strong point of the Julia ecosystem is the high level of code reuse, where each package depends on many others, increasing the productivity of individual package developers. This is enabled by a careful language design that emphasizes composability, and by the ease of development, which blurs the barrier between users and developers found in traditional languages. Indeed, many scientific communities and domain-specific algorithms ultimately depend on a variety of common mathematical tools. Having these tools available as stand-alone Julia packages with a flexible and generic interface means that, not only different scientific communities can benefit from them, but also can contribute to their maintenance and improvement. The Julia ecosystem is filled with high-quality packages of this type, including large-scale linear algebra solvers (KrylovKit.jl, ArnoldiMethod.jl, IterativeSolvers.jl, …); non-linear optimisation methods (Optim.jl, …); numerical integration (QuadGK.jl, Cubature.jl, …); Fourier transforms, orthogonal polynomials and other function space techniques (FFTW.jl, FastTransforms.jl, ApproxFun.jl, and rest of the Julia Approximation ecosystem);
In this workshop, we will aim to gather various communities that do not necessarily interact frequently: applied mathematicians interested in numerical algorithms; computer scientists interested in HPC and advanced programming language features; researchers in the field of strongly correlated quantum systems; methodology-oriented application scientists in materials science and chemistry;
The workshop will consist of traditional scientific talks, pedagogical introductions to domains of research, and extended free discussion sessions. A major aim is to foster a community of like-minded developers, encouraging inter-disciplinary collaboration. This will increase the productivity and sustainability of scientific codes by encouraging package dissemination and mutualisation. The workshop will mostly target young researchers, who are typically most interested about code development in general and Julia in particular.
[1] V. Churavy et. al. Bridging HPC Communities through the Julia Programming Language, arxiv 2211.02740
[2] W. Moses et. al. Proc. Int. Conf. High Pref. Comp., 61 (2021) DOI 10.1145/3458817.3476165
[3] M. Herbst et. al. JuliaCon Proc., 3, 69 (2021) DOI 10.21105/jcon.00069
[4] M. Fishman et. al. SciPost Phys. Codebases, 4 (2022) DOI 10.21468/SciPostPhysCodeb.4
References
Jutho Haegeman (Ghent University) - Organiser
France
Antoine Levitt (Inria) - Organiser
Switzerland
Michael Herbst (EPFL) - Organiser