Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update master branch #826

Merged
merged 44 commits into from
Apr 23, 2023
Merged

update master branch #826

merged 44 commits into from
Apr 23, 2023

Conversation

toxa81
Copy link
Collaborator

@toxa81 toxa81 commented Mar 21, 2023

No description provided.

toxa81 and others added 30 commits December 20, 2022 11:31
Switch to latest elpa-2022.11.001.rc2
No change in the code logic, just renaming namespace and classes.
Move MPI-related code to mpi:: namespace and refactor. No change in code logic.
* all docker files are stored in ./dockerfile folder
* remove unused files
* added base container for OpenMPI + gcc-12
* fixed interface to OpenMPI (roll back from `static constexp auto kind = ..` to `static auto kind()`)
use `operator MPI_Datatype() const noexcept construct` to avoid ::kind() static member function
* update numpy types

* python api: uncomment wrapper for mdarray<double,2>
Move FFT related code to fft:: namespace. No change in code logic.
* move BLACS_grid, dmatrix, Eigensolver under the la:: namespace
* linalg_cost<T> is renamed to constant<T>
* linalg_t is renamed to lib_t
* linalg class is renamed to wrap

For example, now the call to gemm() wrapper looks the following: la::wrap(la::lib_t::blas).gemm(...) The code logic is unchanged.
This PR addresses the problem of finding symmetries of a lattice with very small distrotion of a high-symmetry phase. More error checks are intoroduces. In case of failure, the control:spglib_tolerance must be decreased. The following has been done:
* pass unit cell lattice tolerance to G-vectors to be used in find_lat_sym()
* introduce a check in find_lat_sym() to test if a set of lattice operations form a group
* find G-shells based on symmetry consideration; intoroduce more checks there
* find G-vector shell length using average value of G-vector lengths
* remove lurked obsolete code

### What has not been addressed yet
Ths most of the symmetry issues come from the ill defined lattices. Typical use case is a small distortion of the high-symmetry lattice to break the symmetry and perform lattice relaxation. In that case it can make sense to not use symmetry at all. When the distorion is small, spglib can overshoot the symmetry detection and find a higher-symmetry solution (even if spglib_tolerance is relatively small). That made us introduce the addition check in find_lat_sym(). But if you just remove the symmetries that transfrom metric tensor with some threshold error, you may end up with a set of symmetry operations that do not form a group. The search for a better solution to this problem continues.
* MPI grid of the band parallelisation is used to setup parallel FFT communcators
* wave-function reshuffling is changed to take into account the muffin-tin part of LAPW wave-functions
* get rid of comm_band_ortho_fft_coarse_ member
Modify the code to run large plane-wave cutoffs. In this case even local number of G-vectors has to be split in chunks such that augmentation operator can fit in the GPU memory.

* local G-vector chunk size is controlled with input parameter
* augmentation operator was simplified; prepare() and dismiss() functions were removed
* augmentation operator derivative class was incorporated in the Augmentation_operator class

With this modifications it was possible to run Au-surf example on 400 nodes of Piz Daint (pw cutoff: 60 a.u.^-1, gk cutoff 25 a.u.^-1)
…olerance

[fix] Change spglib tolerance from 1e-4 to 1e-6
use CMAKE_CUDA_ARCHITECTURES instead provided by enable_language(CUDA), these
archs are automatically added to .cu compilation
* Remove shadow variable
* expose sirius version to cmake
- use CMAKE_CUDA_ARCHITECTURES instead provided by enable_language(CUDA), these
archs are automatically added to .cu compilation
- update readme accordingly
- remove undefined targets
- use option instead of set for the cmake compilation options
rely on `CMAKE_CUDA_ARCHITECTURES` / enable_language(HIP)
simonpintarelli and others added 14 commits March 2, 2023 09:46
* switch to CSCS ci/cd for building base container images
* ROCm container is also built on the build-farm
Introduce a set of spherical functions and symmetrization of the set. The first use case is the PAW Vxc and Exc functions. Now the potential is computed first, then symmetrized and only then the contribution to total energy is computed. As by-product, the PAW code itself is cleaned up and simplified a little bit.
Summary of changes:

* most of the builds are done on K8S farm
* github only tests a simple cpu and simple gpu builds
* Dockerfiles for CI/CD are updates
Summary of the PR:
* use overloaded copy() function to copy objects; mdarray uses the same; operator>> is removed
* Periodic_function is now a composition of two objects: Smooth_periodic_function (defined on the FFT grid) and Spheric_function_set (defined for the muffin-tin part)
* Wrappers for external pointers to MT and RG parts of the Periodic_function are introduced
* API functions to set and get Periodic_function are changed to handle the dimensions of the functions correctly
* strong type lmax_t is introduced
* SDDK/type_definition.hpp header is removed
* strong_type.hpp header is introduced
* unused commented code in symmetrize.hpp is removed
* Density::magnetisation() renamed to Density::mag() to be consistent with Density::rho()
* use auto keyword in more places
* copy(), scale() and axpy() are introduced for mixing Periodic_functions
* minor clean-ups
@toxa81 toxa81 marked this pull request as ready for review April 23, 2023 17:05
@toxa81 toxa81 merged commit 84a71b7 into master Apr 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants