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

Skylake platform, gcc with CMSSW flags, performance improvements & bug fixes #134

Merged
merged 9 commits into from
Mar 16, 2018

Conversation

dan131riley
Copy link
Collaborator

This PR

  • Does most of the work of adding Skylake ("SKL") as a supported platform, though currently not enabled by default, and using some hacks for paths on the Cornell system
  • Modifies several hit mapping routines to use std::vector<int> instead of std::unordered_map<int,int>. This change assumes the MC hit IDs are (relatively) dense so a vector representation won't require enormous allocations. Improves multiple events in flight scaling on KNL by 50%
  • Fixes a FV SelectHitIndices bug and drops fake hit types -3 and -4 from the FV hits-on-track. This improves FV build performance in the transition region to approximately match CE and standard, but doesn't resolve the differences in fit performance.
  • Fixes DEBUG compilation errors
  • Improves compatibility with gcc with CMSSW options. Changes "pragma simd" to "pragma omp simd", and fixes a variety of picky warning that CMSSW turns into errors

Standard benchmarks here:

https://www.classe.cornell.edu/%7Edsr/mic-track/pr134/

Skylake with icc here:

https://www.classe.cornell.edu/%7Edsr/mic-track/pr134-skylake-icc/

No significant validation differences were observed between SNB and SKL.

@srlantz
Copy link
Collaborator

srlantz commented Mar 8, 2018

@dan131riley Warning, long digression... The terminology around Skylake is super confusing. SKL can also refer to the Skylake workstation or "Skylake client" chips that do not have AVX-512. We are interested in the"Skylake server" chips that do have AVX-512. These are sometimes (not universally) designated SKX. Species of these newer chips, from 2017, are variously known as "Skylake Xeon", "Skylake-SP", "Intel Xeon processor Scalable family", and probably several other arbitrary marketing names.

Then what's the right abbreviation? I'm guessing the SKX designation came to us via Intel's SDE emulator tool, see https://software.intel.com/sites/default/files/managed/bf/99/outpt.txt . This output tells us that SKX is (or was) a name Intel used internally. I also found an Intel slide deck that refers to an "SKX core" in Skylake-SP: https://www.primeline-solutions.de/files/intel-xeon-scalable-architecture-deep-dive_1.pdf .

WikiChips, on the other hand, just calls all Skylakes SKL, and then they go on to designate 9 subtypes based on the core variants (5 client, 4 server). So in the WikiChips nomenclature, our focus has been on SKL-SP; that's one of the 4 server types with AVX-512. The WikiChips convention appears to be used by AnandTech and Dell too (via a quick Google scan).

Where does that leave us? Nowhere, maybe. SKL seems too broad. SKX is nice and short but isn't very widely used. SKL-SP may be a bit too specific, though it has more currency. Note that GCC's current shorthand for such chips is -march=skylake-avx512; that may be clearest of all, but it's long. There really doesn't seem to be a good abbreviation pertaining only to Skylakes that have AVX-512.

@IHateLinus
Copy link
Collaborator

IHateLinus commented May 7, 2018 via email

@srlantz
Copy link
Collaborator

srlantz commented May 7, 2018 via email

@IHateLinus
Copy link
Collaborator

IHateLinus commented May 8, 2018 via email

@srlantz
Copy link
Collaborator

srlantz commented May 8, 2018 via email

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.

4 participants