Skip tests that require gpus when crosscompiling Siesta#254
Conversation
|
bot: build repo:eessi.io-2025.06-software instance:eessi-bot-mc-aws on:arch=zen2 for:arch=x86_64/amd/zen2,accel=nvidia/cc70 |
|
New job on instance
|
|
I could not test it locally because our resolv.conf issue. Which is really enoying. |
|
The fact that the build fails when there's no internet access is a bit of a red flag (it's something that we should perhaps always be doing, running How difficult would it be to fix that in the Siesta build, so it doesn't rely on internet access anymore? |
|
This does the git clone in the easyconfig https://github.com/easybuilders/easybuild-easyconfigs/blob/eb9b3bee39194ee583106d6e0339cd11e55c3b57/easybuild/easyconfigs/s/Siesta/Siesta-5.4.2-foss-2024a-CUDA-12.6.0.eb#L23-L27. It is not internet access that is the problem it the resolving of the dns. I could just get the tarball manually. And than it would build withou an issue. |
|
This does not need a fix in EasyBuild so don't stop the pr over that. Manually downloaded the sources in another environment fixes the problem. which you also need to do in an evironment without internet access. |
|
Ah wait no it is broken it is doing that same git clone during when running cmake. |
|
@AnthoniAlcaraz These sources might not be used, https://github.com/easybuilders/easybuild-easyconfigs/blob/eb9b3bee39194ee583106d6e0339cd11e55c3b57/easybuild/easyconfigs/s/Siesta/Siesta-5.4.2-foss-2024a-CUDA-12.6.0.eb#L23-L27. Because it also doing a |
|
We have to make sure that thoses sources are found https://gitlab.com/siesta-project/siesta/-/blob/5.4.2/External/ELSI-project/CMakeLists.txt#L235-240 |
|
cmake is looking in |
|
The extraction might be leaving the directory with the commit hash suffix (e.g. elsi_interface-512532a42c5e...) instead of the plain elsi_interface name that cmake expects. Maybe, a possible fix in the extract_cmd ???
|
Yes, Probably through a local variable to make it a bit more readable, something like: local_extract_cmd_elsi = ' && '.join([
"tar xzf %s -C %%(builddir)s/siesta-%%(version)s/External/ELSI-project",
"mv %(builddir)s/siesta-%(version)s/External/ELSI-project/elsi_interface-* "
"%(builddir)s/siesta-%(version)s/External/ELSI-project/elsi_interface",
])
...
'extract_cmd': local_extract_cmd_elsi, |
|
do I need to modify all the easyconfigs for Siesta? can you modify it for finished the PR? |
|
I already have one that I'm testing now. pr incomming. But that should not hold up this pr. |
|
bot: build repo:eessi.io-2025.06-software instance:eessi-bot-mc-aws on:arch=zen2 for:arch=x86_64/amd/zen2,accel=nvidia/cc70 |
|
New job on instance
|
|
New job on instance
|
|
@laraPPr is this solution a final solution? i.e., if we got a new siesta version, will it be work? |
@AnthoniAlcaraz The approach that @laraPPr proposed makes sense to me, and should be fine to use going forward. |
| "Solvers-si-qdot-elpa-native-gpu_mpi4_omp1", # runs cuda get device | ||
| "Solvers-si-qdot-elpa-native-1stage-gpu_mpi4_omp1", # runs cuda get device | ||
| ] | ||
| self.cfg['testopts'] = self.cfg['testopts'][:-1] + "|" + "|".join(failing_tests) + "'" |
There was a problem hiding this comment.
You're making a lot of assumptions here, maybe it's better to use a regular expression here to keep the part that's already there in the -E '...', and only add to it:
>>> testopts
"--output-on-failure -E 'foo|bar'"
>>>
>>>
>>> re.sub(r"-E '(.*)'", r"-E '\1|one|two'", testopts)
"--output-on-failure -E 'foo|bar|one|two'"| Ignore failing tests when crosscompiling without gpu pressent. | ||
| """ | ||
| if self.name == 'Siesta': | ||
| if self.version in ['5.4.2']: |
There was a problem hiding this comment.
Also check for CUDA in self.cfg['versionsuffix']?
We should only skip these tests for CUDA easyconfigs of Siesta
No description provided.