-
Notifications
You must be signed in to change notification settings - Fork 202
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
stabilize Cray support #1390
Comments
ref. fyi. in fact, the |
The motivation for the The I'm sure we can come up with a scheme that benefits from the sorting aspect, yet has a mapping to real world stuff like monthly updating of the PE by Cray. |
feedback from Cray guy at Cray booth at SC15:
|
Kewl stuff! How do we know wich version of |
@pforai: picking a version of GCC, libsci and cray-mpich isn't ay different on the Cray than on others systems, as it turns out, other than Cray providing the modules for it Basically, we should go with the latest recommended version available at that time, based on the Cray documentation. |
After Speaking to Heidi Poxon from Cray Inc. we have more pointers that are valuable:
|
I've discussed with someone from Cray today (as we upgraded Piz Daint this week) and I was told that the version after PrgEnv-* is just a hint about the CLE version installed. It has absolutely no relation with the programming environment and they recommend to keep the latest as default when we upgrade, even if we didn't change other of our defaults (gcc/cuda/libsci). This scheme completely breaks our current easyconfig files, because at some point we will switch the default for cuda from 6.5 to 7.0 and we will keep the same PrgEnv version. So we will probably need a solution for that at short-term. I think we can either implement it doing swaps after loading the PrgEnv as you mentioned above or create our own 'blessed version list'. The swap solution is flexible but I don't know how much trouble is to implement it and a static list should work for most cases (at least for us is not a problem to maintain that). This is actually what we did for CS-STORM: we created a copy of the PrgEnv module and pinned the dependency versions for each specific PE. We could do the same for the XC series (while waiting for a solution from Cray) and assign a version based on the PE release: "15.11" for Nov/2015 (or use whatever is the standard for versioning on EB). My question is how to ship such a modulefile with EB? Any thoughts? |
@gppezzi I think I can issue you a PR some time this evening, as I'm jetlagged anyway and cant sleep properly. Regarding the implementation, we MUST swap after the PE module is swapped as this is the only Cray supported way to have a working environment. That means first we figure out wich PE is loaded, then swap that to the desired PE and then swap each of the other components (compiler, MPI, libsci, etc.) as well. This is required by the internal structure of the modules since they contain the logic how to swap to eg the MPI that was compiled with a different compiler than the perviously loaded one etc. No comments from Heidi et al from Cray at this time. Heidi Poxon from Cray was telling us that they keep an internal list of blessed versions for each PE release that they use for testing of builds. The version list is different to the PE release notes in the sense that PE relnotes only contain NEW components modified within that PE release and that the blessed verison is the full stack of components and their versions. That is roughly the gist of what she was telling me and @boegel. @boegel we should ping Brett Bode about access to Blue Waters btw. |
We should definitely pin down the versions of all components involved in our For the For other components, where we typically only need to change the version, we should swap in the module we want, for example |
Why unload? We should swap PE, and the components. OK, if a user loaded the EB generated module the environment should be the same as EB prepares it. This makes sense. |
The thing is that this should be done by the Unloading all |
I wouldn't trust Cmod that module swap X/1.2.3 to Y/1.2.3 is the same as unload X/1.2.3, load Y/1.2.3. Will need to play with this, but I agree on the fact that once you manually load the EB module that it should work as you expect it to be and not rely on TC internal machinery to change the env implicitly behind closed curtains ( ie not running without debug and knowing internals). |
@pforai: as far as I know, a swap is literally an unload followed by a load; we can ask our expert ;-) |
I was just thinking of looping in Robert here, but my assumption was that the answer is 'it depends' and that stuff isn't as simple as it might seemingly appear ;) |
@rtmclay: Is a |
Yes it is exactly the same. I just checked Lmod and the pure TCL version of Tmod. |
At CSCS most of our builds work only with dynamic = true (see craype.py). I don't know if that is the case for other sites, but, if nobody sees a problem, maybe it would be better to change the default at toolchain level to True. What do you think? |
Yeah, we should set this as a default but give a heads up to the user that this is the default. Old school Cray users might expect that platform defaults (static) are also used by EB. |
After the 11th Hackathon here at CSCS we should revisit the functionality to 'unwrap' the wrapper and use the contained compiler directly. There seems to be a case to do this for VTK on Cray. |
Please close this issue, it makes me cry. thanks. ;) |
Hi! We are interested in evaluating EasyBuild on Titan (Cray XK7). Is there anything I can do to contribute to this issue? |
Just bootstrap and start building ;) Ping @boegel, me or @gppezzi in case you get stuck! Also Brett Bode (@brettbode) should have some experience building software with EasyBuild on BlueWaters. |
@robertdfrench a pending update of the documentation w.r.t. Cray support is at http://gppezzi-eb.readthedocs.io/en/cray/Cray_support.html . Like @pforai mentioned: give it a shot, let us know how it turns out. The EasyBuild mailing list (https://lists.ugent.be/wws/info/easybuild) is a good place to share experiences or discuss problems. Maybe it's also interesting to set up a short conf call together with @gppezzi. To contribute back beyond feedback: try new builds on top of the |
Cool, this seems to make sense. What is the canonical way to determine which versions of fftw, cray-netcdf, etc. belong to each version of a PrgEnv? For example, I have PrgEnv-gnu/5.2.82, but the packages I have tried (CP2K, Gromacs, WRF as suggested on the Cray support page) seem to expect different (some newer, some older) versions of Cray-provided libraries than what we have. I reckon I could resolve this by producing new easyconfigs for each of these packages which specify the versions of the libraries we happen to have installed, but I'm sure I am reaching for that because I don't know a better route. Is there a more "EasyBuild-like" way to capture a differing set of cray libraries for, say, WRF in particular? (Also, should I move this question to a different venue?) Thanks so much for your time, this is a very interesting tool! |
@robertdfrench typically, they are the latest version on the system that the easyconfig file was created on... Unfortunately, the versions that are available are very different between Cray sites, despite that in theory everyone should be able to provide the latest versions of those modules. I think the intention is to work towards a more community-oriented way of picking the versions of the dependent Cray modules. Maybe @gppezzi can shed some light on this? He's been at the forefront of the Cray support in EasyBuild in CSCS (and likely the person you saw talking at CUG'16?). |
@robertdfrench PrgEnv-gnu/5.2.82 is only saying which version of CLE you are running, so it won't help you to discover which versions of the PE dependencies you have available. To find that out, you need to either ask your sysadmins or compare the BTW, from 2016.04 Cray is now providing a module called @uhaehner has already built a couple of packages on Titan using CrayGNU/2015.11 (and probably also 2015.06), so I'm curious to know which module versions are missing when installing CrayGNU-2015.11.eb and CrayGNU-2015.06.eb. (could you please report here #1769 ?) If you really don't have any of those PEs installed, a solution is to
|
Ah, okay, the machine I was on is using PE 15.09. Thank you for clarifying, I did not understand that PE and CLE were versioned separately. Will EasyBuild try to override WRF's dependencies with those specified in the CrayGNU-2015.09.eb toolchain? Can you help me find the relevant section in the documentation so I can educate myself? Thank you again |
The --try-toolchain-version mechanism will actually create new .eb files for WRF + dependencies, replacing the 2015.11 by 2015.09, and then eb will trigger the build on top of those new files.
If the build is successful you can find the .eb recipes inside the installation directory (under a folder named easybuild). In case of failure, EasyBuild will point you out to the temporary location of those recipes. You can then tweak them and retry (without adding the try-toolchain-version flag). Before issuing the command above make sure that you have CrayGNU-2015.09.eb on your robot search path or that you have the module already installed. You can install it by running:
|
We've asked ORNL for an account on Titan before and due to all the legal setup bs were unable to sign required documents, so maybe we all should have a short conf call to get you going? I think this would be the easiest. There's some small setup involved like configuring EasyBuild for your setup, tweaking the external modules configuration file etc. I think we could easily help you out with that and shorten the time you need to get into building meaningful apps. Apart from that did you skim our paper on EasyBuild on Cray? You can checkout slides from @gppezzi presentation and other material from CSCS hackathons. |
docs are now available at http://easybuild.readthedocs.io/en/latest/Cray-support.html, so I'm closing this |
Cray*
(CrayGNU
& co) toolchains<year>.<month>-<variant>
versioning scheme?libsci
as an external modulegeneric easyblock for Cray toolchains easybuild-easyblocks#766added new Cray* toolchain versions with dependency pinning easybuild-easyconfigs#2222cray-mpich
swap
rather thanload
when needed (generic issue, not specific to Cray?)Cray*
toolchain modules, since it should "just work" for users toogeneric easyblock for Cray toolchains easybuild-easyblocks#766bothdependencies, not forPrgEnv
and dependenciesPrgEnv
implement support for generating 'swap' statements in module files #1609CrayToolchain
:Module swap for all deps of Cray TC components (REVIEW) easybuild-easyblocks#823module purge
should never be used on Crayhard breakpurge
on Cray, by using--enable-cray-compat
purge
by resetting environment to initial state (cfr.restore_env(init_env); sanitize_env()
stop running 'module purge', only restore environment #1608add external modules metadata for Cray systems #1638(requiressupport providing additional relative path for prefix in external module metadata #1637)shared
(ordynamic
) toolchain option by default for Cray toolchainschanged default for dynamic (true) #1581Remove FFTW from the Cray Toolchain Definition #1585HPL with no FFTW as dependency easybuild-easyblocks#822removed fftw from the new Cray* XC toolchains easybuild-easyconfigs#2442removed PrgEnv version, craype and fftw from the new Cray* XC toolchain (REVIEW) easybuild-easyconfigs#2554fftw
modulesupport providing additional relative path for prefix in external module metadata #1637CrayCCE/5.1.29
,CrayCCE/5.2.25
,CrayCCE/5.2.40
CrayGNU/5.1.29
,CrayGNU/5.2.25
,CrayGNU/5.2.40
CrayIntel/5.1.29
,CrayIntel/5.2.25
,CrayIntel/5.2.40
Delete deprecated Cray toolchains and easyconfig files (for stable cray support) easybuild-easyconfigs#2400new CrayGNU files for 2015.11-XC easybuild-easyconfigs#2434new CrayGNU files for 2015.06-XC easybuild-easyconfigs#2435Cray*
toolchainsfix independency of Cray toolchains w.r.t. toolchain build environment #1641-XC
suffix in toolchainsdrop -XC suffix for Cray toolchains easybuild-easyconfigs#2711--experimental
requirementmark use of Cray toolchains as stable (drop --experimental requirement) #1663optional:
.pc
(pkgconfig) files via Cray toolcc @pforai, @gppezzi, @bavier
not (for now):
ftn
? (ask @pforai)$FC
in framework (also define $FC and $FCFLAGS in build environment #1394)test systems
The text was updated successfully, but these errors were encountered: