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