# Course 9: High-performance computing and computational tools for nuclear physics

The second edition of Course 9 on computational methods featured "Quantum
Monte Carlo Methods for Nuclear Physics and Related Areas". It was given at
North Carolina State University from July 11 to July 29, 2016. The course was
jointly organized by LANL and NCSU, and the principal lecturers included Joe
Carlson, Joaquín Drut, Stefano Gandolfi, and Dean Lee, and other speakers
presented talks related to the subject of the school.
Lectures and codes are
freely available; this is
the schedule.
The local website for this course is
https://qmc2016.wordpress.ncsu.edu/.

Contact: Stefano Gandolfi (stefano@lanl.gov).

## Advertisement for the course

Development of numerical tools based on Monte Carlo integrations in combination with the growth of computational facilities opened the way to accurately investigate properties of nuclear systems, including finite nuclei and homogeneous matter. The course is intended to introduce students and young researchers to the various facets of Quantum Monte Carlo methods based on stochastic integration, which are used to solve the ground- and low-lying excited states of nuclei and matter. Those methods are essentially based on projection in imaginary time, and are formulated either in coordinate space and/or on lattice. The main methods that will be covered during the course are the Green's Function Monte Carlo (GFMC), the Auxiliary Field Diffusion Monte Carlo (AFDMC), and Lattice Auxiliary Field methods for momentum space. The extension of the latter to study finite temperature systems will also be discussed. The main applications of these methods will be deeply discussed during the school, including the calculation of properties of nuclei (energies, radii, distributions, transitions) and the equation of state of neutron matter.

## Course 9 in 2012

The first edition of Course 9 on computational methods ran at the ECT* in Trento, in collaboration with the University of Trento, from June 25 to July 13, 2012.

## Motivation and background

The course aims at presenting high-performance computing topics applied to several problems in nuclear physics. The high-performance computing topics focus on writing parallel algorithms for present supercomputers and for graphical processing units. These techniques will be explained together with the algorithms behind a given approach. Not all approaches can be addressed in one course. The topics we have selected are Monte Carlo methods and large- scale diagonalization techniques. Monte Carlo methods require in general little communication during execution and are viewed as rather easy to parallelize. Large-scale diagonalization techniques on the other hand require large amounts of memory and communication between various processes. In this way the students get exposed to central problems in high-performance computing. These high-performance computing tools and the algorithms used can easily be transferred to other fields of science.

## Lecture notes

### Week 1

Monday 2012-06-25 | Lecture slides | Text on many-body physics |
---|---|---|

Tuesday 2012-06-26 | Lecture slides | Programs and exercises |

Wednesday 2012-06-27 | Lecture slides | Programs and exercises |

Thursday 2012-06-28 | Lecture slides | Programs and exercises |

Friday 2012-06-29 | Lecture slides | Programs and exercises |

### Week 2

Monday 2012-07-02 | Lecture slides | Programs and exercises |
---|---|---|

Tuesday 2012-07-03 | Lecture slides | Programs and exercises |

Wednesday 2012-07-04 | Lecture slides | Programs and exercises |

Thursday 2012-07-05 | Lecture slides | Programs and exercises |

Friday 2012-07-06 | Lecture slides | Programs and exercises |

### Week 3

Monday 2012-07-09 | Lecture slides | Programs and exercises |
---|---|---|

Tuesday 2012-07-10 | Lecture slides | Programs and exercises |

Wednesday 2012-07-11 | Lecture slides | Programs and exercises |

Thursday 2012-07-12 | Lecture slides | Programs and exercises |

Friday 2012-07-13 | Summary and discussions of projects |

## Topics

### Course Content

This is an advanced course on computational physics with an emphasis on quantum mechanical systems with many interacting particles. The applications and the computational methods are relevant for research problems in such diverse areas as nuclear, atomic, molecular and solid-state physics, chemistry and materials science. A theoretical understanding of the behavior of quantum- mechanical many-body systems - that is, systems containing many interacting particles - is a considerable challenge in that no exact solution can be found; instead, reliable methods are needed for approximate but accurate simulations of such systems on modern computers. New insights and a better understanding of complicated quantum mechanical systems can only be obtained via large-scale simulations. The capability to study such systems is of high relevance for both fundamental research and industrial and technological advances.

The aim of this course is to present, through various computational projects, applications of some of the most widely used many-body methods with pertinent algorithms and high-performance computing topics such as advanced parallelization techniques and object orientation. The methods and algorithms that will be studied may vary from year to year depending on teachers and the interests of the participants, but the main focus will be on nuclear physics related methods.

### Detailed Course Content

