Xeon Phi: icc c++11 compatibility? - version

I am considering getting a Xeon Phi card. My code is using many features from c++11 (with gcc 4.7 or clang 3.2) and I will run it natively on the Xeon Phi card.
What is the version of icc provided with the card, targeting Xeon Phi? I found icc c++11 compatibility list and it seems that I need version 14. Do I get it with the card?
Related question: is there gcc/clang targeting Xeon Phi in development? I could not google anything out.

Xeon Phi works with the latest shipping versions of the icc, which is version 13 at this time.
There is also a Xeon Phi targeted version of gcc which ships with the card.

Related

GNU GCC Intel i5 optimization settings?

I have a Microsoft Surface Pro (5th Generation) with the i5 processor and use the GNU GCC Compiler.
Now I want to use optimization settings for this compiler and I don't know what settings are "working" with my processor.
Overview of my system:
Microsoft Surface Pro
Intel Core i5-7300U CPU # 2,60 GHz
Microsoft Windows 10 Pro | 64-bit | Version 10.0.18363
IDE: Code::Blocks 20.03
Does anyone has an a similar system? Thanks in advance.
Kind Regards
randomcoder
You can always use the flag -march=native, which tells the compiler to detect the CPU of the computer that's being used to compile, and optimize the code for that type of CPU. This is ideal when you are compiling on the same machine you will be running the code on. Note that the resulting executable will not necessarily work on other computers with different CPUs.
Of course, you also have to use one of the -O options, typically -O2, to get optimizations at all. There are many other specific optimization options, but whether they are helpful will depend on what your program actually does.

OpenACC-OpenMP support Arm Mali GPU

I would like to ask if OpenACC or OpenMP support ARM Mali GPUs. I use OpenMP 4.0 which supports GPU parallelisation but I am not sure if it runs on the GPU. Do you have any idea how can I test it?
Neither are supported on Mali. Compute acceleration support is via OpenCL, or compute shaders in OpenGL ES / Vulkan.
Either/both specifications would work fine on Mali GPUs, but I'm not aware of any compilers that support offloading to Mali. GCC or CLANG would be your best bet, but I don't think either has a Mali target compiler.
The newly updated Arm C/C++ Compiler 21.1 with OpenMP 5.0 for Linux may support offloading to ARM MALI GPU targets.
OpenMP 5.0 features are supported by Arm C/C++ Compiler

ARMv8 backward compatibility with ARMv7 (Snapdragon 820 vs Cortex-A15)

I see that ARMv8 is merely an extension of ARMv7 architecture and all code compiled on ARMv7 should run on ARMv8. I am interested in the backward compatibility of ARMv8 to ARMv7. Will code that was compiled on ARMv8 run on ARMv7?
I have a particular exact case of interest: I would like to run the comma.ai's Openpilot visiond binary which was compiled for the OnePlus 3 smartphone (Qualcomm MSM8996 Snapdragon 820 CPU) on the Nvidia Jetson TK1 (NVIDIA Cortex-A15 CPU). Will the visiond run on Jetson?
EDIT: There may be more in question than CPU compatibility since visiond probably heavily uses GPU on that phone. Will probably depend whether they use some standard parallelization ways (OpenCL, NEON etc.) or have some custom code for Snapdragons GPU. Even with OpenCL the chance of compatibility is probably quite low on different HW.
I believe that aarch32 userland is fully or very highly backwards compatible with ARMv7, i.e. userland programs compiled for ARMv7 should just work in AArch32, but I couldn't find a precise quote in the ARM manual.
aarch32 does have new instructions added over ARMv7 however, most of them seem to be functionality that ARMv8 added and the designers decided to expose on aarch32. Therefore, aarch32 is not forward compatible with ARMv7, i.e., programs compiled for aarch32 might not run on ARMv7.
I'm not sure about system land. See also: Does ARMv8 AArch32 mode has backward compatible with armv4 , armv5 or armv6?

Availability of _rdrand_step intrinsics under Microsoft compilers?

According to Microsoft's x64 (amd64) Intrinsics List, Microsoft offers an intrinsic for RDRAND:
_rdrand16_step
_rdrand32_step
_rdrand64_step
However, the page does not discuss detecting the availability of the intrinsic. There is a footnote with [2], but it says its only available for Intel CPUs.
I have two questions. First, how can I detect the availability of the intrinsics. That is, what preprocessor macro should I use to guard the call to say _rdrand64_step.
Second, how can I access RDRAND under AMD CPUs? According to the AMD manual, AMD offers it too.
(More humorously, Microsoft titles the page amd64 Intrinsic List. Why do they call it AMD64 Intrinsic List when they don't include AMD???)
For AMD and the RDRAND instruction, reference AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions, page 278.
First, how can I detect the availability of the intrinsics. That is, what preprocessor macro should I use to guard the call to say _rdrand64_step.
Here are the compiler versions needed for RDRAND intrinsics:
Microsoft added RDRAND in August 2012, VS2012. Test for _MSC_VER >= 1700.
GCC added RDRAND in December 2010, GCC 4.6.
Clang added RDRAND in July 2012, Clang 3.2.
Intel added RDRAND in September 2011, ICC 12.1.
Second, how can I access RDRAND under AMD CPUs. According to the AMD manual, AMD offers it too.
AMD CPUs that provide the RDRAND instruction appear to be forth coming. That is, there are currently no CPUs shipping with the feature.
The Microsoft docs clearly state the intrinsics are for Intel CPUs only. To ensure AMD support given the anti-competitive history between Intel and AMD, the ASM should be crafted by hand and assembled with MASM/ML and MASM64/ML64.
you can check the version of MS compiler using:
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
Detailed
I am not sure how to use it with AMD architecture. Will let you know if I get some solution
You can get the answer why MS documentation calls it amd64 in this post.

ds-5 ultimate evaluation version supports 64bit neon ( arm_v8 neon)

I have installed the current "DS-5 Ultimate 64-bit evaluation " version but am not able to build for ARMv8 64-bit neon.
In armclang am not able to find the cpu list it shows only option "Target: aarch64-arm-none-eabi".
please help me to solve the below issues
Does this version support ARMv8 neon?
How to find available cpu list (as in armcc --cpu list) or equivalent armclang options.
aarch64 is ARMv8. And NEON is mandatory in ARMv8, so it's included.

Resources