このステップでは、ターゲットの数を特定するコードのセクションを確認します。
[ソリューション エクスプローラー] で tbo_sort.c をダブルクリックします。
次のソースコードを探します。
#ifdef __INTEL_OFFLOAD
print "(2X,A,/)", &
"Checking for Intel® Xeon Phi™ (Target CPU) devices..."
num_devices = OFFLOAD_NUMBER_OF_DEVICES()
print "(4X,A,I6,/)","Number of Target devices installed: ",num_devices
#endif
このコードブロックの #ifdef 宣言子には、事前定義済みマクロ __INTEL_OFFLOAD が含まれています。 デフォルトでは、ソースコードにオフロード言語拡張が含まれている場合、コンパイラーはこのマクロを定義して、そのコードブロックをホストでコンパイルして実行します。そうでない場合、コンパイラーはマクロを定義せず、そのコードブロックをコンパイルしません。no-offload コンパイラー・オプションを指定してコードをコンパイルすると、オフロード言語拡張が除外され、このマクロが定義されず、ホストでのみ実行するアプリケーションが生成されます。 ターゲットにオフロードする前にコードの動作を確認する場合、このオプションを使用します。
後で、no-offload コンパイラー・オプションを指定して同じソースコードをコンパイルするときに、このコードブロックとその他のオフロード言語拡張を除外します。
コードブロック内には、ターゲットの数を特定するコードも含まれています。_OFFLOAD_NUMBER_OF_DEVICES 関数は、取り付けられているターゲットの数と利用可能なターゲットの数を返します。 システムに取り付けられているターゲットあるいは利用可能なターゲットがない場合、この関数は -1 を返します。
次のステップでは、ホストとターゲットの両方で実行するように定義されているコードのセクションを確認します。