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

[WIP] Add Intel Sapphire Rapids support to archdetect #889

Draft
wants to merge 5 commits into
base: 2023.06-software.eessi.io
Choose a base branch
from

Conversation

bedroge
Copy link
Collaborator

@bedroge bedroge commented Jan 24, 2025

Should not be merged before the stack is complete (I guess?).

Tested on AWS:

[bedroge@x86-64-intel-srapids-node3 software-layer]$ ./init/eessi_archdetect.sh cpupath
x86_64/intel/sapphire_rapids

[bedroge@x86-64-intel-srapids-node3 software-layer]$ ./init/eessi_archdetect.sh -a cpupath
x86_64/intel/sapphire_rapids:x86_64/intel/skylake_avx512:x86_64/intel/haswell:x86_64/generic

I've based the detection on two flags found at https://en.wikipedia.org/wiki/Sapphire_Rapids#CPU. Only using avx512-bf16 would not work though, as it was apparently also available in Cooper Lake (but not its successor), see https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html. Also used amx_tile, which should only be available in Sapphire Rapids and later. Perhaps we could even stick to only that one?

@bedroge bedroge added enhancement New feature or request sapphire_rapids labels Jan 24, 2025
Copy link

eessi-bot bot commented Jan 24, 2025

Instance eessi-bot-mc-aws is configured to build for:

  • architectures: x86_64/generic, x86_64/intel/haswell, x86_64/intel/sapphire_rapids, x86_64/intel/skylake_avx512, x86_64/amd/zen2, x86_64/amd/zen3, aarch64/generic, aarch64/neoverse_n1, aarch64/neoverse_v1
  • repositories: eessi.io-2023.06-software, eessi.io-2023.06-compat

Copy link

eessi-bot bot commented Jan 24, 2025

Instance eessi-bot-mc-azure is configured to build for:

  • architectures: x86_64/amd/zen4
  • repositories: eessi.io-2023.06-software, eessi.io-2023.06-compat

@bedroge bedroge marked this pull request as draft January 24, 2025 13:14
@boegel boegel added the 2023.06-software.eessi.io 2023.06 version of software.eessi.io label Jan 24, 2025
@boegel
Copy link
Contributor

boegel commented Jan 24, 2025

I've based the detection on two flags found at https://en.wikipedia.org/wiki/Sapphire_Rapids#CPU. Only using avx512-bf16 would not work though, as it was apparently also available in Cooper Lake (but not its successor), see https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html. Also used amx_tile, which should only be available in Sapphire Rapids and later. Perhaps we could even stick to only that one?

I don't see the downside in checking for both, so makes sense as is for me

boegel
boegel previously approved these changes Jan 24, 2025
"x86_64/amd/zen4" "AuthenticAMD" "avx2 fma vaes avx512f avx512ifma" # AMD Genoa, Genoa-X
"x86_64/intel/haswell" "GenuineIntel" "avx2 fma" # Intel Haswell, Broadwell
"x86_64/intel/skylake_avx512" "GenuineIntel" "avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl" # Intel Skylake, Cascade Lake
"x86_64/intel/sapphire_rapids" "GenuineIntel" "avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl avx512_bf16 amx_tile" # Intel Sapphire/Emerald Rapids
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Do we want to change this to sapphirerapids to be consistent with archspec's naming? It would require a symlink (or complete rebuild...) for the already built packages.

Suggested change
"x86_64/intel/sapphire_rapids" "GenuineIntel" "avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl avx512_bf16 amx_tile" # Intel Sapphire/Emerald Rapids
"x86_64/intel/sapphirerapids" "GenuineIntel" "avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl avx512_bf16 amx_tile" # Intel Sapphire/Emerald Rapids

Copy link
Contributor

Choose a reason for hiding this comment

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

Ugh... No strong preference, I guess.

A rebuild just to remove a _ is a bit extreme, of course.

A symlink is easy, but less clean.

I'm not sure we should 100% stick to the archspec naming, although that does sort of make sense I guess.

In short: ask others for input here ;)

Copy link
Member

Choose a reason for hiding this comment

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

I think some of our CI will break if the names don't align...but we also need #485 to make sure archspec is up to date for architectures

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2023.06-software.eessi.io 2023.06 version of software.eessi.io enhancement New feature or request sapphire_rapids
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants