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

Add intel CI image to build and test workflow #1826

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

fsimonis
Copy link
Member

Main changes of this PR

This PR adds the new precice/ci-intel:latest image to the build-and-test workflow.
It is based on the Intel oneAPI HPC Toolkit and uses Intel C,C++,Fortran compilers as well as Intel MPI.
The image also contains a compatible PETSc version.

Motivation and additional information

We finally need to test Intel stuff and the oneAPI makes this possible.

The GitHub runners only off 14GB of storage. So this may fail until we get custom runners.

Author's checklist

  • I used the pre-commit hook to prevent dirty commits and used pre-commit run --all to format old commits.
  • I added a changelog file with make changelog if there are user-observable changes since the last release.
  • I added a test to cover the proposed changes in our test suite.
  • For breaking changes: I documented the changes in the appropriate porting guide.
  • I sticked to C++17 features.
  • I sticked to CMake version 3.16.3.
  • I squashed / am about to squash all commits that should be seen as one.

Reviewers' checklist

  • Does the changelog entry make sense? Is it formatted correctly?
  • Do you understand the code changes?

@fsimonis
Copy link
Member Author

fsimonis commented Oct 2, 2023

The image is too large for the GitHub runners.

This also means that we can not use GitHub runners to shave off some unnecessary features.

A solution would be to build it from scratch:
https://github.com/intel/oneapi-containers/blob/master/images/docker/hpckit/Dockerfile.ubuntu-22.04

However, the GPG key used by Intel has expired. So we have to wait: oneapi-src/oneapi-ci#77

@fsimonis
Copy link
Member Author

fsimonis commented Oct 6, 2023

I managed to reduce the size of intel image to 8.4 GB.
This should be fine for the GitHub runners.

@fsimonis
Copy link
Member Author

fsimonis commented Oct 25, 2023

The release build needs to use ffp-model=precise or -fhonor-infinities -fhonor-nans to work. Read more

Sadly compiler detection support for the new LLVM-based Intel compilers comes with CMake 3.20. So, there is currently no good way of automatically adding these flags.

There seems to be some problem with the following MPIPorts tests:

CommunicationTests/MPIPorts/Inter/SendReceiveFourProcesses
CommunicationTests/MPIPorts/Server/SendReceiveFour
CommunicationTests/MPIPorts/Server/SendReceiveFourV2

They sometimes fail with such an error:

Abort(2176143) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Comm_accept: Other MPI error, error stack:
PMPI_Comm_accept(121)..........: MPI_Comm_accept(port="tag#0$connentry#02009F11AC1100020000000000000000$", MPI_INFO_NULL, root=0, MPI_COMM_SELF, newcomm=0x7ffd45ee2378) failed
MPID_Comm_accept(251)..........:
MPIDI_OFI_mpi_comm_accept(955).:
dynproc_exchange_map(531)......:
MPIDI_OFI_handle_cq_error(1105): OFI poll failed (ofi_events.c:1105:MPIDI_OFI_handle_cq_error:Truncation error)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant