このステップでは、エディターでソースコードを開き、コードがどのようにシステムに動作中のコプロセッサーがあるかどうか判断し、動作中のコプロセッサーの数を特定しているか確認します。
ソースコードをエディターで開きます。
次のソースコードを探します。
#ifdef __INTEL_OFFLOAD
print "(2X,A,/)", &
"Checking for Intel(R) MIC Architecture (Target CPU) devices..."
num_devices = OFFLOAD_NUMBER_OF_DEVICES()
print "(4X,A,I6,/)","Number of Target devices installed: ",num_devices
#endif
このコードブロックの宣言子には、事前定義済みマクロ __INTEL_OFFLOAD が含まれています。 このマクロはコンパイラーによって定義され、CPU とコプロセッサーでコードブロックを実行します。デフォルトでは、コンパイラーは、この宣言子内のコードブロックをコンパイルします。no-offload コンパイラー・オプションを使用してコードをコンパイルすると、この宣言子が除外され、CPU でのみ実行するアプリケーションが生成されます。 コードをコプロセッサーにオフロードする前にコードの動作を確認する場合、この宣言子を除外すると便利です。
このチュートリアルの後で、no-offload コンパイラー・オプションを使用して同じソースコードをコンパイルするときに、この宣言子を除外します。
宣言子内には、システムに動作中のコプロセッサーがあるかどうか判断して動作中のコプロセッサーの数を特定するコードが含まれています。_OFFLOAD_NUMBER_OF_DEVICES 関数は、システムで動作中のコプロセッサーの数を返します。 システムに動作中のコプロセッサーがない場合、関数は -1 を返します。 システムに複数のコプロセッサーが含まれている場合、戻り値を使用して特定のコプロセッサーで実行するコードセクションを指定することもできます。
次のステップでは、ホスト CPU とコプロセッサーの両方で実行するように定義されているソースコードのセクションを確認します。