Software Archive
Read-only legacy content
17061 Discussions

Intrinsic for float / half float conversion is undefined.

Coxious_H_1
Beginner
549 Views

Hi,

    I want to convert float data to half float data on Xeon Phi card using _mm512_cvt_roundps_ph and _mm512_cvt_roundph_ps. However, when I compile the code, it shows that:

undefined reference to `_mm512_cvt_roundps_ph(__m512, int)'

undefined reference to `_mm512_cvt_roundph_ps(__m256i, int)'

    I found instrinct above here: https://software.intel.com/en-us/node/523819

    I've already included immintrin.h, and other instrincts like _mm512_load_ps works fine. I found _mm512_cvt_roundps_ph and _mm512_cvt_roundph_ps defined in zmmintrin.h, but must define the micro __INTEL_COMPILER_USE_INTRINSIC_PROTOTYPES to enable it. Then I tried to define __INTEL_COMPILER_USE_INTRINSIC_PROTOTYPES myself and it didn't work.

    I'm using icpc (ICC) 16.0.2 20160204.

    Can anyone tell me whats going on?

Thanks.

 

0 Kudos
1 Solution
TimP
Honored Contributor III
549 Views

Are you trying to use AVX512 with KNC coprocessor?  That won't work.  If you're building to run on AVX512 emulator, you will need to set an appropriate target.

View solution in original post

0 Kudos
4 Replies
TimP
Honored Contributor III
550 Views

Are you trying to use AVX512 with KNC coprocessor?  That won't work.  If you're building to run on AVX512 emulator, you will need to set an appropriate target.

0 Kudos
Coxious_H_1
Beginner
549 Views

Tim P. wrote:

Are you trying to use AVX512 with KNC coprocessor?  That won't work.  If you're building to run on AVX512 emulator, you will need to set an appropriate target.

Thanks for your reply. Yes I was trying to do that. Looks like I've muddled up AVX512 and MIC-AVX512. Is there more detailed articles telling the difference between them? I've Googled it but didn't get a good answer.

0 Kudos
jimdempseyatthecove
Honored Contributor III
549 Views

 Look at the Intel Intrinsics Guide

It has check boxes to filter on technology (including AVX-512 and KNC).

While this may not provide a comprehensive description of why you would want to use one intrinsic verses another, it will show you what is available and what it does.

Note, when using this guide, checking a specific technology filters in the added capability. IOW if you want everything up to AVX2 you will need to check the boxes up to AVX2.

KNC is a little tricky in that legacy instructions that are supported are not listed. I think Intel could improve the Intrinsics Guide by having two check boxes in the Technologies section. One for added instructions, and one for all supported on the system with the selected technology.

Jim Dempsey

0 Kudos
Coxious_H_1
Beginner
549 Views

jimdempseyatthecove wrote:

 Look at the Intel Intrinsics Guide

It has check boxes to filter on technology (including AVX-512 and KNC).

While this may not provide a comprehensive description of why you would want to use one intrinsic verses another, it will show you what is available and what it does.

Note, when using this guide, checking a specific technology filters in the added capability. IOW if you want everything up to AVX2 you will need to check the boxes up to AVX2.

KNC is a little tricky in that legacy instructions that are supported are not listed. I think Intel could improve the Intrinsics Guide by having two check boxes in the Technologies section. One for added instructions, and one for all supported on the system with the selected technology.

Jim Dempsey

Thanks for your reply.  I've used this page and didn't notice that there is a KNC down there. I just looked at AVX-512 and made this mistake. I noticed there are supported instructions but not listed too. So I went to the page I mentioned above and found these two intrinsics. I hope Intel could improve this, too.

0 Kudos
Reply