このトピックでは、さまざまなインテル® コンパイラーに影響を与えるマクロについて説明します。
インテル® oneAPI ベース・ツールキット (ベースキット) とインテル® oneAPI HPC ツールキット (HPC きっと) の両方をインストールすると、3 つのコンパイラーがインストールされます。
以下の事前定義済みマクロを使用して、特定のコンパイラーやコンパイラー・バージョンを起動できます。
コンパイラー | ほかのコンパイラーと区別するための事前定義済みマクロ | 説明 |
---|---|---|
インテル® DPC++ コンパイラー |
|
SYCL_LANGUAGE_VERSION は SYCL* 仕様で定義されており、すべての SYCL* コンパイラーで定義されるべきものです。 __INTEL_LLVM_COMPILER を使用してコンパイラーを選択します。 |
インテル® C++ コンパイラー |
|
__INTEL_LLVM_COMPILER を使用してコンパイラーを選択します。 __VERSION を使用してコンパイラー・バージョンを選択します。 |
以下の例は、#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 |
以下の例は、#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 |