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

Adding ADIOS install paths #5492

Merged

Conversation

jayeshkrishna
Copy link
Contributor

@jayeshkrishna jayeshkrishna commented Mar 2, 2023

Adding ADIOS install paths and library dependencies for the
different machines+compilers

Fixes #5486

[BFB]

@jayeshkrishna jayeshkrishna added Machine Files BFB PR leaves answers BFB SCORPIO The E3SM I/O library (derived from PIO) labels Mar 2, 2023
@jayeshkrishna jayeshkrishna requested a review from dqwu March 2, 2023 03:21
@jayeshkrishna jayeshkrishna self-assigned this Mar 2, 2023
@jayeshkrishna
Copy link
Contributor Author

To use ADIOS to write E3SM outputs the following changes are needed,

@rljacob rljacob requested review from ndkeen and grnydawn March 2, 2023 04:03
@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna
In this PR, ADIOS2 libs are added to cmake macros for Cori and Theta, but corresponding ADIOS install paths are not added for
Cori and Theta in config_machines.xml. Since Cori will retire soon and we will probably never need to run E3SM on Theta, we can create a future PR to fix this minor issue.

@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna
ADIOS install path is also missing for anvil. We can create a future PR to add it (together with Cori and Theta).

@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna
When testing ADIOS type on compy and bebop, there are some minor issues encountered, but they are unrelated to ADIOS type.

@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna
When testing on bebop, --machine=bebop must be explicitly specified, see issue #5485

@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna
On Summit, there are build errors for ADIOS type with "--compiler=ibmgpu"
This is because we actually do not have ibmgpu_summit.cmake (we do have ibmgpu_ascent.cmake) to add ADIOS library dependencies.

Shall we fix this issue in a future PR?

@jayeshkrishna
Copy link
Contributor Author

@jayeshkrishna On Summit, there are build errors for ADIOS type with "--compiler=ibmgpu" This is because we actually do not have ibmgpu_summit.cmake (we do have ibmgpu_ascent.cmake) to add ADIOS library dependencies.

Shall we fix this issue in a future PR?

Let us fix that in a future PR since its not related to ADIOS support (please create an issue for it, if needed)

@dqwu
Copy link
Contributor

dqwu commented Mar 2, 2023

@jayeshkrishna On Summit, there are build errors for ADIOS type with "--compiler=ibmgpu" This is because we actually do not have ibmgpu_summit.cmake (we do have ibmgpu_ascent.cmake) to add ADIOS library dependencies.
Shall we fix this issue in a future PR?

Let us fix that in a future PR since its not related to ADIOS support (please create an issue for it, if needed)

Actually ibmgpu_summit.cmake is not required for PnetCDF type so far. We can create an issue for ADIOS type after this PR is merged.

@jayeshkrishna
Copy link
Contributor Author

Not sure why ibmgpu_summit.cmake is not required for the PnetCDF type (and required for ADIOS), but let us use a separate issue to discuss it further (maybe a detailed issue description, for the new issue, would help).

@jayeshkrishna jayeshkrishna force-pushed the jayeshkrishna/machinefiles/add_adios_install_path branch from e06aca9 to 0f6abb5 Compare March 2, 2023 19:48
@jayeshkrishna jayeshkrishna requested review from grnydawn and ndkeen and removed request for ndkeen and grnydawn March 2, 2023 19:53
@jayeshkrishna
Copy link
Contributor Author

@dqwu in his testing found that ADIOS paths were missing for Anvil (but the ADIOS libs were listed as dependencies) and this caused build failures on Anvil. This issue has now been fixed and the branch was rebased.

Also, as part of the rebase process the ADIOS settings for Anvil/Cori/Theta were restored (these settings can be deleted later, if needed, along with the machine configs) & a fix for PR #5486 was also added

The fix for PR #5486 was to add the paths to the HDF5 library in the config machines and cmake macro files for gnu on bebop.

