インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

CPU のみの実行の場合にビルドされないコードの記述

このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。

ターゲットが CPU のみの実行の場合にビルドされないコードを記述できます。

デフォルトでは、コンパイラーはマクロ __INTEL_OFFLOAD を定義します。ソースコードをヘテロジニアスにコプロセッサーで実行するようにカスタマイズしている場合、#ifdef __INTEL_OFFLOAD セクション内にコードを記述できます。

例えば、このマクロを使用してオフロードビルドでのみ実行されるようにホストのコードを保護できます (offload.homp_set_num_threads_target ファミリーの API の呼び出しなど)。

ホスト・コンパイラーのセクションは、[Q]offloadoptional コンパイラー・オプションを指定してコンパイルした場合のみ動作します。

#include <stdio.h>
__declspec(target(mic)) void print()
{
#ifdef __INTEL_OFFLOAD
#ifdef __MIC__
    printf("Using offload compiler :  Hello from the coprocessor\n");
    fflush(0);
#elif  __TARGET_ARCH_MIC
    printf("Using offload compiler :  Hello from the coprocessor\n");
    fflush(0);
#else /* !__MIC__  and !__TARGET_ARCH_MIC */
    printf("Using offload compiler :  Hello from the CPU\n");
#endif  /* __MIC__ */
#else /* !__INTEL_OFFLOAD */ 
    printf("Using host compiler :  Hello from the CPU\n");
#endif /* __INTEL_OFFLOAD */

}
int main()
{
#pragma offload target(mic)
    print();
}

関連情報