enhance custom easyblock for LAMMPS: add sanity_check_test_inputs custom easyconfig parameter, add mapping for zen4, also support building of non-stable LAMMPS versions#3336
Conversation
… sanity-check via the easyconfig
check_filescheck_files and update python command for 2Aug2023 and older versions
| 'kokkos': [True, "Enable kokkos build.", CUSTOM], | ||
| 'kokkos_arch': [None, "Set kokkos processor arch manually, if auto-detection doesn't work.", CUSTOM], | ||
| 'user_packages': [None, "List user packages (without prefix PKG_ or USER-PKG_).", CUSTOM], | ||
| 'check_files': [None, "List of tests for sanity-check.", CUSTOM], |
There was a problem hiding this comment.
Why not just rely on sanity_check_files if you need to override the default sanity check performed by this easyblock?
There was a problem hiding this comment.
That did not work and than on slack they suggested I do this. sanity_check_files is just ignored if added to the easyconfig.
There was a problem hiding this comment.
This is the output of sanity check if I add this to the easyconfig
sanity_check_files = [
'balance', 'crack', 'friction', 'indent',
'melt', 'min', 'nemd', 'obstacle',
]
output of sanity-check you can see that it runs all the tests set in check_files in the easyblock
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/atm/in.atm"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/atm/in.atm"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/balance/in.balance"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/balance/in.balance"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/colloid/in.colloid"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/colloid/in.colloid"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/crack/in.crack"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/crack/in.crack"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/dipole/in.dipole"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/dipole/in.dipole"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/friction/in.friction"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/friction/in.friction"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/hugoniostat/in.hugoniostat"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/hugoniostat/in.hugoniostat"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/indent/in.indent"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/indent/in.indent"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/melt/in.melt"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/melt/in.melt"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/min/in.min"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/min/in.min"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/msst/in.msst"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/msst/in.msst"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/nemd/in.nemd"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/nemd/in.nemd"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/obstacle/in.obstacle"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/obstacle/in.obstacle"); l.finalize()'': OK
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/pour/in.pour"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/pour/in.pour"); l.finalize()'': FAILED
>> running command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps import
lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/voronoi/in.voronoi"); l.finalize()'' ...
>> result for command 'cd /tmp/eb-nod3jf99/tmpx040qyst && LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH mpirun -n 1 python -c 'from lammps
import lammps; l=lammps();
l.file("/data/gent/vo/000/gvo00002/vsc46128/easybuild/RHEL8/cascadelake-ampere-ib/software/LAMMPS/2Aug2023_update2-foss-2023a-kokkos-dev_OBMD/exam
ples/voronoi/in.voronoi"); l.finalize()'': FAILED
There was a problem hiding this comment.
Ah, my bad check_files is used to determine which sanity check commands to run, and is orthogonal to the standard sanity_check_paths we have in EasyBuild which is used for checking whether specific files/directories exist or not.
To avoid confusion, maybe it's better to rename this custom check_files easyconfig parameter to something else to avoid confusion, for example sanity_check_test_inputs?
| mkdir(site_packages, parents=True) | ||
|
|
||
| self.lammpsdir = os.path.join(self.builddir, '%s-stable_%s' % (self.name.lower(), self.version)) | ||
| self.lammpsdir = os.path.join(self.builddir, '%s-*_%s' % (self.name.lower(), self.version)) |
There was a problem hiding this comment.
This seems to be the only real necessary change, the PR title should reflect that?
| 'kokkos': [True, "Enable kokkos build.", CUSTOM], | ||
| 'kokkos_arch': [None, "Set kokkos processor arch manually, if auto-detection doesn't work.", CUSTOM], | ||
| 'user_packages': [None, "List user packages (without prefix PKG_ or USER-PKG_).", CUSTOM], | ||
| 'check_files': [None, "List of tests for sanity-check.", CUSTOM], |
There was a problem hiding this comment.
Ah, my bad check_files is used to determine which sanity check commands to run, and is orthogonal to the standard sanity_check_paths we have in EasyBuild which is used for checking whether specific files/directories exist or not.
To avoid confusion, maybe it's better to rename this custom check_files easyconfig parameter to something else to avoid confusion, for example sanity_check_test_inputs?
check_files and update python command for 2Aug2023 and older versionssanity_check_test_inputs, add mapping for zen4 and update python command for 2Aug2023 and older versions
sanity_check_test_inputs, add mapping for zen4 and update python command for 2Aug2023 and older versionssanity_check_test_inputs, add mapping for zen4 and update python command for LAMMPS 2Aug2023 and older versions
sanity_check_test_inputs, add mapping for zen4 and update python command for LAMMPS 2Aug2023 and older versionssanity_check_test_inputs, add mapping for zen4, and update python command for LAMMPS 2Aug2023 and older versions
sanity_check_test_inputs, add mapping for zen4, and update python command for LAMMPS 2Aug2023 and older versionssanity_check_test_inputs custom easyconfig parameter, add mapping for zen4, also support building of non-stable LAMMPS versions
|
@boegelbot please test @ jsc-zen3 |
|
@boegel: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de PR test command '
Test results coming soon (I hope)... Details- notification for comment with ID 2289826172 processed Message to humans: this is just bookkeeping information for me, |
|
Test report by @boegelbot Overview of tested easyconfigs (in order)
Build succeeded for 1 out of 1 (1 easyconfigs in total) |
Add the option to change the examples that will be run during the sanity-check in the EasyConfig