-
Notifications
You must be signed in to change notification settings - Fork 5
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
Containerization of Environ build #9
Containerization of Environ build #9
Conversation
Replicate Environ, QE compilation; Include helpful tools: pseudos, python; Configure for custom options; additional testing needed--occasional warnings with tests, examples
I was running tests wrongly before. Test results: Using executable: /app/q-e/Environ/tests/..//tests/run-pw.sh.
Test id: 240625.
Benchmark: GIT.
pw_confine - pw.in (arg(s): confine-sccs.in): Passed.
pw_confine - pw.in (arg(s): confine-ss.in): Passed.
pw_confine - pw.in (arg(s): confine-system.in): Passed.
pw_dielectric - neutral.in (arg(s): dielectric-sccs-default.in): Passed.
pw_dielectric - neutral.in (arg(s): dielectric-sccs-iter-aux.in): Passed.
pw_dielectric - neutral.in (arg(s): dielectric-sccs-psd.in): Passed.
pw_dielectric - neutral.in (arg(s): dielectric-ss-default.in): **FAILED**.
f1
ERROR: absolute error 1.03e-02 greater than 1.00e-03. (Test: 0.0018. Benchmark: 0.0121.)
pw_dielectric - neutral.in (arg(s): dielectric-ss-iter-aux.in): **FAILED**.
f1
ERROR: absolute error 1.05e-02 greater than 1.00e-03. (Test: 0.0017. Benchmark: 0.0122.)
pw_dielectric - charged.in (arg(s): dielectric-sccs-default.in): Passed.
pw_dielectric - charged.in (arg(s): dielectric-sccs-iter-aux.in): Passed.
pw_dielectric - charged.in (arg(s): dielectric-sccs-psd.in): Passed.
pw_dielectric - charged.in (arg(s): dielectric-ss-default.in): **FAILED**.
f1
ERROR: absolute error 6.40e-03 greater than 1.00e-03. (Test: 0.3552. Benchmark: 0.3488.)
pw_dielectric - charged.in (arg(s): dielectric-ss-iter-aux.in): **FAILED**.
f1
ERROR: absolute error 6.40e-03 greater than 1.00e-03. (Test: 0.355. Benchmark: 0.3486.)
pw_dielectric - neutral.in (arg(s): dielectric-sys-default.in): Passed.
pw_dielectric - neutral.in (arg(s): dielectric-sys-iter-aux.in): Passed.
pw_dielectric - charged.in (arg(s): dielectric-sys-default.in): Passed.
pw_dielectric - charged.in (arg(s): dielectric-sys-iter-aux.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lmpb-sccs-stern_full.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lmpb-sccs-stern_ions.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lmpb-ss-stern_full.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lmpb-ss-stern_ions.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lpb-sccs.in): Passed.
pw_electrolyte - pw.in (arg(s): electrolyte-lpb-ss.in): Passed.
pw_externals - isolated.in (arg(s): externals_0d_vacuum_default.in): Passed.
pw_externals - isolated.in (arg(s): externals_2d_vacuum_default.in): Passed.
pw_externals - isolated.in (arg(s): externals_0d_dielectric_default.in): Passed.
pw_externals - isolated.in (arg(s): externals_2d_dielectric_default.in): Passed.
pw_externals - slab.in (arg(s): externals_0d_vacuum_default.in): Passed.
pw_externals - slab.in (arg(s): externals_2d_vacuum_default.in): Passed.
pw_externals - slab.in (arg(s): externals_0d_dielectric_default.in): Passed.
pw_externals - slab.in (arg(s): externals_2d_dielectric_default.in): Passed.
pw_field-aware - pw.in (arg(s): fa-ss.in): Passed.
pw_gcs - pw.in (arg(s): gcs-solvent.in): Passed.
pw_gcs - pw.in (arg(s): gcs-vacuum.in): Passed.
pw_ms - pw.in (arg(s): ms-solvent.in): Passed.
pw_ms - pw.in (arg(s): ms-vacuum.in): Passed.
pw_mt - neutral.in (arg(s): dielectric-default.in): Passed.
pw_mt - charged.in (arg(s): dielectric-default.in): Passed.
pw_mt - isolated.in (arg(s): externals_0d_vacuum_default.in): Passed.
pw_mt - isolated.in (arg(s): externals_0d_dielectric_default.in): Passed.
pw_periodic - neutral.in (arg(s): periodic-vacuum-default.in): Passed.
pw_periodic - charged.in (arg(s): periodic-vacuum-default.in): Passed.
pw_periodic - neutral.in (arg(s): periodic-dielectric-default.in): Passed.
pw_periodic - charged.in (arg(s): periodic-dielectric-default.in): Passed.
pw_regions - pw.in (arg(s): insphere-default.in): Passed.
pw_regions - pw.in (arg(s): outslab-default.in): Passed.
pw_slab - neutral.in (arg(s): periodic-vacuum-default.in): Passed.
pw_slab - neutral.in (arg(s): periodic-dielectric-default.in): Passed.
pw_slab - charged.in (arg(s): periodic-vacuum-default.in): Passed.
pw_slab - charged.in (arg(s): periodic-dielectric-default.in): Passed.
pw_solvent-aware - pw.in (arg(s): local-sccs.in): Passed.
pw_solvent-aware - pw.in (arg(s): sa-sccs.in): Passed.
pw_solvent-aware - pw.in (arg(s): local-ss.in): **FAILED**.
f1
ERROR: absolute error 6.40e-03 greater than 1.00e-03. (Test: 0.0439. Benchmark: 0.0503.)
pw_solvent-aware - pw.in (arg(s): sa-ss.in): **FAILED**.
f1
ERROR: absolute error 7.10e-03 greater than 1.00e-03. (Test: 0.0439. Benchmark: 0.051.)
pw_spin - radical.in (arg(s): vacuum-pcc.in): Passed.
pw_spin - radical.in (arg(s): dielectric-pcc.in): Passed.
pw_surface - pw.in (arg(s): surface-sccs-default.in): Passed.
pw_surface - pw.in (arg(s): surface-sccs-fft.in): Passed.
pw_surface - pw.in (arg(s): surface-ss-default.in): **FAILED**.
f1
ERROR: absolute error 3.e-03 greater than 1.00e-03. (Test: 0.0305. Benchmark: 0.0338.)
pw_surface - pw.in (arg(s): surface-ss-fft.in): **FAILED**.
f1
ERROR: absolute error 3.10e-03 greater than 1.00e-03. (Test: 0.0307. Benchmark: 0.08.)
pw_surface - pw.in (arg(s): surface-sys-default.in): Passed.
pw_surface - pw.in (arg(s): surface-sys-fft.in): Passed.
pw_volume - pw.in (arg(s): volume-sccs-default.in): Passed.
pw_volume - pw.in (arg(s): volume-ss-default.in): **FAILED**.
f1
ERROR: absolute error 2.64e-02 greater than 1.00e-03. (Test: 0.0305. Benchmark: 0.0569.)
pw_volume - pw.in (arg(s): volume-sys-default.in): Passed.
pw_water - neutral.in (arg(s): water-neutral-sccs-default.in): Passed.
pw_water - neutral.in (arg(s): water-neutral-ss-default.in): **FAILED**.
f1
ERROR: absolute error 3.00e-03 greater than 1.00e-03. (Test: 0.1444. Benchmark: 0.1414.)
pw_water - cation.in (arg(s): water-cation-sccs-default.in): Passed.
pw_water - cation.in (arg(s): water-cation-ss-default.in): **FAILED**.
f1
ERROR: absolute error 3.50e-03 greater than 1.00e-03. (Test: 0.58. Benchmark: 0.3423.)
pw_water - anion.in (arg(s): water-anion-sccs-default.in): Passed.
pw_water - anion.in (arg(s): water-anion-ss-default.in): **FAILED**.
f1
ERROR: absolute error 1.10e-02 greater than 1.00e-03. (Test: 0.018. Benchmark: 0.007.)
All done. ERROR: only 59 out of 71 tests passed.
Failed tests in:
/app/q-e/Environ/tests/pw_dielectric/
/app/q-e/Environ/tests/pw_solvent-aware/
/app/q-e/Environ/tests/pw_surface/
/app/q-e/Environ/tests/pw_volume/
/app/q-e/Environ/tests/pw_water/ |
Run tests and examples; Add flags for optional pseudo download, run tests/examples; Use v22.04 distro with additional deps; Add env variables, refactor for legibility; 58/71 tests passing, 8/10 examples run
Included openmpi (and other goodies) in the build and also ran examples: # grep -E ": starting|: done" /app/examples.log
/app/q-e/Environ/examples/qe/pw/sccs : starting
/app/q-e/Environ/examples/qe/pw/sccs : done
/app/q-e/Environ/examples/qe/pw/sscs : starting
/app/q-e/Environ/examples/qe/pw/sscs : done
/app/q-e/Environ/examples/qe/pw/pbc : starting
/app/q-e/Environ/examples/qe/pw/pbc : done
/app/q-e/Environ/examples/qe/pw/slab : starting
/app/q-e/Environ/examples/qe/pw/slab : done
/app/q-e/Environ/examples/qe/pw/helmholtz : starting
/app/q-e/Environ/examples/qe/pw/helmholtz : done
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : starting
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : done
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : done
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : done
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : done
/app/q-e/Environ/examples/qe/pw/helmholtz_linpb : done
/app/q-e/Environ/examples/qe/pw/mott_schottky : starting
/app/q-e/Environ/examples/qe/pw/mott_schottky : done
/app/q-e/Environ/examples/qe/pw/ms_gcs : starting
/app/q-e/Environ/examples/qe/pw/ms_gcs : done
/app/q-e/Environ/examples/qe/pw/solvent_aware : starting but I ran into an error running the solvent-aware examples: /app/q-e/Environ/examples/qe/pw/solvent_aware : starting
This example shows how to use pw.x to simulate a 10xH20 water cluster
immersed in continuum solvent. By setting the solvent_radius inside the
BOUNDARY namelist, one activates the solvent-aware interface, see
O. Andreussi, N.G. Hörmann, F. Nattino, G. Fisicaro, S. Goedecker, and
N. Marzari, J. Chem. Theory Comput. 15, 1996 (2019).
This feature prevents dielectric from getting inside the cluster.
executables directory: /app/q-e/bin
pseudo directory: /app/q-e/pseudo
temporary directory: /app/q-e/tempdir
checking that needed directories and files exist... done
running pw.x as: /app/q-e/bin/pw.x -nk 1 -nd 1 -nb 1 -nt 1 --environ
cleaning /app/q-e/tempdir... done
Error condition encountered during test: exit status = 137
Aborting |
Configure docker image building, artifact loading; Unset Dockerfile flags for CI
`mpirun --allow-run-as-root` and OMPI environment vars not honored at runtime
Examples10/10 examples actually do run successfully with the containerized build. I think my other session running all the examples just timed out: /app/q-e/Environ/examples/qe/pw/solvent_aware : starting
/app/q-e/Environ/examples/qe/pw/solvent_aware : done
/app/q-e/Environ/examples/qe/pw/field_aware : starting
/app/q-e/Environ/examples/qe/pw/field_aware : done Continuous IntegrationI also configured a CI action that builds environ on commits to CI Issues
...
pw_water - anion.in (arg(s): water-anion-ss-default.in): **FAILED**.
Different sets of data extracted from benchmark and test.
Data only in benchmark: e1, f1, n1.
All done. ERROR: only 0 out of 71 tests passed.
...
|
Feature Summary
PerformanceExamples: 10/10 completed Future Directions
|
A Dockerfile build of QE with Environ to mitigate "works on my machine" problems by automating the source downloads, dependency installations, and compilation steps in a partitioned, self-contained environment treated as an independent OS. I've arbitrarily chosen an Ubuntu OS, but best practice for a distributed library is to offer multiple OS Dockerfiles. I included SSSP pseudopotential file downloads and Python installation just as a convenience factor; I don't know how helpful those really are for regular Environ use--maybe they could be useful for demos.
I've included instructions in the comments at the start of the file, which should be friendly for folks who are unfamiliar with Docker. I'll include them here for completeness:
I only attempted to install PW, and total image build time is usually about 5 min for me. After that, it's plug and play. I tried to run a few examples, but it took a long time, and I noticed a few exceptions and warnings I didn't understand:
I wasn't sure if they were necessarily due to the build or maybe some other issue. I could not run the tests due to a syntax error in the driver:
I'm not sure if the test suite and examples are up to date and/or possibly incompatible with the OS or installation configurations I set. I'm hoping you see something I don't and we can tweak this one instance to be used by everyone (or at least the Linux-friendly audience). That in mind, feel free to edit yourself if you would build differently--this is just my best guess (haha).
Anyway, I noticed quite a few questions about installation in the support group, so I'm hoping this helps at least one person with that. It seems to me that is a barrier for some users, so I think there may be a considerable benefit to this approach.