@@ -17,102 +17,75 @@ Sciences at UiT - The Arctic University of Norway.
17
17
### User support: [ mrchem.slack.com] ( https://join.slack.com/t/mrchem/shared_invite/enQtNTI3MjMzNjM0NTk0LWNkODZjNTMwYmM4NmRmODExMjQzMDc3NThlMzNmNmIyNWQwM2YwOGY0OWY4NmNmNzE4ZmM2NzgxYzUzNDg3NDM )
18
18
### Documentation: [ mrchem.readthedocs.io] ( http://mrchem.readthedocs.io )
19
19
20
- ### Versioning scheme
21
-
22
- This project adheres to a [ semantic versioning scheme] ( https://semver.org/ ) ,
23
- with ` MAJOR ` .` MINOR ` .` PATCH ` -` LABEL `
24
-
25
- - ` MAJOR ` : Introduces backward incompatible changes to the API
26
- - ` MINOR ` : Introduces new features without breaking backward compatibility
27
- - ` PATCH ` : Only simple bugfixes
28
- - ` LABEL ` : Marks a pre-released version or release candidate
29
-
30
- We will try to keep only a * single* line of development on the ` master `
31
- branch, and from this branch off to tag new releases. The type of release
32
- (` MAJOR ` or ` MINOR ` ) is determined by the nature of the introduced changes.
33
- ` MAJOR ` changes should not be introduced lightly, and could be held back at pull
34
- request-level in anticipation of prior ` MINOR ` release(s). Once a new ` MAJOR ` is
35
- released, the development on the old ` MAJOR ` is terminated and no ` MINOR ` pull
36
- requests will be accepted on top of old ` MAJOR ` s, only simple ` PATCH ` es.
37
-
38
- ### Branching model
39
-
40
- In the following, X, Y and Z should * always* be substituted with appropriate
41
- numeric values, they should never appear as 'X', 'Y' or 'Z' in any version or
42
- branch name.
43
-
44
- The upstream MRChemSoft/mrchem repository should contain only two kinds of
45
- branches: the ` master ` branch which represents the main development line, as
46
- well as a separate ` release/X.Y ` branch for each ` MINOR ` release. All ` PATCH `
47
- releases are applied linearly on the ` MINOR ` release branches.
48
-
49
- #### The ` master ` branch:
50
-
51
- <img src =" doc/gfx/git-master.png " alt =" drawing " width =" 600 " />
52
-
53
- - This branch should * not* carry any release tags
54
- - New features should * always* be directed to this branch
55
- - Bugfixes may be directed to this branch
56
- - Bugfixes may be * cherry-picked* from ` release ` branches, but * never* merged
57
- - The VERSION file should point to the next * expected* release,
58
- and * always* carry the pre-release label ` -alpha `
59
- - When a new ` release/X.Y ` branch is created, the VERSION file on ` master `
60
- is bumped to the next expected ` MAJOR ` /` MINOR ` , i.e. ` X.(Y+1).0-alpha ` or
61
- ` (X+1).0.0-alpha `
62
-
63
- #### The ` release/X.Y ` branches:
64
-
65
- <img src =" doc/gfx/git-release.png " alt =" drawing " width =" 530 " />
66
-
67
- - This branch should carry * all* release tags associated with the ` X.Y ` ` MINOR `
68
- release, including ` PATCH ` es and release candidates ` -alpha1 ` , ` -alpha2 ` , etc
69
- - The VERSION file should point to the * latest* release tag on this branch
70
- - The creation of this branch marks a feature freeze for version ` X.Y `
71
- - New features should * never* be directed to this branch
72
- - Bugfixes and release preparations may be directed to this branch
73
- - Bugfixes may be * cherry-picked* from ` master ` , but * never* merged
74
-
75
- ### Contributing
76
-
77
- All code changes are incorporated through the `fork -> pull request (PR) ->
78
- code review` work flow, with the following principles:
79
-
80
- - New features should * always* branch off ` master `
81
- - Bugfixes may branch off either ` master ` or ` release/X.Y `
82
- - PRs should * always* be directed back at its original base branch, ` master ` or
83
- ` release/X.Y `
84
- - Bugfixes should be small and specific (cherry-pickable)
85
- - Cherry-picks between ` master ` and ` release ` branches will be handled by code
86
- administrators
87
- - All version tagging and changes to the VERSION file will be handled by code
88
- administrators, and should * not* be part of any PR
89
-
90
- #### Contributing a new feature:
91
-
92
- - Always start from latest ` master `
93
- - Branch off to a local feature branch
94
- - Implement new feature
95
- - Regularly incorporate the latest changes from ` master ` , by merging or
96
- (preferably) rebasing
97
- - File PR from the local feature branch back to ` master `
98
-
99
- #### Contributing a bugfix:
100
-
101
- - Start from latest appropriate branch, ` master ` or ` release/X.Y `
102
- - Branch off to a local bugfix branch
103
- - Implement bugfix
104
- - Regularly incorporate the latest changes from original branch by * rebasing*
105
- - File PR from the local bugfix branch back to original branch
106
- - Evaluate whether the bugfix should be cherry-picked to other branches
107
- and communicate it to the administrators
108
-
109
-
110
- ### Automatic formatting
111
-
112
- You can install Git hooks to keep in check formatting and licensing headers:
113
-
114
- ```
115
- cd .git/hooks
116
- ln -s ../../.githooks/* .
117
- ```
20
+
21
+ ## Installation
22
+
23
+ For optimal performance it is recommended to build from source, as the packaged
24
+ builds are quite generic without architecture specific optimizations.
25
+
26
+
27
+ ### From source including code examples
28
+
29
+ To build MRChem from source with MPI+OpenMP parallelization:
30
+
31
+ $ git clone [email protected] :MRChemSoft/mrchem.git
32
+ $ cd mrchem
33
+ $ ./setup --prefix=<install-dir> --omp --mpi --cxx=<mpi-compiler> <build-dir>
34
+ $ cd <build-dir>
35
+ $ make
36
+ $ make test
37
+ $ make install
38
+
39
+ All dependencies will be fetched at configure time, if not already available.
40
+ For more information on different kinds of builds, see
41
+ [ installation instructions] ( http://mrchem.readthedocs.io/en/latest/installation.html ) .
42
+
43
+
44
+ ### Using Conda
45
+
46
+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/version.svg )] ( https://anaconda.org/conda-forge/mrchem )
47
+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/latest_release_date.svg )] ( https://anaconda.org/conda-forge/mrchem )
48
+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/downloads.svg )] ( https://anaconda.org/conda-forge/mrchem )
49
+
50
+ To install MRChem in a Conda environment ` myenv ` :
51
+
52
+ $ conda create -n myenv
53
+ $ conda activate myenv
54
+ $ conda install -c conda-forge mrchem # latest version (OpenMP only)
55
+ $ conda install -c conda-forge mrchem=1.0.0 # tagged version (OpenMP only)
56
+ $ conda install -c conda-forge mrchem=*=*openmpi* # latest version (MPI+OpenMP)
57
+ $ conda install -c conda-forge mrchem=*=*mpich* # latest version (MPI+OpenMP)
58
+
59
+ To list all available versions
60
+
61
+ $ conda search -c conda-forge mrchem
62
+
63
+
64
+ ### Using Spack
65
+
66
+ To install MRCPP in a Spack environment ` myenv ` :
67
+
68
+ $ spack env create myenv
69
+ $ spack env activate myenv
70
+ $ spack install mrchem # latest version (MPI+OpenMP)
71
+ $ spack install mrchem @1.0.0 # tagged version (MPI+OpenMP)
72
+ $ spack install mrchem -mpi # latest version (OpenMP only)
73
+
74
+ For information on available Spack builds:
75
+
76
+ $ spack info mrchem
77
+
78
+
79
+ ### Using EasyBuild
80
+
81
+ To install MRChem in an EasyBuild/Lmod environment (only MPI+OpenMP version
82
+ available):
83
+
84
+ $ eb MRChem-<version>-<toolchain> --fetch
85
+ $ eb MRChem-<version>-<toolchain> --robot
86
+ $ module load MRChem/<version>-<toolchain>
87
+
88
+ See
89
+ [ EasyBuild] ( https://github.com/easybuilders/easybuild-easyconfigs/tree/develop/easybuild/easyconfigs/m/MRChem )
90
+ for available ` <versions> ` and ` <toolchains> ` .
118
91
0 commit comments