Skip to content
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

New easyblock for building QuantumESPRESSO with CMake #3257

Merged
merged 19 commits into from
Apr 5, 2024

Conversation

Crivella
Copy link
Contributor

Since Quantum Espresso 7.x, the configure/make build has been less supported in favor of CMake/Make.

Right now bot methods of building QE coexist, but some features, like the installation of the pw2qmcpack are only supported in the CMake version.

Further more, the CMake implementation should be able to much more easily recognize the present external libraries and pickup environment variables set by easy build, and also properly implement parallelization in Make, allowing to build and test QE much faster (the old Config/Make would need make to be run multiple times to reach the end if ran with more than 1 parallel process)

@Crivella
Copy link
Contributor Author

One thing to note is that compilation of some QE components and plugins has been moved to an implementantion with submodule pulling data from a specific commit
Offline building is still possible but will require more careful implementation, at least if we still want to check the hash, while running the script as suggested on the QE wiki.

While it is possible to emulate what the script is doing, i would prefer to keep it as a source of truth, in case paths/implementation are changed in future versions.

@Micket Micket added the new label Mar 19, 2024
Copy link
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ocaisa
Copy link
Member

ocaisa commented Apr 5, 2024

@boegelbot please test @ jsc-zen3
EB_ARGS="QuantumESPRESSO-7.3-foss-2023a.eb"

@boegelbot
Copy link

@ocaisa: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=3257 EB_ARGS="QuantumESPRESSO-7.3-foss-2023a.eb" EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3257 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 3918

Test results coming soon (I hope)...

- notification for comment with ID 2039827575 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

Build succeeded for 0 out of 1 (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.3, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.18
See https://gist.github.com/boegelbot/38a058550c4fb9b6348e1b796be0aaab for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Apr 5, 2024

This flakiness with the thresholds on the test-suite...

@ocaisa
Copy link
Member

ocaisa commented Apr 5, 2024

There is a PR open that addresses the single failing test issue that we have seen for QE in EESSI for the original easyblock. The reason for running that build here was just a sanity check, and that was ok.

In easybuilders/easybuild-easyconfigs#20138 we have the checks for the new easyblock.

@ocaisa ocaisa merged commit 918e58c into easybuilders:develop Apr 5, 2024
47 checks passed
@boegel boegel added this to the release after 4.9.1 milestone Apr 5, 2024
from easybuild.easyblocks.generic.cmakemake import CMakeMake


class EB_QuantumESPRESSOcmake(CMakeMake):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This approach has a bunch of downsides: one is duplicate code, another is that you have to explicitly opt-in by using easyblock = 'EB_QuantumESPRESSOcmake' in the easyconfig files...

How much effort would it be to integrate this into the existing "standard" custom easyblock for QuantumESPRESSO?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had a different plan, I was going to do a follow-up PR when the open QE easyconfigs are merged, where we use an explicit easyblock for the configuremake-based easyconfigs and then switch this to the standard

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be a lot of (pointless?) effort to merge them

@Crivella Crivella deleted the feature-qe-cmake-eblock branch April 8, 2024 09:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants