"CMAKE_HIP_ARCHITECTURES" を使用しない場合


この解説では、CMake の "Variables" に関連する "CMAKE_HIP_ARCHITECTURES" について、プログラミング初心者でも分かりやすく解説します。

"CMAKE_HIP_ARCHITECTURES" とは?

"CMAKE_HIP_ARCHITECTURES" は、CMake の "Variables" 機能の一つであり、HIP コンパイラが使用するアーキテクチャを指定するために使用されます。具体的には、以下の役割を果たします。

  • 複数のアーキテクチャを指定することで、マルチプラットフォーム対応のアプリケーションを開発することができます
  • HIP コンパイラがどのアーキテクチャ向けにコードを生成するかを決定します

"CMAKE_HIP_ARCHITECTURES" の設定方法

"CMAKE_HIP_ARCHITECTURES" は、CMake の CMakeLists.txt ファイル内で設定することができます。以下の例をご覧ください。

set(CMAKE_HIP_ARCHITECTURES "gfx800;gfx900")

この例では、"gfx800" と "gfx900" の 2 つのアーキテクチャを指定しています。

"CMAKE_HIP_ARCHITECTURES" の設定例

以下は、"CMAKE_HIP_ARCHITECTURES" を使用する一般的な設定例です。

  • 単一のアーキテクチャを指定する場合
set(CMAKE_HIP_ARCHITECTURES "gfx800")
  • 複数のアーキテクチャを指定する場合
set(CMAKE_HIP_ARCHITECTURES "gfx800;gfx900")
  • 環境変数を使用する場合
set(CMAKE_HIP_ARCHITECTURES $ENV{HIP_ARCHITECTURES})

注意点

  • 複数のアーキテクチャを指定する場合、それぞれのアーキテクチャ向けに個別にコードを生成する必要があります。
  • "CMAKE_HIP_ARCHITECTURES" で指定できるアーキテクチャは、HIP コンパイラがサポートするアーキテクチャに限定されます。

"CMAKE_HIP_ARCHITECTURES" は、HIP コンパイラが使用するアーキテクチャを指定するために使用される CMake の "Variables" 機能です。この機能を使用することで、マルチプラットフォーム対応の HIP アプリケーションを開発することができます。



cmake_minimum_required(VERSION 3.10)

project(hip_example)

set(CMAKE_HIP_ARCHITECTURES "gfx800")

add_executable(hip_example hip_example.cpp)
cmake_minimum_required(VERSION 3.10)

project(hip_example)

set(CMAKE_HIP_ARCHITECTURES "gfx800;gfx900")

add_executable(hip_example hip_example.cpp)
cmake_minimum_required(VERSION 3.10)

project(hip_example)

set(CMAKE_HIP_ARCHITECTURES $ENV{HIP_ARCHITECTURES})

add_executable(hip_example hip_example.cpp)
  • add_executable() コマンドは、実行可能ファイルを作成します。
  • set() コマンドは、CMake 変数を設定します。
  • project() コマンドは、プロジェクトの名前を指定します。
  • cmake_minimum_required() コマンドは、CMake の最小バージョンを指定します。
  • HIP コンパイラと CMake の詳細については、それぞれのドキュメントを参照してください。


"CMAKE_HIP_ARCHITECTURES" を使用しない場合

"CMAKE_HIP_ARCHITECTURES" を使用しない場合は、以下の方法で HIP コンパイラが使用するアーキテクチャを指定することができます。

  • HIP コンパイラの -arch オプションを使用する
hipcc -arch gfx800 hip_example.cpp -o hip_example
  • HIP コンパイラの環境変数 HIP_PLATFORM を使用する
set HIP_PLATFORM gfx800
hipcc hip_example.cpp -o hip_example
  • CMake の target_compile_features() プロパティを使用する
target_compile_features(hip_example PRIVATE hip_arch_gfx800)

"CMAKE_HIP_ARCHITECTURES" を使用しない方が良い場合

以下の場合、"CMAKE_HIP_ARCHITECTURES" を使用しない方が良い場合があります。

  • シンプルなプロジェクトの場合

シンプルなプロジェクトの場合、"CMAKE_HIP_ARCHITECTURES" を使用するよりも、上記の方法で HIP コンパイラが使用するアーキテクチャを指定した方が簡単です。

  • ビルドシステムが複雑な場合

複雑なビルドシステムを使用している場合、"CMAKE_HIP_ARCHITECTURES" を使用すると、ビルドシステムが複雑になる可能性があります。

  • クロスコンパイルする場合

クロスコンパイルする場合、"CMAKE_HIP_ARCHITECTURES" を使用すると、クロスコンパイルツールチェーンが正しく設定されていない可能性があります。

"CMAKE_HIP_ARCHITECTURES" を使用する際の注意点

"CMAKE_HIP_ARCHITECTURES" を使用する際には、以下の点に注意する必要があります。

  • 複数のアーキテクチャを指定する場合、それぞれのアーキテクチャ向けに個別にコードを生成する必要があります
  • 指定するアーキテクチャは、HIP コンパイラがサポートするアーキテクチャである必要があります