[LLVMdev] JIT on Intel KNC

"C. Bergström" cbergstrom at pathscale.com
Mon Dec 2 15:54:43 PST 2013


On 12/ 3/13 06:38 AM, Dmitry Mikushin wrote:
> Hi,
>
> We have the same difficulties.
>
> KNC (dubbed k1om in compiler utils) is a 64-bit device with 
> 8087-compatible scalar arithmetics and non-standard vector 
> arithmetics. More specifically, the widely used variant of 64-bit ABI 
> implemented by LLVM involves xmm registers, while KNC does not have 
> xmm-s and instead has zmm-s (512-bit wide). This makes standard 64-bit 
> binaries you're trying to compile partially incompatible with KNC. So, 
> even if you'd succeed to compile them somehow, they may fail to run 
> (illegal instruction).
>
> There are two possible solutions I know of.
>
> First one - use KNC in 32-bit mode. KNC can run any 32-bit binary, if 
> 32-bit C runtime is provided and device Linux kernel is compiled with 
> CONFIG_IA32_EMULATION=y. This will not allow to use KNC's vector 
> units, so it will be worth only for massive multi-threading. You do 
> not loose much, because even if k1om-ready LLVM backend would exist, I 
> doubt it could optimize for vector arithmetics well enough without 
> man-year of testing/tuning the exiting vectorizer.
>
> Second one - ask Intel to increase the priority of KNC support in 
> LLVM. As far as I know, they do not plan official KNC support at all, 
> only KNL (Landing, the next one). According to SC13, KNL will appear 
> in 2015...
PathScale has KNC llvm backend and also a non-intel runtime for managing 
the device.

We're missing some SLP vector tuning and a few other performance things, 
but that should improve in the next couple months. We're open to sharing 
our work with researchers, but please contact me off list.




More information about the llvm-dev mailing list