HANDE: Difference between revisions

From Thom Group Wiki
Jump to navigation Jump to search
Line 5: Line 5:


Releases are pushed to [https://www.github.com/hande-qmn/hande github] approx. every 6 months.
Releases are pushed to [https://www.github.com/hande-qmn/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.
* 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.
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.
* 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.
Again, doing this on a branch is probably cleanest.
- Merge the public branch into the private master to keep a single history.
* 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).
* 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).
* 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.
* Merge that updated private master into public master.
- Update the hande-www repository to update the HANDE website. Update github documentation if required.
* Update the hande-www repository to update the HANDE website. Update github documentation if required.


== Buildbot ==
== Buildbot ==

Revision as of 16:38, 5 February 2019

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

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