VeloxChem development moves along three main axes:
- Hardware. Target future and existing HPC infrastructure, making quantum chemistry workloads scale well now and in the foreseeable future.
- Science. Further the reach of quantum chemistry with accurate, robust, novel methods.
- Ergonomics. Provide a platform that is equally well-suited for experienced practitioners and learners of quantum chemistry, due to its ease of use and ease of development.
The long-term vision of the VeloxChem development team is to provide the community with an extensible, performant, easy-to-use software package. The support from ENCCS will be fundamental in achieving this long-term vision, since Roberto will focus on all three aspects.
VeloxChem is a MPI+OpenMP-parallel code. Accelerators, such as GPUs, will provide most of the raw performance in next-generation HPC clusters. ENCCS will support the development of a heterogeneous compute-capable port. It will be challenging for the GPU port to be immediately as performant as the carefully optimized CPU algorithms. However, this task offers also the tremendous opportunity to spearhead upcoming technologies, such as SYCL, that aim at reducing code divergence, while ensuring performance portability.
Roberto will also initiate the development of ENCCS-branded libraries to enable quantum/classical polarizable simulations of molecules in complex environments, such as proteins or solutions. These libraries will be built around modern C++ and research software best practices. Python interfaces will be provided and heterogeneous compute awareness will be a design requirement. The domain decomposition flavor of continuum models will be tackled first, the library is codenamed “classyq” and you can keep an eye on its repository!
Codebases need maintenance, to keep a low barrier to new users and new developers. A well-maintained and well-maintainable codebase needs to keep up with changes in language standards and language tooling. Roberto will work on many aspects related to ergonomics for developers and users. From providing a CMake-based build system to adopting C++11 (and laters) and Python 3.x patterns.