インテル® コンパイラーの事前定義済みマクロの使用

このトピックでは、さまざまなインテル® コンパイラーに影響を与えるマクロについて説明します。

インテル® oneAPI ベース・ツールキット (ベースキット) とインテル® oneAPI HPC ツールキット (HPC きっと) の両方をインストールすると、3 つのコンパイラーがインストールされます。

各コンパイラーの事前定義済みマクロ

以下の事前定義済みマクロを使用して、特定のコンパイラーやコンパイラー・バージョンを起動できます。

コンパイラー ほかのコンパイラーと区別するための事前定義済みマクロ 説明

インテル® DPC++ コンパイラー

  • SYCL_LANGUAGE_VERSION
  • __INTEL_LLVM_COMPILER
  • __VERSION

SYCL_LANGUAGE_VERSION は SYCL* 仕様で定義されており、すべての SYCL* コンパイラーで定義されるべきものです。

__INTEL_LLVM_COMPILER を使用してコンパイラーを選択します。

インテル® C++ コンパイラー

  • __INTEL_LLVM_COMPILER
  • __VERSION

__INTEL_LLVM_COMPILER を使用してコンパイラーを選択します。

__VERSION を使用してコンパイラー・バージョンを選択します。

インテル® DPC++ コンパイラーの事前定義済みマクロ

以下の例は、#if defined(SYCL_LANGUAGE_VERSION) && defined (__INTEL_LLVM_COMPILER) を使用して、インテル® DPC++ コンパイラーに固有のコードブロックを定義します。

// dpcpp のみ
#if defined(SYCL_LANGUAGE_VERSION) && defined (__INTEL_LLVM_COMPILER)
   // DPC++ コンパイラーに固有のコード
   // ... ...

   // マクロの値を出力
   std::cout << "SYCL_LANGUAGE_VERSION: " << SYCL_LANGUAGE_VERSION << std::endl;
   std::cout << "__INTEL_LLVM_COMPILER: " << __INTEL_LLVM_COMPILER << std::endl;
   std::cout << "__VERSION__: " << __VERSION__ << std::endl;
#endif

インテル® oneAPI ツールキットのインテル® DPC++ コンパイラー 2021.1.2 で実行した場合の出力例:

Windows* Linux*
SYCL_LANGUAGE_VERSION: 202001

__INTEL_LLVM_COMPILER: 202110

__VERSION__: Intel® Clang Based C++, clang 12.0.0
SYCL_LANGUAGE_VERSION: 202001

__INTEL_LLVM_COMPILER: 202110

__VERSION__: Intel® Clang Based C++, gcc 4.2.1 mode

インテル® C++ コンパイラーの事前定義済みマクロ

以下の例は、#if defined(SYCL_LANGUAGE_VERSION) && defined (__INTEL_LLVM_COMPILER) を使用して、インテル® C++ コンパイラーに固有のコードブロックを定義します。

// icx のみ
#if !defined(SYCL_LANGUAGE_VERSION) && defined (__INTEL_LLVM_COMPILER)
   // インテル® C++ コンパイラーに固有のコード
   // ... ...

   // マクロの値を出力
   std::cout << "__INTEL_LLVM_COMPILER: " << __INTEL_LLVM_COMPILER << std::endl;
   std::cout << "__VERSION__: " << __VERSION__ << std::endl;
#endif

インテル® oneAPI ツールキットのインテル® C++ コンパイラー 2021.1.2 で実行した場合の出力例:

Windows* Linux*
__INTEL_LLVM_COMPILER: 202110

__VERSION__: Intel® Clang Based C++, clang 12.0.0
__INTEL_LLVM_COMPILER: 202110

__VERSION__: Intel® Clang Based C++, gcc 4.2.1 mode