Skip to content

Commit 5a24d86

Browse files
authored
Add Rimu.jl JSoC projects (#2254)
* rimu quantum chemistry problem * tweaks * add email contact * HPC project * CI * skills
1 parent a37851c commit 5a24d86

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

jsoc/gsoc/rimu.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Rimu.jl - Projector Quantum Monte Carlo - Summer of Code
2+
3+
[Rimu.jl](https://github.com/RimuQMC/Rimu.jl) is a Julia package for finding ground states (and low-lying excited states) of quantum many-body problems with projector quantum Monte Carlo (using a flavour called full configuration interaction quantum Monte Carlo, FCIQMC) and with exact diagonalisation.
4+
5+
## Ab-Initio Quantum Chemistry with Rimu.jl
6+
7+
**Difficulty**: Easy to medium (if the recommended skills are available)
8+
9+
**Project size**: 175 - 350 hours
10+
11+
**Problem**: [Rimu.jl](https://github.com/RimuQMC/Rimu.jl) provides an interface for defining a custom quantum many-body Hamiltonian and currently implements a selection of model Hamiltonians (e.g. variants of the Hubbard model and the Fröhlich polaron model).
12+
The high-level goal of the project is to implement the required functionality to solve ab-initio quantum chemistry problems with [Rimu.jl](https://github.com/RimuQMC/Rimu.jl) and embed the package into the [JuliaMolSim](https://github.com/JuliaMolSim) ecosystem, in particular with [ElemCo.jl](https://github.com/fkfest/ElemCo.jl).
13+
14+
**Minimum goal**: A minimum goal would be to enable reading in the relevant information about the molecular orbital basis set and integrals that define the molecular Hamiltonian from a file (in the standard FCIDUMP format) and defining an appropriate Hamiltonian type for Rimu.jl that enables its usage for exact diagonalisation and FCIQMC.
15+
16+
**Extended goal**: An extended goal would be to make the molecular Hamiltonian efficient for FCIQMC, e.g. by finding and implementing an appropriate strategy for an excitation generator, e.g. a variant of (precomputed) heat-bath sampling. Another worthwhile extension would be to implement variants of the Configuration Interaction (CI) method by filtering the configurations to a relevant subspace (e.g. CI-SD, selctive CI, etc.) for the exact-diagonalisation part of Rimu.jl.
17+
18+
**Recommended skills**:
19+
- prior exposure to or strong interest in quantum chemistry
20+
- good to excellent Julia coding skills
21+
22+
**Mentors**: [Joachim Brand](https://github.com/joachimbrand), [Daniel Kats](https://github.com/dnkats), [Elke Pahl](https://github.com/ElkePahl)
23+
24+
If you are interested please get in touch by [email](mailto:[email protected]).
25+
26+
## Load balancing Rimu.jl for multi-node (HPC) calculations
27+
28+
**Difficulty**: Medium to hard
29+
30+
**Project size**: 175 - 350 hours
31+
32+
**Problem**: [Rimu.jl](https://github.com/RimuQMC/Rimu.jl) parallelises the workload of FCIQMC by making extensive use of native threading for shared-memory parallelism. In high-performance computing environments the primary data structure containing information about the sampled configurations and their amplitudes can further be distributed across nodes, which communicate using the MPI protocol in every time step (making use of [MPI.jl](https://github.com/JuliaParallel/MPI.jl)). In the current implementation the distribution of configurations to nodes is done passively (in a pseudo-random fashion using a hashing algorithm). While this is fast and easy and usually leads to a fairly even distribution of data and work across the nodes, it does not scale very well when employing hundreds of nodes as every MPI rank has to wait for the slowest one to complete the work done at each time step.
33+
34+
**Minimum goal**: Implement an active load-balancing approach where load information of each MPI rank is monitored and work load is shifted between nodes to even out the workload.
35+
36+
**Extended goal**: Explore other load-balancing strategies like agent-based approaches, possibly even exploring algorithmic alternatives (e.g. continuous-time Monte Carlo). Design communication protocols that take into account the network topology.
37+
38+
**Recommended skills**:
39+
- experience with HPC environments and MPI-style programming
40+
- good to excellent Julia coding skills
41+
42+
**Mentors**: [Matija Čufar](https://github.com/mtsch), [Joachim Brand](https://github.com/joachimbrand)
43+
44+
If you are interested please get in touch with [Matija]([email protected]) or [Joachim](mailto:[email protected]).
45+

jsoc/projects.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ We have our project ideas organized below roughly by domain but you can also see
2121
* [Molecular simulation](/jsoc/gsoc/molly/) - molecular simulation with Molly.jl.
2222
* [QuantumClifford](/jsoc/gsoc/quantumclifford) - Quantum circuits with Clifford gates
2323
* [QuantumOptics](/jsoc/gsoc/quantumoptics) - Quantum dynamics and master equations
24+
* [Rimu.jl](/jsoc/gsoc/rimu.md) - Quantum Monte Carlo for physics and chemistry
2425
* [Symbolic computation](/jsoc/gsoc/symbolics/) - User friendly symbolic programming
2526
* [Turing](/jsoc/gsoc/turing/) - for probabilistic modelling and probabilistic programming
2627
* [Tooling](/jsoc/gsoc/tooling/) - Development of developer tools and development environments for Julia

0 commit comments

Comments
 (0)