The first course on computational methods ran at the ECT* in Trento, in collaboration with the University of Trento, starting June 25 and ending July 13 in 2012. The course focused on Monte Carlo methods (Variational and Diffusion Monte Carlo) and large-scale diagonalization methods (Configuration interactions) as solvers for the many-body problem. The system was a simplified representation of nuclei, with protons and neutrons (or spin 1/2 fermions) described by a harmonic oscillator potential in three dimensions and interacting via central Yukawa and Coulomb interactions. This system contains the basic features needed to describe nuclei and is simple enough to let participants develop programs to solve Schrödinger's equation for many interacting (charged) particles with the above methods.

*First week*

The problem per se, basic many-body physics, hamiltonians, setup of Slater determinants and single-particle basis. Rehearsal of basic many-body physics and examples of computation of Hamiltonian matrices (Monday first week).

- The Monte Carlo part: Basics of stochastic methods: Central Limit Theorem, sampling by Markov Chains, random numbers, covariance, auto-correlation functions and error estimates, blocking for data analysis. (Tuesday first week)
- Wave functions: General structure of a correlated many-Fermion wave function, Slater determinants and the Feenberg expansion for correlations. The concept of local energy and its computation: efficient calculation of Slater determinants, its derivatives, and the Jastrow factor. Improved Monte Carlo methods (force-biased, Langevin). (Wednesday, Thursday and Friday of first week)

*Second week*

- Parallelization: standard master-slave (using Open multi-processing (OpenMP) and Message-passing interface (MPI)) and parallel I/O for blocking analysis (Monday of second week).
- Imaginary time propagators, Trotter-Suzuki method, analogy with the diffusion equation. Drift, diffusion and branching. Importance sampling in DMC. Fixed node approximation (Tuesday and Wednesday second week). Additional topics covered by exercises: Optimization methods like conjugate gradient plus correlated samplings.
- The large-scale diagonalization part: Shell-model and no-core shell model, basic philosophies, effective interactions and similarity transformations. (Thursday of second week).
- Diagonalization algorithms, basics of Krylov methods with Lanczos algorithm for symmetric matrices, Givens and Householder's algorithms for smaller systems, typically with dimensionalities less than 100000 basis states. Convergence properties and other mathematical properties of iterative methods. (Friday of second week)

*Third week*

- Set up of a Slater determinant in m-scheme. Discussion of different angular momentum recoupling schemes. Action of the Hamiltonian on the basis of Slater determinants, actual implementation of the Lanczos algorithm (Monday and Tuesday of third week).
- Parallelization of the Lanczos algorithms and intermediate orthogonalization using MPI and OpenMP (Wednesday of third week).
- Computation of expectation values, energies and transition operators (Thursday of third week ).
- Summary of course and discussion of possible assignment (Friday of third week).

The course ends with a final assignment. The final assignment will be graded with marks A, B, C, D, E and failed for Master students and passed/not passed for PhD students. The course will be taught as an intensive course of duration of three weeks, with a total time of 45 hours of lectures, 45 hours of exercises and a final assignment of 2 weeks of work. The total load will be approximately 175 hours, corresponding to 7 ECTS in Europe. Upon completion of the assignment, a formal letter from the University of Trento will be issued as an approval of the course and its credits. Organization of teaching days: 9-12 lectures, time for exercises with assistance (including lunch) till 18 (3 hours of allocated exercise sessions per day). Summary and questions and student presentations till 19. The course will be run at the premises of the European Center for Theoretical Studies in Nuclear Physics and Related Areas (ECT*), in Trento, Italy, from June 25 to July 13 in 2012.

## Teachers

- Morten Hjorth-Jensen (Michigan State University and University of Oslo) mhjensen@fys.uio.no
- Calvin Johnson (San Diego State University, California) cjohnson@sciences.sdsu.edu
- Francesco Pederiva (University of Trento) pederiva@science.unitn.it
- Kevin Schmidt (Arizona State University, Phoenix, USA) kevin.schmidt@asu.edu

Responsible for the course: Morten Hjorth-Jensen

## Organizers

The organizers of this course were:

- Jacek Dobaczewski (University of Warsaw and University of Jyväskylä) dobaczew@jyu.fi
- Morten Hjorth-Jensen (Michigan State University and University of Oslo) mhjensen@fys.uio.no
- Giuseppina Orlandini (University of Trento) orlandin@science.unitn.it
- Francesco Pederiva (University of Trento) pederiva@science.unitn.it
- Marek Płoszajczak (GANIL) ploszajczak@ganil.fr

## Prerequisites

The students are expected to have operating programming skills in Fortran or C++ or Python or related programming languages and knowledge of quantum mechanics at an intermediate level. Preparatory modules on second quantization, Wick's theorem, representation of Hamiltonians and calculations of Hamiltonian matrix elements, independent particle models and Hartree-Fock theory will be provided prior to the course start. Students who have not studied the above topics are expected to gain this knowledge prior to attendance. Additional modules for self-teaching on Fortran and/or C++, parallelization, and basic knowledge of parallelization and libraries like MPI, Lapack and Blas will also be provided. Lecture notes for the course will be available for download during the first half of June.