PGI 15.5, is "-tp=haswell" supported?

Dear support

I face this error

/tmp/pgfortranugDx8wSgiWgh.s: Assembler messages:
/tmp/pgfortranugDx8wSgiWgh.s:614: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm0' /tmp/pgfortranugDx8wSgiWgh.s:623: Error: suffix or operands invalid for vpcmpgtd’
/tmp/pgfortranugDx8wSgiWgh.s:624: Error: suffix or operands invalid for vpcmpeqd' /tmp/pgfortranugDx8wSgiWgh.s:725: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm0’
/tmp/pgfortranugDx8wSgiWgh.s:734: Error: suffix or operands invalid for vpcmpeqd' /tmp/pgfortranugDx8wSgiWgh.s:737: Error: suffix or operands invalid for vpcmpgtd’
/tmp/pgfortranugDx8wSgiWgh.s:855: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm0' /tmp/pgfortranugDx8wSgiWgh.s:863: Error: suffix or operands invalid for vpmaxsd’
/tmp/pgfortranugDx8wSgiWgh.s:869: Error: no such instruction: `vextracti128 $1,%ymm0,%xmm1’

I added “-tp=haswell” to my F90FLAGS but nothing changed. Looking at the man page, it looks like “-tp=haswell” is actually missing!

I also checked by binutils version but I am not sure which version do I eventually need. 2.22? I have 2.20…

$ ld -v
GNU ld version 2.20.51.0.2-5.42.el6 20100205

$ uname -a
Linux stella3 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Apr 21 10:35:19 CDT 2015 x86_64 x86_64 x86_64 GNU/Linux

$ uname -a
Linux stella3 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Apr 21 10:35:19 CDT 2015 x86_64 x86_64 x86_64 GNU/Linux

$ pgf90 --version

pgf90 15.5-0 64-bit target on x86-64 Linux -tp haswell
The Portland Group - PGI Compilers and Tools
Copyright © 2015, NVIDIA CORPORATION. All rights reserved.

Some help is really appreciated. Thanks!

Filippo

Hi Fillipo,

The problem is that your assembler doesn’t support AVX. Please do update your binutils. I’m not sure when AVX was added, but on my haswell system I have binutils 2.24

Looking at the man page, it looks like “-tp=haswell” is actually missing!

Hmm. It looks like we missed updating the man page. I’ll get this corrected. Though, it’s in the “help” options which tends to be more current.

% pgfortran -tp -help
Reading rcfile /proj/pgi/linux86-64/15.5/bin/.pgfortranrc
-tp=px|k8|k8-64e|barcelona|shanghai|istanbul|bulldozer|piledriver|p7|core2|penryn|nehalem|sandybridge|haswell|x64
                    Select target processor; -tp=arch-32 == -tp=arch -m32; -tp=arch-64 == -tp=arch -m64
    px              Generic x86 Processor
    k8              AMD64 Processor
    k8-64e          AMD64 Processor rev E or later, 64-bit mode
    barcelona       AMD Barcelona processor
    shanghai        AMD Shanghai processor
    istanbul        AMD Istanbul processor
    bulldozer       AMD Bulldozer processor
    piledriver      AMD Piledriver processor
    p7              Intel P7 Architecture (Pentium 4, Xeon, Centrino)
    core2           Intel Core-2 Architecture
    penryn          Intel Penryn Architecture
    nehalem         Intel Nehalem processor
    sandybridge     Intel SandyBridge processor
    haswell         Intel Haswell processor
    x64             Unified AMD/Intel mode; -tp=k8,p7

Thanks,
Mat

Hello,

Your report resulted in the updating of cpu information in our documentation.

It is present in our just released 15.7 release.

thanks,
dave