Writing Target Code that Should Not Be Built for CPU-Only Execution

This topic only applies to Intel® 64 and IA-32 architectures targeting Intel® Graphics Technology.

You can write code that should not be built when the target is a CPU-only executable.

By default, the compiler defines the macro __INTEL_OFFLOAD. You can write code within an #ifdef __INTEL_OFFLOAD section when the source code is customized for running on the target.

For example, you can use this macro to check that the code was built with the negative form of the [Q]offload compiler option.


The section for the host compiler works only when you compile with the negative form of the Qoffload compiler option.

        cout << "\nThis program is built with __INTEL_OFFLOAD.\n"
<< "The target(gfx) code will be executed on target if it is available\n";
        cout << "\nThis program is built without __INTEL_OFFLOAD\n";
<< "The target(gfx) code will be executed on CPU only.\n";


This code can only be used in the host code because code for Intel® Graphics Technology does not support this kind of I/O.

For more complete information about compiler optimizations, see our Optimization Notice.