|
1 | | -\chapter{Titolo}\label{AppendiceA} |
2 | | - \blindduck[maths] |
| 1 | +\chapter{ROCm 安裝指南}\label{AppendiceA} |
| 2 | + |
| 3 | +在這個章節中,我們將介紹 ROCm 的安裝過程。安裝 ROCm 通常是使用 AMD GPU 的第一個步驟。因此,在開始開發或執行 GPU 程式之前,熟悉 ROCm 環境的安裝過程會有所幫助。 |
| 4 | + |
| 5 | +本章將介紹在 Ubuntu 20.04 LTS 作業系統上安裝 ROCm v5.4 的步驟。由於 ROCm 仍在積極開發,我們只會介紹所需的基本操作指令,並說明執行這些指令後的結果。隨著新版本的 ROCm 持續發布,本章部分內容可能會過時。因此,建議讀者在開始安裝之前,參考最新的安裝文件。ROCm 的安裝文件可在 \url{https://docs.amd.com} 取得。 |
| 6 | + |
| 7 | +\section{先備條件} |
| 8 | + |
| 9 | +我們將示範如何在 Ubuntu 20.04 LTS 作業系統上安裝 ROCm。ROCm 可以支援多種不同的 Linux 作業系統發行版。目前 ROCm 並不支援 Microsoft Windows 作業系統,但 Windows 的支援可能會在近期推出。 |
| 10 | + |
| 11 | +ROCm 支援的作業系統如表格 \ref{table:rocm_supported_distros_and_kernel_versions} 所示。整體而言,ROCm 支援 Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES) 和 Ubuntu 發行版。對於每個發行版,都有要求一個最低的核心版本(如 5.14, 4.18)。此外,系統上需要安裝一些額外的軟體套件,例如 \lstinline|wget|、\lstinline|gnupg2|、\lstinline|gawk| 和 \lstinline|curl|,因為這些是 ROCm 安裝腳本所需的必要工具。 |
| 12 | + |
| 13 | + |
| 14 | +\begin{table}[h!] |
| 15 | +\centering |
| 16 | +\caption{目前支援的 Linux 發行版與核心版本} |
| 17 | +\label{table:rocm_supported_distros_and_kernel_versions} |
| 18 | +\begin{tabular}{ll} |
| 19 | +\hline |
| 20 | +\textbf{作業系統} & \textbf{核心版本} \\ \hline |
| 21 | +RHEL 9.1 & 5.14 \\ |
| 22 | +RHEL 8.7 & 4.18 \\ |
| 23 | +RHEL 8.6 & 4.18 \\ |
| 24 | +SLES15 SP4 & 5.14.21 \\ |
| 25 | +Ubuntu 20.04.5 LTS & 5.15 \\ |
| 26 | +Ubuntu 22.04.1 LTS & 5.15, OEM 5.17 \\ \hline |
| 27 | +\end{tabular} |
| 28 | +\end{table} |
| 29 | + |
| 30 | + |
| 31 | +需要執行 GPU 程式的系統使用者必須加入適當的使用者群組。可以使用 groups 指令來檢查目前使用者所屬的群組。若要使用 GPU,使用者需加入 \lstinline|render| 或 \lstinline|video|(推薦)群組之一。可以使用指令 \lstinline|sudo usermod -a -G [group_name] [user_name]| 來將使用者加入特定的群組。 |
| 32 | + |
| 33 | +在購買 GPU 硬體之前,應確認預計要購買的 GPU 是否被 ROCm 平台所之援(請參閱表格 \ref{table:rocm_supported_gpus})。 |
| 34 | + |
| 35 | +\begin{table}[h!] |
| 36 | +\centering |
| 37 | +\caption{ROCm 支援的 GPU 型號} |
| 38 | +\label{table:rocm_supported_gpus} |
| 39 | +\begin{tabular}{lll} |
| 40 | +\hline |
| 41 | +\textbf{GPU 系列} & \textbf{GPU} & \textbf{GFX ID} \\ \hline |
| 42 | +\multirow{4}{*}{GCN} & AMD Radeon Instinct\texttrademark\ MI50 & \multirow{4}{*}{GFX906} \\ |
| 43 | + & AMD Radeon Instinct\texttrademark\ MI60 & \\ |
| 44 | + & AMD Radeon\texttrademark\ VII & \\ |
| 45 | + & AMD Radeon\texttrademark\ Pro VII & \\ |
| 46 | +\multirow{2}{*}{RDNA} & AMD Radeon\texttrademark\ Pro W6800 & \multirow{2}{*}{GFX1030} \\ |
| 47 | + & AMD Radeon\texttrademark\ Pro V620 & \\ |
| 48 | +\multirow{2}{*}{CDNA} & AMD Instinct\texttrademark\ MI100 & GFX908 \\ |
| 49 | + & AMD Instinct\texttrademark\ MI200 & GFX90a \\ \hline |
| 50 | +\end{tabular} |
| 51 | +\end{table} |
| 52 | + |
| 53 | +\section{理解 ROCm 套件} |
| 54 | + |
| 55 | +ROCm 是一個包含許多軟體套件的複雜生態系統。完整的套件列表可以參見圖 \ref{fig:rocm_packages}。這些套件可能有複雜的依賴性關係。為了避免使用者需要逐一安裝套件,ROCm 將這些套件分組為元套件(完整列表請參見表格 \ref{table:rocm_meta_packages})。使用者通常會選擇安裝元套件,而非單獨安裝各個套件。 |
| 56 | + |
| 57 | +\begin{figure} |
| 58 | + \centering |
| 59 | + \includegraphics[width=1\linewidth]{Appendici/FigureA1.png} |
| 60 | + \caption{ROCm 元套件的列表以及包含在元套件中的各個單獨套件} |
| 61 | + \label{fig:rocm_packages} |
| 62 | +\end{figure} |
| 63 | + |
| 64 | + |
| 65 | +\section{安裝} |
| 66 | + |
| 67 | +在此概論中,我們介紹兩種安裝 ROCm 的方法,包含安裝程式腳本的方法與套件管理器的方法。 |
| 68 | + |
| 69 | +\subsection{安裝程式腳本方法} |
| 70 | +\label{sec:rocm_installer_method} |
| 71 | +安裝程式腳本方法自動化了 AMDGPU 和 ROCm 的安裝過程。安裝程式腳本會處理 ROCm 的完整安裝過程,包括設定儲存庫、清理檔案系統、更新和安裝所需的驅動程式與元套件。使用此方法,系統對 ROCm 安裝過程有更多控制權。因此,那些對標準 Linux 指令不太熟悉的使用者可以選擇此方法來安裝 ROCm。可以使用以下指令下載並安裝安裝程式: |
| 72 | + |
| 73 | +\begin{lstlisting}[caption={使用安裝程式腳本安裝 ROCm 所需指令}, label={lst:a1}] |
| 74 | +sudo apt-get update |
| 75 | +wget https://repo.radeon.com/amdgpu-install/5.4.3/ubuntu/focal/amdgpu-install_5.4.50403-1_all.deb |
| 76 | +sudo apt-get install ./amdgpu-install_5.4.50403-1_all.deb |
| 77 | +\end{lstlisting} |
| 78 | + |
| 79 | +上述指令應該會安裝一個可以幫助管理 ROCm 套件的 \lstinline|amdgpu-install| 程式。如要安裝 ROCm,我們可以使用 \lstinline|sudo ./amdgpu-install| 指令執行安裝。此外,使用者也可以透過像是 \lstinline|sudo amdgpu-install --usecase=rocm| 的指令來安裝特定的使用案例。如果使用者希望一次安裝多個使用案例,可以在 \lstinline|usecase| 參數中指定多個值,並以逗號分隔。例如,指令 \lstinline|sudo amdgpu-install --usecase=rocm,hiplibsdk| 會同時安裝 ROCm 和 \lstinline|hiplibsdk| 兩個使用案例。使用 \lstinline|sudo amdgpu-install --list-usecase| 可以顯示所有可用的使用案例列表。 |
| 80 | + |
| 81 | + |
| 82 | +\subsection{套件管理器方法} |
| 83 | + |
| 84 | +套件管理器方法提供使用者更多安裝選項的靈活性,但在安裝過程中需要更多的使用者操作。建議此方法僅供進階使用者使用。總體來說,使用套件管理器安裝 ROCm 包括以下六個步驟: |
| 85 | + |
| 86 | +\paragraph{步驟 1:安裝 Linux 核心標頭與開發套件} |
| 87 | +使用套件管理器方法的前置步驟之一是安裝正確的 Linux 核心標頭與開發套件。 |
| 88 | + |
| 89 | +可以使用指令 \lstinline!sudo dpkg -l | grep linux-headers! 來檢查已安裝的核心標頭版本。例如,輸出的結果可能是 \lstinline|ii linux-headers-5.15.0-41-generic 5.15.0-41.44 20.04.1 amd64 Linux kernel headers for version 5.15.0 on 64 bit x86 SMP|。 |
| 90 | +類似地,可以使用指令 \lstinline!sudo dpkg -l | grep linux-modules-extra! 來列出開發套件,在作者的系統中輸出的結果為 |
| 91 | +\lstinline|ii linux-modules-extra-5.15.0-41-generic 5.15.0-41.44 20.04.1 amd64 Linux kernel extra modules for version 5.15.0 on 64 bit x86 SMP|。 |
| 92 | +如果當前版本的 Linux 標頭不符合表 \ref{table:rocm_supported_distros_and_kernel_versions} 中列出的要求,使用者需要使用指令 \lstinline|sudo apt install linux-headers-$(uname -r) linux-modules-extra-$(uname -r)| 來安裝所需的 Linux 標頭。 |
| 93 | + |
| 94 | + |
| 95 | +\paragraph{步驟 2:安裝 AMD GPU 驅動程式} |
| 96 | +接下來,我們會使用套件管理器安裝 AMD GPU 驅動程式。套件管理器要求套件必須加密,因此需要安裝一組GNU Privacy Guard(GPG)金鑰。安裝 GPG 金鑰的指令為: |
| 97 | + |
| 98 | +\lstinline!curl -fsSL https://repo.radeon.com/rocm/rocm.gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/rocm-keyring.gpg!。 |
| 99 | + |
| 100 | +接下來,使用以下指令將 AMD GPU 儲存庫新增到 Ubuntu 的套件管理器中: |
| 101 | + |
| 102 | +\lstinline!echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/rocm-keyring.gpg] https://repo.radeon.com/amdgpu/5.4.3/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/amdgpu.list!。 |
| 103 | +新增儲存庫後,別忘了執行 \lstinline|sudo apt-get update|,讓套件管理器能夠取得套件資訊。 |
| 104 | +最後,使用 \lstinline|sudo apt install amdgpu-dkms| 來安裝 AMD GPU 驅動程式。安裝完成後,需要重新啟動系統。 |
| 105 | + |
| 106 | +\paragraph{步驟 3:安裝 ROCm 環境} |
| 107 | +為了安裝 ROCm 環境,我們需要使用以下指令將外部資源加入到 Ubuntu 的套件管理器中: |
| 108 | + |
| 109 | +\lstinline!echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/rocm-keyring.gpg] https://repo.radeon.com/rocm/apt/5.4.3 focal main' | sudo tee /etc/apt/sources.list.d/rocm.list! |
| 110 | + |
| 111 | +此指令會建立 \lstinline|rocm.list|,其中包含提供套件的 URL。 |
| 112 | + |
| 113 | +接下來,我們需要透過以下指令修改優先權: |
| 114 | + |
| 115 | +\lstinline!echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600! |
| 116 | + |
| 117 | +透過為 ROCm 套件設定較高的優先權,我們可以在更新套件時保持穩定版本的 Ubuntu。在新增套件來源並修改優先設定後,我們仍然需要執行 \lstinline|sudo apt-get update|。 |
| 118 | + |
| 119 | + |
| 120 | +\subsection{驗證安裝} |
| 121 | +無論使用哪種安裝方法,我們都需要驗證安裝是否成功。如果執行過程中出現錯誤,使用者應該首先檢查 ROCm 安裝是否已損壞。 |
| 122 | + |
| 123 | +首先,我們可以檢查 \lstinline|/opt/rocm|目錄是否包含預期的執行檔,例如 \lstinline|rocm-smi|,以及 ROCm 函式庫,例如 \lstinline|librocblas.so|。 |
| 124 | +其次,我們可以檢查驅動程式是否正常運作。可以使用 \lstinline|dkms status| 指令檢查目前正在使用的驅動程式。例如,在作者的系統中,執行此指令會顯示輸出:\lstinline|amdgpu, 5.16.9.22.20-1438746~20.04, 5.4.0-121-generic, x86_64: installed|。這表示驅動程式已正確安裝並正在使用。 |
| 125 | + |
| 126 | +再者,我們應該檢查是否有程式能夠偵測到 GPU 硬體並取得 GPU 的屬性。我們可以執行 \lstinline|/opt/rocm/bin/rocminfo| 或 \lstinline|/opt/rocm/opencl/bin/clinfo| 來取得硬體屬性。如果這兩個程式能夠順利執行並且顯示系統中安裝的 GPU,則表示 ROCm 環境已正確安裝並且正常運作。 |
| 127 | + |
| 128 | +最後,我們可以使用平常的 Ubuntu 套件安裝指令來安裝元套件。指令為 \lstinline|sudo apt install <套件名稱>|。例如,如果我們想安裝最常使用的 ROCm 功能,可以使用 \lstinline|sudo apt install rocm|。 |
| 129 | + |
| 130 | + |
| 131 | +\section{更新 ROCm} |
| 132 | +保持新版本的 ROCm 非常重要,因為工具和函式庫會不斷收到新的功能更新、錯誤修復、效能改善和安全性更新。和安裝過程類似,使用者可以選擇使用安裝程式或是 Linux 發行版提供的套件管理器。 |
| 133 | + |
| 134 | +若要使用安裝程式腳本方法,首先需要按照章節 \ref{sec:rocm_installer_method} 所描述的步驟安裝安裝程式。接下來,升級套件版本的過程與全新安裝相同。若要更新特定的使用案例,可以使用指令 \lstinline|sudo amdgpu-install --usecase=<使用案例>|。 |
| 135 | + |
| 136 | +若是使用套件管理器更新 ROCm,則會需要較多指令。首先,我們需要更新 AMD GPU 驅動程式套件的外部來源,使用以下指令: |
| 137 | + |
| 138 | +\lstinline!echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/rocm-keyring.gpg] <amdgpu baseurl> focal main' | sudo tee /etc/apt/sources.list.d/amdgpu.list! |
| 139 | + |
| 140 | +修改來源清單後需要執行 \lstinline|sudo apt-get update|。接著,我們可以使用指令 \lstinline|sudo apt install amdgpu-dkms| 來更新驅動程式。同樣,安裝完成後,需要重新啟動系統。 |
| 141 | + |
| 142 | +最後,我們需要對 ROCm 套件重複此過程。使用以下指令來修改外部來源: |
| 143 | + |
| 144 | +\lstinline!echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/rocm-keyring.gpg] <rocm baseurl> focal main' | sudo tee /etc/apt/sources.list.d/rocm.list! |
| 145 | + |
| 146 | +\lstinline!echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600! |
| 147 | + |
| 148 | +接著,我們可以使用套件管理器更新 ROCm 套件,指令為:\lstinline|sudo apt install --only-upgrade <元套件名稱>|。 |
| 149 | + |
| 150 | +\section{解除安裝 ROCm} |
| 151 | +若要解除安裝 ROCm,我們可以選擇使用安裝程式腳本(在這種情況下是解除安裝程式)或是 Linux 發行版的套件管理器。如果 ROCm 是透過安裝程式腳本安裝的,解除安裝程式會與安裝程式一併提供。解除安裝 ROCm 只需執行 \lstinline|sudo amdgpu-uninstall| 即可。 |
| 152 | +Ubuntu 的套件管理器可以輕鬆解除安裝 ROCm 或特定的使用案例。指令為: |
| 153 | +\lstinline|sudo apt autoremove <套件名稱>|。 |
| 154 | + |
| 155 | + |
| 156 | +\begin{table}[h!] |
| 157 | +\centering |
| 158 | +\caption{ROCm 的元套件} |
| 159 | +\label{table:rocm_meta_packages} |
| 160 | +\begin{tabular}{lp{0.6\linewidth}} |
| 161 | +\hline |
| 162 | +\textbf{元套件} & \textbf{說明} \\ |
| 163 | +\hline |
| 164 | +\lstinline|rocm-hip-libraries| & \lstinline|rocm-hip-libraries| 會安裝為 AMD 平台優化的 HIP 函式庫。 \\ |
| 165 | +\lstinline|rocm-hip-runtime| & \lstinline|rocm-hip-runtime| 會安裝運行在 AMD 平台上以 HIP 撰寫的應用程式所需的套件 \\ |
| 166 | +\lstinline|rocm-hip-runtime-devel| & \lstinline|rocm-hip-runtime-devel| 會安裝開發基於 HIP 的應用程式或將其從 CUDA 移植過來所需的套件 \\ |
| 167 | +\lstinline|rocm-hip-sdk| & \lstinline|rocm-hip-sdk| 會安裝開發/移植使用 HIP 的應用程式所需的套件以及為 AMD 平台提供的函式庫 \\ |
| 168 | +\lstinline|rocm-language-runtime| & \lstinline|rocm-language-runtime| 會安裝 ROCm 執行環境 \\ |
| 169 | +\lstinline|rocm-ml-libraries| & \lstinline|rocm-ml-libraries| 會安裝關鍵的機器學習函式庫套件(主要是 MIOpen) \\ |
| 170 | +\lstinline|rocm-ml-sdk| & \lstinline|rocm-ml-sdk| 會安裝開發和運行使用為 AMD 平台優化的機器學習運算單元的應用程式所需的套件 \\ |
| 171 | +\lstinline|rocm-opencl-runtime| & \lstinline|rocm-opencl-runtime| 會安裝在 AMD 平台上執行基於 OpenCL 的應用程式所需的套件 \\ |
| 172 | +\lstinline|rocm-opencl-sdk| & \lstinline|rocm-opencl-sdk| 會安裝在 AMD 平台上開發基於 OpenCL 的應用程式所需的套件 \\ |
| 173 | +\lstinline|rocm-openmp-runtime| & \lstinline|rocm-openmp-runtime| 會安裝在 AMD 平台上執行基於 OpenMP 的應用程式所需的套件 \\ |
| 174 | +\lstinline|rocm-openmp-sdk| & \lstinline|rocm-openmp-sdk| 會安裝在 AMD 平台上開發基於 OpenMP 的應用程式所需的套件 \\ |
| 175 | +\hline |
| 176 | +\end{tabular} |
| 177 | +\end{table} |
0 commit comments