HANDE: Difference between revisions
No edit summary |
(→Github releases: typo) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
== Github releases == |
== Github releases == |
||
Releases are pushed to [https://www.github.com/hande- |
Releases are pushed to [https://www.github.com/hande-qmc/hande Github] approx. every 6 months. |
||
* Create a new file in the release_notes folder in the documentation, e.g. v1.4.rst, to describe what features have been added, changed, removed and what bugs have been fixed since the last release. Do this on a branch, ideally do a small pull request, merge to (private) master. |
|||
* Ideally, recreate the benchmarks for the testsuite. To save time: do one run in optimised/non-debug mode, then do the debug tests. Or do all in debug mode. Need to be able to run the FCI tests. Again, doing this on a branch is probably cleanest. |
|||
⚫ | |||
* Merge the public branch into the private master to keep a single history. |
|||
git remote add github git@github.com:hande-qmc/hande |
|||
* Update file `tools/configurator.py` to say the next version (e.g. 1.4 instead of 1.3). |
|||
git fetch github |
|||
* Tag this version as e.g. v1.4 (`git tag -a v1.4` - https://git-scm.com/book/en/v2/Git-Basics-Tagging). |
|||
git checkout -tb github-master github/master |
|||
* Merge that updated private master into public master. |
|||
* Update the hande-www repository to update the HANDE website. Update github documentation if required. |
|||
git checkout master |
|||
git merge github/master --strategy=ours |
|||
git tag v1.3 |
|||
git co -B github-master |
|||
git push |
|||
⚫ | |||
(Remember to appropriately update the version information in environment_report.F90, and test benchmarks should also be regenerated prior to the release.) |
|||
In between releases, bug-fix commits from the private (development) repository are applied to the public branch (if the underlying bug is present in the public release): |
|||
<pre> |
|||
git rebase --preserve-merges --onto github-master HEAD^ HEAD |
|||
git co -B github-master |
|||
git push |
|||
</pre> |
|||
== Buildbot == |
== Buildbot == |
||
Line 87: | Line 70: | ||
</pre> |
</pre> |
||
This config works for AJWT on cerebro as of 5/2/19 for intel |
|||
⚫ | |||
⚫ | |||
module unload gcc |
|||
module load gcc/4.8.3 |
|||
module unload icc |
|||
module load icc/64/2019/1 |
|||
module load use.own |
|||
module unload mpi |
|||
module load mpi/hack-openmpi/intel17/3.1.2 |
|||
module load anaconda/python2/4.4.0 |
|||
module unload lua mkl hdf5 trlan |
|||
module load lua/5.3.4 mkl/64/2017/0/4 hdf5/1.8.20/ifort2017_5 trlan/201009/ifort2017_5 |
|||
⚫ | |||
⚫ | |||
<pre> |
<pre> |
||
diff --git a/config/gfortran.mkl.mpi.pop64 b/config/gfortran.mkl.mpi.pop64 |
diff --git a/config/gfortran.mkl.mpi.pop64 b/config/gfortran.mkl.mpi.pop64 |
Latest revision as of 00:51, 20 February 2020
Information about HANDE releases and running tests.
Github releases
Releases are pushed to Github approx. every 6 months.
- Create a new file in the release_notes folder in the documentation, e.g. v1.4.rst, to describe what features have been added, changed, removed and what bugs have been fixed since the last release. Do this on a branch, ideally do a small pull request, merge to (private) master.
- Ideally, recreate the benchmarks for the testsuite. To save time: do one run in optimised/non-debug mode, then do the debug tests. Or do all in debug mode. Need to be able to run the FCI tests. Again, doing this on a branch is probably cleanest.
- Merge the public branch into the private master to keep a single history.
- Update file `tools/configurator.py` to say the next version (e.g. 1.4 instead of 1.3).
- Tag this version as e.g. v1.4 (`git tag -a v1.4` - https://git-scm.com/book/en/v2/Git-Basics-Tagging).
- Merge that updated private master into public master.
- Update the hande-www repository to update the HANDE website. Update github documentation if required.
Buildbot
The tests are run nightly by buildbot. To update the configuration, edit
hande_master@zeeman.cmth.ph.ic.ac.uk:hande/master.cfg
Remember to restart the buildbot afterwards:
buildbot restart
Other relevant accounts are the account the slaves connect to by ssh: hande@zeeman, and the account the CUC3 buildslave runs on: jss43@hypatia. This latter may need the buildslave restarted each time hypatia is rebooted:
buildslave start
Website
The website uses rst and Nikola. The source on github. To update, edit the rst files (currently there is only a main page: to create others simply add more files to the pages/ folder), commit the changes and run
nikola github_deploy
Running the test suite on cerebro
Make use of other people having done the work for you:
cd ln -s ~ajwt3/privatemodules
Then load these modules (to test with the tough gfortran compiler and mpi):
module load use.own module unload gcc module load gcc/6.4.0 module unload mpi module load mpi/openmpi/gnu6/3.0.0 module load anaconda/python2/4.4.0 module unload lua module load lua/5.3.4/gcc-4.8.3 module load mkl/64/2017/0/4 module unload trlan module load trlan/201009/gcc-6.4.0 module unload hdf5 module load hdf5/1.8.20/gcc-6.4.0
This config works for AJWT on cerebro as of 5/2/19 for intel
module unload gcc module load gcc/4.8.3 module unload icc module load icc/64/2019/1 module load use.own module unload mpi module load mpi/hack-openmpi/intel17/3.1.2 module load anaconda/python2/4.4.0 module unload lua mkl hdf5 trlan module load lua/5.3.4 mkl/64/2017/0/4 hdf5/1.8.20/ifort2017_5 trlan/201009/ifort2017_5
Compile HANDE with these files modified ("git diff") using config/gfortran.mkl.mpi.pop64:
diff --git a/config/gfortran.mkl.mpi.pop64 b/config/gfortran.mkl.mpi.pop64 index 065d1a3..cf79d05 100644 --- a/config/gfortran.mkl.mpi.pop64 +++ b/config/gfortran.mkl.mpi.pop64 @@ -1,5 +1,5 @@ [DEFAULT] -include_f = -I $${HDF5_ROOT-/usr}/include -std=f2008ts +include_f = -I $${HDF5_ROOT}/include -std=f2008ts cppflags_opt = -DHAVE_SSE2 -DPARALLEL -DDET_SIZE=64 -DPOP_SIZE=64 -DDSFMT_MEXP=19937 [main] @@ -7,7 +7,8 @@ fc = mpif90 cc = mpicc cxx = mpiCC ld = mpif90 -libs = -ltrlan_mpi -lmkl_scalapack_lp64 -Wl,--start-group -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_openmpi_lp64 -Wl,--end-group -lpthread -lstdc++ -lhdf5_fortran -luui +libs = -ltrlan_mpi ${MKLROOT}/lib/intel64/libmkl_blas95_lp64.a ${MKLROOT}/lib/intel64/libmkl_lapack95_lp64.a ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_gf_lp64.a ${MKLROOT}/lib/intel64/libmkl_gnu_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_blacs_openmpi_lp64.a -Wl,--end-group -lgomp -lpthread -lm -ldl -luuid -llua -lstdc++ -lhdf5_fortran f90_module_flag = -J [opt] diff --git a/test_suite/userconfig b/test_suite/userconfig index 80452b1..9c39799 100644 --- a/test_suite/userconfig +++ b/test_suite/userconfig @@ -8,6 +8,7 @@ ignore_fields = time skip_program = grep skip_args = -i 'disabled at compile-time\|Fatal: not compiled with HDF5 support\|Running with .* threads\|Tried to pass logging options to a non-debug build' skip_cmd_template = tc.skip tc.args tc.test tc.error +launch_parallel = srun -N1 -p TEST -n tc.nprocs [user] diff = vimdiff
and then run the test suite with
../../testcode/bin/testcode.py -cpop64_mpi --total-processors=120 --processors=1
To run just one test, e.g. nh3.ccsdt.ppN.in,
srun -n4 -N1 ~/code/hande/bin/hande.x nh3.ccsdt.ppN.in