"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 コンパイラがサポートするアーキテクチャである必要があります