Why not possible to do cross-development ?

Why not possible to do cross-development ?

I build OpenCL apps for different hardware (ATi, nVidia) on single AMD APU-based netbook. nVidia SDK had no problems to install and apps built work OK on hosts with nVidia GPU installed. There is no need to have actual hardware when one linking app with corresponding OpenCL library (nVidia or AMD in my case).

But with Intel's OpenCL SDk situation is very different. It just refused to install on my development machine at all complaining about not compatible hardware. But I don't want to run app there, I want to build app there cause it's my dev host, it has VS and other tools installed.

So, why Intel refused to allow cross-compilation ?


6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

The SDK doesnt come with emulation environment and has dependencies on the hardware, the graphics driver (if you want to run on GPU) etc. So you cannot install it on non-Intel platforms. For example, when targetting CPU devices, how will the compiler know what vector instructions to generate without knowing what the target CPU device the app will be running on? We can argue similarly in case of GPU device also.

I am curious - does Nvidia's SDK allow you to build your app even though you do not have their driver or graphics card installed?


Yes, sure, it allows to build apps w/o any issues. And it's the way I do NV builds, on AMD APU C-60 based host.
Because all you need to know at build time is where OpenCL headers and where OpenCL.lib are located.
Kernel compilation performed on hardware-capable host surely (app shipped with text-based CL file and caches its binary kernels on first run).
This allows good compatibility with wide range of hardware.
Besides of CL file there is nothing hardware dependent OpenCL SDK needs to kow and CL file compiled by OpenCL runtime at execution time.
Why just the same approach ignored by Intel ?

For example, I can build SSSE3-enabled binary on AMD host that doesn't support SSSE3 instruction set. That's cross-compilation for - to allow build app not on the same platform where it will run...

Actually you are right (I misspoke in my post above) there shouldn't be any dependencies as far as building the opencl application is concerned. It appears that the installer probably is built on incorrect assumptions and it should be possible to install some components on any platform for cross-compilation scenarious like yours. But currently we dont allow that.

I'll dig some more into it and get back to you on whether we have any such plans in future releases.


It's really very inconvenient to setup full development environment on another host just to be able to support Intel's OpenCL platform, I hope this will be solved in upcoming releases.

I have submitted a feature request and will keep you posted on the progress.


Leave a Comment

Please sign in to add a comment. Not a member? Join today