Nvhpc 22.1 not recognizing IceLake

Something off has happened when installing nvhpc 22,1. When I inquire about the version, the system is outputting:

$ pgcc --version

pgcc (aka nvc) 22.1-0 64-bit target on x86-64 Linux -tp haswell
PGI Compilers and Tools
Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

The issue is that the system is Ice Lake (Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz) and shouldn’t be picking up Haswell, which I’m guessing might harm performance. [NOTE: I double-checked with a Skylake system and the installation picked up skylake-avx512.]

Hi afernandez,

I’m not familiar with this processor and ark.intel.com doesn’t seem to have it listed. Can you please post the output from running the ‘nvcpuid’ utility?

The compiler determines what features the CPU supports but our target processor flag only list major architectural versions since the fundamental features generally don’t change with die shrinks or varying packaging. No idea why this is being listed as a Haswell, but it may just be lacking AVX512 support so is reverting to the older generation.


Hi Mat,
I didn’t check ark.intel.com (and have no explanation why it’s not listed there) but you can find some info about the processor at (PassMark - [Dual CPU] Intel Xeon Platinum 8375C @ 2.90GHz - Price performance comparison).
The output reads:

vendor id : GenuineIntel
model name : Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz
cpu family : 6
model : 106
stepping : 6
processors : 2
threads : 2
clflush size : 8
L2 cache size : 1280KB
L3 cache size : 55296KB
flags : aes apic avx erms avx2 avx512f avx512dq avx512fma avx512cd
flags : avx512bw avx512vl avx512vbmi pku ospke avx512vbmi2 gfni
flags : vaes vpclmulqdq avx512vnni avx512bitalg avx512vpopcntdq
flags : rdpid md_clear ibrs stibp l1d_flush ia32_arch_cap ssdb
flags : cflush cmov cx8 cx16 de f16c fma fpu fxsr ht lm mca mce mmx
flags : movbe msr mtrr nx osxsave pae pat pge popcnt pse pseg36
flags : selfsnoop sep sse sse2 sse3 ssse3 sse4.1 sse4.2 syscall tsc
flags : vme xsave
default target : -tp skylake

The processor definitely supports AVX512 but there also seems to be several flavors.

Unfortunately I don’t have an explanation as to why pgcc is listing the target as haswell. It uses the same code as nvcpuid which sees it as skylake.

We have been revamping the default configuration to look for the architecture features themselves rather than using the family to then set features. That is unless the user specifies the target via the “-tp” flag (which you can use as a work-around, i.e. set “-tp skylake”).

Let me ask one of the compiler engineers to review your post for ideas.

Our engineer asked that I add a problem report, TPR #31210, and he will investigate further.

Hi Mat,
I tried v20.9/v21.9 and both recognized the processor. For example,

$ pgcc --version

pgcc (aka nvc) 21.9-0 64-bit target on x86-64 Linux -tp skylake
PGI Compilers and Tools
Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

The issue seems to be happening only for v22.1. I’ll just proceed with v21.9 as I wouldn’t expect a large performance improvement between both versions.
Also, I’m assuming that the compiler picks up skylake instead of IceLake as the ISAs are almost identical except for some AI enhancements.

Yes, it’s probably something to do with the new way to set the default processor features. Tin will look into it.

Besides using 21.9, you can add “-tp skylake” to override the default target.