  Exact diagonalization is a well-established method for simulating small
quantum systems. Its applicability is limited by the exponential growth of the
so-called Hamiltonian matrix that needs to be diagonalized. Physical symmetries
are usually utilized to reduce the matrix dimension, and distributed-memory
parallelism is employed to explore larger systems. This paper focuses on the
implementation the core distributed algorithms, with a special emphasis on the
matrix-vector product operation. Instead of the conventional MPI+X paradigm,
Chapel is chosen as the language for these distributed algorithms.
  We provide a comprehensive description of the algorithms and present
performance and scalability tests. Our implementation outperforms the
state-of-the-art MPI-based solution by a factor of 7--8 on 32 compute nodes or
4096 cores and exhibits very good scaling on up to 256 nodes or 32768 cores.
The implementation has 3 times fewer software lines of code than the current
state of the art while remaining fully generic.
