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

CPU の関数を呼び出してコプロセッサーの実行環境を変更する

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

一部の CPU API には同等のオフロード API があります。オフロードバージョンでは、ターゲットの型とターゲット番号の 2 つの引数を指定します。引数の定義を次に示します。

target_type

target_type はスタティックです。次の事前に定義されたデフォルトの 1 つを使用することを推奨します。

DEFAULT_TARGET_TYPE

target_number

ターゲットの特定のコプロセッサー。

値が次のように解釈される式。

>=0

次の式に応じて、文を特定のターゲット上で実行します。

target = target-number % number_of_targets

例えば、4 つのターゲットを搭載したシステムの場合:

  • 2 または 6 を指定すると、ランタイムシステムはターゲット 2 でコードを実行します (2 % 4 と 6 % 4 はどちらも 2 になるため)。

  • 1000 を指定すると、ランタイムシステムはターゲット 0 でコードを実行します (1000 % 4 = 0 になるため)。

-1 または値なし

文をランタイムシステムによって選択されたターゲット上で実行します。

<-1

予約済み。

次の offload.h ヘッダーファイルは、コプロセッサーの環境に影響する、CPU から可能な関数呼び出しをすべて定義します。

このトピックでは、例として CPU API omp_set_num_threads およびそのオフロードバージョンを使用します。 CPU API に関する詳細は、下記の関連情報を参照してください。

CPU API
void omp_set_num_threads (int num_threads);
オフロード API
void omp_set_num_threads_target (TARGET_TYPE target_type, int target_number, int num_threads);
#include "offload.h"
#include "omp.h"
#include <stdio.h>

int main()
{
        int value, result;

        value = 66;
        omp_set_num_threads_target(TARGET_MIC, 0, value);
        #pragma offload target(mic) out(result)
        #pragma omp parallel
        #pragma omp master
        result = omp_get_num_threads();

        printf("Number of threads on target %d\n", result);
        if (result != value) {
          printf("failed1 result=%d, value=%d\n", result, value);
          return 1;
        }
        return 0;
}

関連情報