# 5.1。概述
> 原文: [http://numba.pydata.org/numba-doc/latest/roc/overview.html](http://numba.pydata.org/numba-doc/latest/roc/overview.html)
Numba 支持 [AMD ROC GPU](https://rocm.github.io/) 編程,直接將 HSA 代碼的受限子集編譯為 HSA 內核和遵循 HSA 執行模型的設備功能。用 Numba 編寫的內核似乎可以直接訪問 NumPy 數組。
## 5.1.1。術語
這里列出了 HSA 編程主題中的幾個重要術語:
* _ 內核 _:由主機啟動并在設備上執行的 GPU 功能
* _ 設備功能 _:在設備上執行的 GPU 功能,只能從設備調用(即從內核或其他設備功能)
## 5.1.2。要求
[本文件](https://github.com/RadeonOpenCompute/ROCm#are-you-ready-to-rock)描述了使用 ROC 的要求。基本上需要 AMD dGPU(斐濟,Polaris 和 Vega 系列)以及支持 PCIe Gen3 和 PCIe Atomics 的 CPU(AMD Ryzen 和 EPYC 以及 Intel CPU> = Haswell),完整的詳細信息在鏈接文檔中。此外,還需要 Linux 操作系統,支持和測試的操作系統也列在鏈接文檔中。
## 5.1.3。安裝
請按照[此文檔](https://github.com/RadeonOpenCompute/ROCm#installing-from-amd-rocm-repositories)獲取安裝說明,以啟用系統的 ROC 支持。請務必使用系統的 Linux 發行版的二進制包來簡化該過程。此時應通過運行來測試安裝:
```py
$ /opt/rocm/bin/rocminfo
```
其輸出應列出至少兩個 HSA 代理,其中至少一個應為 CPU,其中至少一個應為 dGPU。
假設安裝工作正常,NOC 的 ROC 支持由`roctools`包提供,可以通過`conda`和 Numba 從 Numba 通道安裝如下(創建一個名為`numba_roc`的 env):
```py
$ conda create -n numba_roc -c numba numba roctools
```
激活 env,然后運行 Numba 診斷工具應確認 Numba 在啟用 ROC 支持的情況下運行,例如:
```py
$ source activate numba_roc
$ numba -s
```
`numba -s`的輸出應包含類似于的部分:
```py
__ROC Information__
ROC available : True
Available Toolchains : librocmlite library, ROC command line tools
Found 2 HSA Agents:
Agent id : 0
vendor: CPU
name: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
type: CPU
Agent id : 1
vendor: AMD
name: gfx803
type: GPU
Found 1 discrete GPU(s) : gfx803
```
確認 ROC 可用,列出可用的工具鏈并顯示 HSA 代理和 dGPU 計數。
- 1. 用戶手冊
- 1.1。 Numba 的約 5 分鐘指南
- 1.2。概述
- 1.3。安裝
- 1.4。使用@jit 編譯 Python 代碼
- 1.5。使用@generated_jit 進行靈活的專業化
- 1.6。創建 Numpy 通用函數
- 1.7。用@jitclass 編譯 python 類
- 1.8。使用@cfunc 創建 C 回調
- 1.9。提前編譯代碼
- 1.10。使用@jit 自動并行化
- 1.11。使用@stencil裝飾器
- 1.12。從 JIT 代碼 中回調到 Python 解釋器
- 1.13。性能提示
- 1.14。線程層
- 1.15。故障排除和提示
- 1.16。常見問題
- 1.17。示例
- 1.18。會談和教程
- 2. 參考手冊
- 2.1。類型和簽名
- 2.2。即時編譯
- 2.3。提前編譯
- 2.4。公用事業
- 2.5。環境變量
- 2.6。支持的 Python 功能
- 2.7。支持的 NumPy 功能
- 2.8。與 Python 語義的偏差
- 2.9。浮點陷阱
- 2.10。 Python 2.7 壽命終止計劃
- 3. 用于 CUDA GPU 的 Numba
- 3.1。概述
- 3.2。編寫 CUDA 內核
- 3.3。內存管理
- 3.4。編寫設備功能
- 3.5。 CUDA Python 中支持的 Python 功能
- 3.6。支持的原子操作
- 3.7。隨機數生成
- 3.8。設備管理
- 3.10。示例
- 3.11。使用 CUDA 模擬器 調試 CUDA Python
- 3.12。 GPU 減少
- 3.13。 CUDA Ufuncs 和廣義 Ufuncs
- 3.14。共享 CUDA 內存
- 3.15。 CUDA 陣列接口
- 3.16。 CUDA 常見問題
- 4. CUDA Python 參考
- 4.1。 CUDA 主機 API
- 4.2。 CUDA 內核 API
- 4.3。內存管理
- 5. 用于 AMD ROC GPU 的 Numba
- 5.1。概述
- 5.2。編寫 HSA 內核
- 5.3。內存管理
- 5.4。編寫設備功能
- 5.5。支持的原子操作
- 5.6。代理商
- 5.7。 ROC Ufuncs 和廣義 Ufuncs
- 5.8。示例
- 6. 擴展 Numba
- 6.1。高級擴展 API
- 6.2。低級擴展 API
- 6.3。示例:間隔類型
- 7. 開發者手冊
- 7.1。貢獻給 Numba
- 7.2。 Numba 建筑
- 7.3。多態調度
- 7.4。關于發電機的注意事項
- 7.5。關于 Numba Runtime 的注意事項
- 7.6。使用 Numba Rewrite Pass 獲得樂趣和優化
- 7.7。實時變量分析
- 7.8。上市
- 7.9。模板注釋
- 7.10。關于自定義管道的注意事項
- 7.11。環境對象
- 7.12。哈希 的注意事項
- 7.13。 Numba 項目路線圖
- 8. Numba 增強建議
- 9. 術語表