dqwu and others added 3 commits March 3, 2023 10:56
Adding ADIOS install paths for several machines.
Adding ADIOS library dependencies to CMake macro files
for compiler+machines where ADIOS builds are currently
available/tested
The build script for SCORPIO in CIME is being moved to a separate
script, buildlib.spio (from buildlib.pio). Adding the location
to the new script.
@dqwu dqwu force-pushed the jayeshkrishna/machinefiles/add_adios_install_path branch from 0f6abb5 to aa5b46e Compare March 3, 2023 17:22
@dqwu
Copy link
Contributor

dqwu commented Mar 3, 2023

@jayeshkrishna
FYI, I have rebased this branch again to upgrade installed ADIOS2 libs from 2.7.0 to 2.8.3 for anvil, bebop and compy. The old 2.7.0 libs were not configured to support latest BP5 format used by SCORPIO.

So far, ADIOS 2.7.0 is only used by anlworkstation (already retired), cori-haswell (to be retired), and theta (we will probably never need to run E3SM on it).

@dqwu
Copy link
Contributor

dqwu commented Mar 4, 2023

@jayeshkrishna
There are some known issues with IBM XL compiler on Summit, and users can use GNU or PGI compilers to test ADIOS type so far.

@jayeshkrishna
Copy link
Contributor Author

@ndkeen & @grnydawn please review this PR when you get a chance (Note: As discussed above you need couple of other PRs to start using ADIOS out of the box. You might just want to review that the changes in this PR does not break anything for you.).

Copy link
Contributor

@ndkeen ndkeen left a comment

Choose a reason for hiding this comment

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

If I'm reading this correctly, it looks like we are adding quite a few libs to the link line -- even if a case is not using ADIOS. Is that right?

@jayeshkrishna
Copy link
Contributor Author

Yeah, the ADIOS support is added during the SCORPIO build (yeah, and ADIOS adds a number of dep libs) and the user then has the choice to use ADIOS at runtime (PIO_TYPENAME in env_run.xml).

@ndkeen
Copy link
Contributor

ndkeen commented Mar 8, 2023

It doesn't look like it's adding much to the executable, but it does seem like it makes sense to only link with libraries that are actually needed. But, as you note, it's the norm to have XML settings that can toggle options such as this.

@ndkeen ndkeen self-requested a review March 8, 2023 03:19
@grnydawn
Copy link
Contributor

grnydawn commented Mar 8, 2023

@jayeshkrishna adios2 setting is missing for Crusher. Also we may need a future PR for Frontier support

In config_machines.xml, "ADIOS2_DIR" is missing for crusher machine
In several *_crusher.cmake files in cmake_macros folder, adios2 library setting is missing.

On Crusher( and on Frontier) adios2 is installed through Spack and can be loaded using module.

@jayeshkrishna
Copy link
Contributor Author

jayeshkrishna commented Mar 8, 2023

Yeah, this PR does not include support for ADIOS on all the machines. @dqwu is working on adding support for ADIOS on the remaining E3SM machines.
(PS: We cannot use ADIOS modules on machines because we need custom fixes that will only be available in the upcoming ADIOS releases)

jayeshkrishna added a commit that referenced this pull request Mar 9, 2023
… next (PR #5492)

Adding ADIOS install paths and library dependencies for the
different machines+compilers

Fixes #5486

[BFB]
@jayeshkrishna jayeshkrishna merged commit 6b10de2 into master Mar 11, 2023
@jayeshkrishna jayeshkrishna deleted the jayeshkrishna/machinefiles/add_adios_install_path branch March 11, 2023 03:54
@ndkeen
Copy link
Contributor

ndkeen commented Mar 13, 2023

The cori-knl tests failed with:

/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_c_mpi
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_c
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_core_mpi
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_core
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_evpath
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_ffs
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_dill
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_atl
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -ladios2_enet

@jayeshkrishna
Copy link
Contributor Author

@dqwu has fixed the permissions for the ADIOS install directories on Cori (that caused the missing adios* libs issue above)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BFB PR leaves answers BFB Machine Files SCORPIO The E3SM I/O library (derived from PIO)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

buildlib.pio failed with HDF5 linker errors on bebop using GNU compilier
4 participants