Compare commits
23 Commits
docs/7.11.
...
roc-7.9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d560a7499 | ||
|
|
6dfecda93c | ||
|
|
ec02384cb9 | ||
|
|
ca1170e6a6 | ||
|
|
2ec051dec5 | ||
|
|
fd6bbe18a7 | ||
|
|
a613bd6824 | ||
|
|
b3459da524 | ||
|
|
14bb59fca9 | ||
|
|
a98236a4e3 | ||
|
|
5cb6bfe151 | ||
|
|
6e7422ded7 | ||
|
|
7b7ff53985 | ||
|
|
019796dc63 | ||
|
|
f21cfe1171 | ||
|
|
170cb47a4f | ||
|
|
d19a8e4a83 | ||
|
|
3a0b8529ed | ||
|
|
f9d7fc2e6a | ||
|
|
d424687191 | ||
|
|
35e6e50888 | ||
|
|
91cfe98eb3 | ||
|
|
036aaa2e78 |
@@ -37,6 +37,7 @@ parameters:
|
|||||||
- libdrm-dev
|
- libdrm-dev
|
||||||
- libelf-dev
|
- libelf-dev
|
||||||
- libnuma-dev
|
- libnuma-dev
|
||||||
|
- libsimde-dev
|
||||||
- ninja-build
|
- ninja-build
|
||||||
- pkg-config
|
- pkg-config
|
||||||
- name: rocmDependencies
|
- name: rocmDependencies
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ parameters:
|
|||||||
jobs:
|
jobs:
|
||||||
- ${{ each job in parameters.jobMatrix.buildJobs }}:
|
- ${{ each job in parameters.jobMatrix.buildJobs }}:
|
||||||
- job: rccl_build_${{ job.target }}
|
- job: rccl_build_${{ job.target }}
|
||||||
timeoutInMinutes: 90
|
timeoutInMinutes: 120
|
||||||
variables:
|
variables:
|
||||||
- group: common
|
- group: common
|
||||||
- template: /.azuredevops/variables-global.yml
|
- template: /.azuredevops/variables-global.yml
|
||||||
|
|||||||
@@ -17,8 +17,14 @@ parameters:
|
|||||||
- libdw-dev
|
- libdw-dev
|
||||||
- libglfw3-dev
|
- libglfw3-dev
|
||||||
- libmsgpack-dev
|
- libmsgpack-dev
|
||||||
|
- libomp-dev
|
||||||
|
- libopencv-dev
|
||||||
- libtbb-dev
|
- libtbb-dev
|
||||||
|
- libtiff-dev
|
||||||
- libva-amdgpu-dev
|
- libva-amdgpu-dev
|
||||||
|
- libavcodec-dev
|
||||||
|
- libavformat-dev
|
||||||
|
- libavutil-dev
|
||||||
- ninja-build
|
- ninja-build
|
||||||
- python3-pip
|
- python3-pip
|
||||||
- name: rocmDependencies
|
- name: rocmDependencies
|
||||||
@@ -38,7 +44,9 @@ parameters:
|
|||||||
- hipTensor
|
- hipTensor
|
||||||
- llvm-project
|
- llvm-project
|
||||||
- MIOpen
|
- MIOpen
|
||||||
|
- MIVisionX
|
||||||
- rocBLAS
|
- rocBLAS
|
||||||
|
- rocDecode
|
||||||
- rocFFT
|
- rocFFT
|
||||||
- rocJPEG
|
- rocJPEG
|
||||||
- rocPRIM
|
- rocPRIM
|
||||||
@@ -50,6 +58,7 @@ parameters:
|
|||||||
- rocSPARSE
|
- rocSPARSE
|
||||||
- rocThrust
|
- rocThrust
|
||||||
- rocWMMA
|
- rocWMMA
|
||||||
|
- rpp
|
||||||
- name: rocmTestDependencies
|
- name: rocmTestDependencies
|
||||||
type: object
|
type: object
|
||||||
default:
|
default:
|
||||||
@@ -66,7 +75,10 @@ parameters:
|
|||||||
- hipSPARSE
|
- hipSPARSE
|
||||||
- hipTensor
|
- hipTensor
|
||||||
- llvm-project
|
- llvm-project
|
||||||
|
- MIOpen
|
||||||
|
- MIVisionX
|
||||||
- rocBLAS
|
- rocBLAS
|
||||||
|
- rocDecode
|
||||||
- rocFFT
|
- rocFFT
|
||||||
- rocminfo
|
- rocminfo
|
||||||
- rocPRIM
|
- rocPRIM
|
||||||
@@ -80,6 +92,7 @@ parameters:
|
|||||||
- rocThrust
|
- rocThrust
|
||||||
- roctracer
|
- roctracer
|
||||||
- rocWMMA
|
- rocWMMA
|
||||||
|
- rpp
|
||||||
|
|
||||||
- name: jobMatrix
|
- name: jobMatrix
|
||||||
type: object
|
type: object
|
||||||
|
|||||||
@@ -43,9 +43,14 @@ parameters:
|
|||||||
- ninja-build
|
- ninja-build
|
||||||
- python3-pip
|
- python3-pip
|
||||||
- python3-venv
|
- python3-venv
|
||||||
|
- googletest
|
||||||
|
- libgtest-dev
|
||||||
|
- libgmock-dev
|
||||||
|
- libboost-filesystem-dev
|
||||||
- name: pipModules
|
- name: pipModules
|
||||||
type: object
|
type: object
|
||||||
default:
|
default:
|
||||||
|
- msgpack
|
||||||
- joblib
|
- joblib
|
||||||
- "packaging>=22.0"
|
- "packaging>=22.0"
|
||||||
- pytest
|
- pytest
|
||||||
@@ -147,6 +152,13 @@ jobs:
|
|||||||
echo "##vso[task.prependpath]$USER_BASE/bin"
|
echo "##vso[task.prependpath]$USER_BASE/bin"
|
||||||
echo "##vso[task.setvariable variable=PytestCmakePath]$USER_BASE/share/Pytest/cmake"
|
echo "##vso[task.setvariable variable=PytestCmakePath]$USER_BASE/share/Pytest/cmake"
|
||||||
displayName: Set cmake configure paths
|
displayName: Set cmake configure paths
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Add ROCm binaries to PATH
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: |
|
||||||
|
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
|
||||||
|
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
|
||||||
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
|
||||||
parameters:
|
parameters:
|
||||||
os: ${{ job.os }}
|
os: ${{ job.os }}
|
||||||
|
|||||||
63
.azuredevops/dependencies/cli11.yml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
parameters:
|
||||||
|
- name: checkoutRepo
|
||||||
|
type: string
|
||||||
|
default: 'self'
|
||||||
|
- name: checkoutRef
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: cli11Version
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: aptPackages
|
||||||
|
type: object
|
||||||
|
default:
|
||||||
|
- cmake
|
||||||
|
- git
|
||||||
|
- ninja-build
|
||||||
|
|
||||||
|
- name: jobMatrix
|
||||||
|
type: object
|
||||||
|
default:
|
||||||
|
buildJobs:
|
||||||
|
- { os: ubuntu2204, packageManager: apt}
|
||||||
|
- { os: almalinux8, packageManager: dnf}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- ${{ each job in parameters.jobMatrix.buildJobs }}:
|
||||||
|
- job: cli11_${{ job.os }}
|
||||||
|
variables:
|
||||||
|
- group: common
|
||||||
|
- template: /.azuredevops/variables-global.yml
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-22.04'
|
||||||
|
${{ if eq(job.os, 'almalinux8') }}:
|
||||||
|
container:
|
||||||
|
image: rocmexternalcicd.azurecr.io/manylinux228:latest
|
||||||
|
endpoint: ContainerService3
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
|
||||||
|
parameters:
|
||||||
|
aptPackages: ${{ parameters.aptPackages }}
|
||||||
|
packageManager: ${{ job.packageManager }}
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Clone cli11 ${{ parameters.cli11Version }}
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: git clone https://github.com/CLIUtils/CLI11.git -b ${{ parameters.cli11Version }}
|
||||||
|
workingDirectory: $(Agent.BuildDirectory)
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
|
||||||
|
parameters:
|
||||||
|
os: ${{ job.os }}
|
||||||
|
cmakeBuildDir: $(Agent.BuildDirectory)/CLI11/build
|
||||||
|
cmakeSourceDir: $(Agent.BuildDirectory)/CLI11
|
||||||
|
useAmdclang: false
|
||||||
|
extraBuildFlags: >-
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
-GNinja
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
|
||||||
|
parameters:
|
||||||
|
os: ${{ job.os }}
|
||||||
66
.azuredevops/dependencies/yamlcpp.yml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
parameters:
|
||||||
|
- name: checkoutRepo
|
||||||
|
type: string
|
||||||
|
default: 'self'
|
||||||
|
- name: checkoutRef
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: yamlcppVersion
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: aptPackages
|
||||||
|
type: object
|
||||||
|
default:
|
||||||
|
- cmake
|
||||||
|
- git
|
||||||
|
- ninja-build
|
||||||
|
|
||||||
|
- name: jobMatrix
|
||||||
|
type: object
|
||||||
|
default:
|
||||||
|
buildJobs:
|
||||||
|
- { os: ubuntu2204, packageManager: apt}
|
||||||
|
- { os: almalinux8, packageManager: dnf}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- ${{ each job in parameters.jobMatrix.buildJobs }}:
|
||||||
|
- job: yamlcpp_${{ job.os }}
|
||||||
|
variables:
|
||||||
|
- group: common
|
||||||
|
- template: /.azuredevops/variables-global.yml
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-22.04'
|
||||||
|
${{ if eq(job.os, 'almalinux8') }}:
|
||||||
|
container:
|
||||||
|
image: rocmexternalcicd.azurecr.io/manylinux228:latest
|
||||||
|
endpoint: ContainerService3
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
|
||||||
|
parameters:
|
||||||
|
aptPackages: ${{ parameters.aptPackages }}
|
||||||
|
packageManager: ${{ job.packageManager }}
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Clone yaml-cpp ${{ parameters.yamlcppVersion }}
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: git clone https://github.com/jbeder/yaml-cpp.git -b ${{ parameters.yamlcppVersion }}
|
||||||
|
workingDirectory: $(Agent.BuildDirectory)
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
|
||||||
|
parameters:
|
||||||
|
os: ${{ job.os }}
|
||||||
|
cmakeBuildDir: $(Agent.BuildDirectory)/yaml-cpp/build
|
||||||
|
cmakeSourceDir: $(Agent.BuildDirectory)/yaml-cpp
|
||||||
|
useAmdclang: false
|
||||||
|
extraBuildFlags: >-
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
-DYAML_CPP_BUILD_TOOLS=OFF
|
||||||
|
-DYAML_BUILD_SHARED_LIBS=OFF
|
||||||
|
-DYAML_CPP_INSTALL=ON
|
||||||
|
-GNinja
|
||||||
|
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
|
||||||
|
parameters:
|
||||||
|
os: ${{ job.os }}
|
||||||
23
.azuredevops/tag-builds/cli11.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
variables:
|
||||||
|
- group: common
|
||||||
|
- template: /.azuredevops/variables-global.yml
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
- name: cli11Version
|
||||||
|
type: string
|
||||||
|
default: "main"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
repositories:
|
||||||
|
- repository: pipelines_repo
|
||||||
|
type: github
|
||||||
|
endpoint: ROCm
|
||||||
|
name: ROCm/ROCm
|
||||||
|
|
||||||
|
trigger: none
|
||||||
|
pr: none
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/cli11.yml
|
||||||
|
parameters:
|
||||||
|
cli11Version: ${{ parameters.cli11Version }}
|
||||||
24
.azuredevops/tag-builds/yaml-cpp.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
variables:
|
||||||
|
- group: common
|
||||||
|
- template: /.azuredevops/variables-global.yml
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
- name: yamlcppVersion
|
||||||
|
type: string
|
||||||
|
default: "0.8.0"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
repositories:
|
||||||
|
- repository: pipelines_repo
|
||||||
|
type: github
|
||||||
|
endpoint: ROCm
|
||||||
|
name: ROCm/ROCm
|
||||||
|
|
||||||
|
trigger: none
|
||||||
|
pr: none
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/yamlcpp.yml
|
||||||
|
parameters:
|
||||||
|
yamlcppVersion: ${{ parameters.yamlcppVersion }}
|
||||||
|
|
||||||
212
.wordlist.txt
@@ -3,8 +3,11 @@ ABI
|
|||||||
ACE
|
ACE
|
||||||
ACEs
|
ACEs
|
||||||
ACS
|
ACS
|
||||||
|
AccVGPR
|
||||||
|
AccVGPRs
|
||||||
AITER
|
AITER
|
||||||
ALU
|
ALU
|
||||||
|
AllReduce
|
||||||
AMD
|
AMD
|
||||||
AMDGPU
|
AMDGPU
|
||||||
AMDGPUs
|
AMDGPUs
|
||||||
@@ -19,32 +22,28 @@ APIC
|
|||||||
APIs
|
APIs
|
||||||
APU
|
APU
|
||||||
APUs
|
APUs
|
||||||
ASAN
|
|
||||||
ASIC
|
ASIC
|
||||||
ASICs
|
ASICs
|
||||||
ASan
|
ASan
|
||||||
|
ASAN
|
||||||
ASm
|
ASm
|
||||||
ATI
|
ATI
|
||||||
AccVGPR
|
atomicRMW
|
||||||
AccVGPRs
|
|
||||||
AddressSanitizer
|
AddressSanitizer
|
||||||
AlexNet
|
AlexNet
|
||||||
AllReduce
|
|
||||||
Andrej
|
Andrej
|
||||||
Arb
|
Arb
|
||||||
Autocast
|
Autocast
|
||||||
BARs
|
BARs
|
||||||
|
BatchNorm
|
||||||
BKC
|
BKC
|
||||||
BLAS
|
BLAS
|
||||||
BMC
|
BMC
|
||||||
BabelStream
|
BabelStream
|
||||||
BatchNorm
|
|
||||||
Bitwise
|
|
||||||
Blit
|
Blit
|
||||||
Blockwise
|
Blockwise
|
||||||
Bluefield
|
Bluefield
|
||||||
Bootloader
|
Bootloader
|
||||||
BrainFloat
|
|
||||||
Broadcom
|
Broadcom
|
||||||
CAS
|
CAS
|
||||||
CCD
|
CCD
|
||||||
@@ -63,6 +62,7 @@ CPF
|
|||||||
CPP
|
CPP
|
||||||
CPU
|
CPU
|
||||||
CPUs
|
CPUs
|
||||||
|
Cron
|
||||||
CSC
|
CSC
|
||||||
CSDATA
|
CSDATA
|
||||||
CSE
|
CSE
|
||||||
@@ -73,8 +73,8 @@ CTests
|
|||||||
CU
|
CU
|
||||||
CUDA
|
CUDA
|
||||||
CUs
|
CUs
|
||||||
CX
|
|
||||||
CXX
|
CXX
|
||||||
|
CX
|
||||||
Cavium
|
Cavium
|
||||||
CentOS
|
CentOS
|
||||||
ChatGPT
|
ChatGPT
|
||||||
@@ -87,32 +87,35 @@ Concretized
|
|||||||
Conda
|
Conda
|
||||||
ConnectX
|
ConnectX
|
||||||
CountOnes
|
CountOnes
|
||||||
Cron
|
|
||||||
CuPy
|
CuPy
|
||||||
|
da
|
||||||
|
Dashboarding
|
||||||
|
Dataloading
|
||||||
DBRX
|
DBRX
|
||||||
DDR
|
DDR
|
||||||
DF
|
DF
|
||||||
DGEMM
|
DGEMM
|
||||||
DGL
|
DGL
|
||||||
DGLGraph
|
DGLGraph
|
||||||
|
dGPU
|
||||||
|
dGPUs
|
||||||
DIMM
|
DIMM
|
||||||
DKMS
|
DKMS
|
||||||
DL
|
DL
|
||||||
DMA
|
DMA
|
||||||
|
DOMContentLoaded
|
||||||
DNN
|
DNN
|
||||||
DNNL
|
DNNL
|
||||||
DOMContentLoaded
|
|
||||||
DPM
|
DPM
|
||||||
DRI
|
DRI
|
||||||
DW
|
DW
|
||||||
DWORD
|
DWORD
|
||||||
Dashboarding
|
|
||||||
Dask
|
Dask
|
||||||
DataFrame
|
DataFrame
|
||||||
DataLoader
|
DataLoader
|
||||||
DataParallel
|
DataParallel
|
||||||
Dataloading
|
|
||||||
Debian
|
Debian
|
||||||
|
decompositions
|
||||||
DeepSeek
|
DeepSeek
|
||||||
DeepSpeed
|
DeepSpeed
|
||||||
Dependabot
|
Dependabot
|
||||||
@@ -120,20 +123,24 @@ Deprecations
|
|||||||
DevCap
|
DevCap
|
||||||
DirectX
|
DirectX
|
||||||
Disaggregated
|
Disaggregated
|
||||||
|
disaggregated
|
||||||
Dockerfile
|
Dockerfile
|
||||||
Dockerized
|
Dockerized
|
||||||
Doxygen
|
Doxygen
|
||||||
|
dropless
|
||||||
ELMo
|
ELMo
|
||||||
ENDPGM
|
ENDPGM
|
||||||
EPYC
|
EPYC
|
||||||
ESXi
|
ESXi
|
||||||
EoS
|
EoS
|
||||||
|
etcd
|
||||||
|
fas
|
||||||
FBGEMM
|
FBGEMM
|
||||||
|
FIFOs
|
||||||
FFT
|
FFT
|
||||||
FFTs
|
FFTs
|
||||||
FFmpeg
|
FFmpeg
|
||||||
FHS
|
FHS
|
||||||
FIFOs
|
|
||||||
FIXME
|
FIXME
|
||||||
FMA
|
FMA
|
||||||
FP
|
FP
|
||||||
@@ -142,8 +149,8 @@ Filesystem
|
|||||||
FindDb
|
FindDb
|
||||||
Flang
|
Flang
|
||||||
FlashAttention
|
FlashAttention
|
||||||
FlashInfer
|
|
||||||
FlashInfer’s
|
FlashInfer’s
|
||||||
|
FlashInfer
|
||||||
FluxBenchmark
|
FluxBenchmark
|
||||||
Fortran
|
Fortran
|
||||||
Fuyu
|
Fuyu
|
||||||
@@ -160,12 +167,16 @@ GDS
|
|||||||
GEMM
|
GEMM
|
||||||
GEMMs
|
GEMMs
|
||||||
GFLOPS
|
GFLOPS
|
||||||
GFXIP
|
|
||||||
GFortran
|
GFortran
|
||||||
|
GFXIP
|
||||||
GGUF
|
GGUF
|
||||||
|
Gemma
|
||||||
|
GiB
|
||||||
GIM
|
GIM
|
||||||
GL
|
GL
|
||||||
|
Glibc
|
||||||
GLXT
|
GLXT
|
||||||
|
Gloo
|
||||||
GMI
|
GMI
|
||||||
GPG
|
GPG
|
||||||
GPGPU
|
GPGPU
|
||||||
@@ -174,25 +185,23 @@ GPT
|
|||||||
GPU
|
GPU
|
||||||
GPU's
|
GPU's
|
||||||
GPUs
|
GPUs
|
||||||
|
Graphbolt
|
||||||
|
GraphSage
|
||||||
GRBM
|
GRBM
|
||||||
GRE
|
GRE
|
||||||
Gemma
|
|
||||||
GenAI
|
GenAI
|
||||||
GenZ
|
GenZ
|
||||||
GiB
|
|
||||||
GitHub
|
GitHub
|
||||||
Gitpod
|
Gitpod
|
||||||
Glibc
|
|
||||||
Gloo
|
|
||||||
GraphSage
|
|
||||||
Graphbolt
|
|
||||||
HBM
|
HBM
|
||||||
HCA
|
HCA
|
||||||
HGX
|
HGX
|
||||||
HIPCC
|
HIPCC
|
||||||
|
hipDataType
|
||||||
HIPExtension
|
HIPExtension
|
||||||
HIPIFY
|
HIPIFY
|
||||||
HIPification
|
HIPification
|
||||||
|
hipification
|
||||||
HIPify
|
HIPify
|
||||||
HPC
|
HPC
|
||||||
HPCG
|
HPCG
|
||||||
@@ -202,12 +211,11 @@ HSA
|
|||||||
HW
|
HW
|
||||||
HWE
|
HWE
|
||||||
HWS
|
HWS
|
||||||
HX
|
|
||||||
Haswell
|
Haswell
|
||||||
Higgs
|
Higgs
|
||||||
Huggingface
|
href
|
||||||
HunyuanVideo
|
|
||||||
Hyperparameters
|
Hyperparameters
|
||||||
|
Huggingface
|
||||||
IB
|
IB
|
||||||
ICD
|
ICD
|
||||||
ICT
|
ICT
|
||||||
@@ -216,10 +224,13 @@ IDE
|
|||||||
IDEs
|
IDEs
|
||||||
IFWI
|
IFWI
|
||||||
IMDb
|
IMDb
|
||||||
|
IncDec
|
||||||
|
instrSize
|
||||||
|
interpolators
|
||||||
IOMMU
|
IOMMU
|
||||||
IOP
|
IOP
|
||||||
IOPM
|
|
||||||
IOPS
|
IOPS
|
||||||
|
IOPM
|
||||||
IOV
|
IOV
|
||||||
IRQ
|
IRQ
|
||||||
ISA
|
ISA
|
||||||
@@ -227,7 +238,6 @@ ISV
|
|||||||
ISVs
|
ISVs
|
||||||
ITL
|
ITL
|
||||||
ImageNet
|
ImageNet
|
||||||
IncDec
|
|
||||||
InfiniBand
|
InfiniBand
|
||||||
Inlines
|
Inlines
|
||||||
IntelliSense
|
IntelliSense
|
||||||
@@ -236,8 +246,8 @@ Intersphinx
|
|||||||
Intra
|
Intra
|
||||||
Ioffe
|
Ioffe
|
||||||
JAX's
|
JAX's
|
||||||
JSON
|
|
||||||
Jinja
|
Jinja
|
||||||
|
JSON
|
||||||
Jupyter
|
Jupyter
|
||||||
KFD
|
KFD
|
||||||
KFDTest
|
KFDTest
|
||||||
@@ -245,10 +255,10 @@ KMD
|
|||||||
KV
|
KV
|
||||||
KVM
|
KVM
|
||||||
Karpathy's
|
Karpathy's
|
||||||
Keras
|
|
||||||
Khronos
|
|
||||||
KiB
|
KiB
|
||||||
Kineto
|
Kineto
|
||||||
|
Keras
|
||||||
|
Khronos
|
||||||
LAPACK
|
LAPACK
|
||||||
LCLK
|
LCLK
|
||||||
LDS
|
LDS
|
||||||
@@ -258,20 +268,21 @@ LLVM
|
|||||||
LM
|
LM
|
||||||
LRU
|
LRU
|
||||||
LSAN
|
LSAN
|
||||||
LSTMs
|
|
||||||
LSan
|
LSan
|
||||||
LTS
|
LTS
|
||||||
|
LSTMs
|
||||||
|
LteAll
|
||||||
LanguageCrossEntropy
|
LanguageCrossEntropy
|
||||||
LoRA
|
LoRA
|
||||||
LteAll
|
|
||||||
MECO
|
MECO
|
||||||
MEM
|
MEM
|
||||||
MERCHANTABILITY
|
MERCHANTABILITY
|
||||||
MFMA
|
MFMA
|
||||||
|
MiB
|
||||||
MIGraphX
|
MIGraphX
|
||||||
MIOpen
|
MIOpen
|
||||||
MIOpen's
|
|
||||||
MIOpenGEMM
|
MIOpenGEMM
|
||||||
|
MIOpen's
|
||||||
MIVisionX
|
MIVisionX
|
||||||
MLM
|
MLM
|
||||||
MMA
|
MMA
|
||||||
@@ -282,9 +293,9 @@ MNIST
|
|||||||
MPI
|
MPI
|
||||||
MPT
|
MPT
|
||||||
MSVC
|
MSVC
|
||||||
|
mul
|
||||||
MVAPICH
|
MVAPICH
|
||||||
MVFFR
|
MVFFR
|
||||||
MXFP
|
|
||||||
Makefile
|
Makefile
|
||||||
Makefiles
|
Makefiles
|
||||||
ManyLinux
|
ManyLinux
|
||||||
@@ -297,16 +308,16 @@ Megatron
|
|||||||
Mellanox
|
Mellanox
|
||||||
Mellanox's
|
Mellanox's
|
||||||
Meta's
|
Meta's
|
||||||
MiB
|
|
||||||
Miniconda
|
Miniconda
|
||||||
MirroredStrategy
|
MirroredStrategy
|
||||||
Mixtral
|
Mixtral
|
||||||
|
MosaicML
|
||||||
MoEs
|
MoEs
|
||||||
Mooncake
|
Mooncake
|
||||||
MosaicML
|
|
||||||
Mpops
|
Mpops
|
||||||
Multicore
|
Multicore
|
||||||
Multithreaded
|
Multithreaded
|
||||||
|
MXFP
|
||||||
MyEnvironment
|
MyEnvironment
|
||||||
MyST
|
MyST
|
||||||
NANOO
|
NANOO
|
||||||
@@ -314,27 +325,24 @@ NBIO
|
|||||||
NBIOs
|
NBIOs
|
||||||
NCCL
|
NCCL
|
||||||
NCF
|
NCF
|
||||||
NCS
|
|
||||||
NFS
|
NFS
|
||||||
NIC
|
NIC
|
||||||
NICs
|
NICs
|
||||||
NLI
|
NLI
|
||||||
NLP
|
NLP
|
||||||
NN
|
NN
|
||||||
NOP
|
|
||||||
NPKit
|
NPKit
|
||||||
NPS
|
NPS
|
||||||
NSP
|
NSP
|
||||||
NUMA
|
NUMA
|
||||||
NVCC
|
NVCC
|
||||||
NVIDIA
|
NVIDIA
|
||||||
NVLink
|
|
||||||
NVPTX
|
NVPTX
|
||||||
NaN
|
NaN
|
||||||
Nano
|
Nano
|
||||||
Navi
|
Navi
|
||||||
NoReturn
|
|
||||||
Noncoherently
|
Noncoherently
|
||||||
|
NoReturn
|
||||||
NousResearch's
|
NousResearch's
|
||||||
NumPy
|
NumPy
|
||||||
OAM
|
OAM
|
||||||
@@ -361,10 +369,13 @@ OpenVX
|
|||||||
OpenXLA
|
OpenXLA
|
||||||
Optim
|
Optim
|
||||||
Oversubscription
|
Oversubscription
|
||||||
|
PagedAttention
|
||||||
|
Pallas
|
||||||
PCC
|
PCC
|
||||||
PCI
|
PCI
|
||||||
PCIe
|
PCIe
|
||||||
PEFT
|
PEFT
|
||||||
|
perf
|
||||||
PEQT
|
PEQT
|
||||||
PIL
|
PIL
|
||||||
PILImage
|
PILImage
|
||||||
@@ -374,8 +385,6 @@ PRNG
|
|||||||
PRs
|
PRs
|
||||||
PaLM
|
PaLM
|
||||||
Pageable
|
Pageable
|
||||||
PagedAttention
|
|
||||||
Pallas
|
|
||||||
PeerDirect
|
PeerDirect
|
||||||
PerfDb
|
PerfDb
|
||||||
Perfetto
|
Perfetto
|
||||||
@@ -388,8 +397,8 @@ Pretraining
|
|||||||
Primus
|
Primus
|
||||||
Profiler's
|
Profiler's
|
||||||
PyPi
|
PyPi
|
||||||
PyTorch
|
|
||||||
Pytest
|
Pytest
|
||||||
|
PyTorch
|
||||||
Qcycles
|
Qcycles
|
||||||
Qwen
|
Qwen
|
||||||
RAII
|
RAII
|
||||||
@@ -400,16 +409,16 @@ RDC's
|
|||||||
RDMA
|
RDMA
|
||||||
RDNA
|
RDNA
|
||||||
README
|
README
|
||||||
|
Recomputation
|
||||||
RHEL
|
RHEL
|
||||||
RLHF
|
|
||||||
RMW
|
RMW
|
||||||
RNN
|
RNN
|
||||||
RNNs
|
RNNs
|
||||||
ROC
|
ROC
|
||||||
ROCProfiler
|
ROCProfiler
|
||||||
ROCT
|
ROCT
|
||||||
ROCTracer
|
|
||||||
ROCTx
|
ROCTx
|
||||||
|
ROCTracer
|
||||||
ROCclr
|
ROCclr
|
||||||
ROCdbgapi
|
ROCdbgapi
|
||||||
ROCgdb
|
ROCgdb
|
||||||
@@ -424,10 +433,8 @@ RPP
|
|||||||
RST
|
RST
|
||||||
RW
|
RW
|
||||||
Radeon
|
Radeon
|
||||||
Recomputation
|
|
||||||
RelWithDebInfo
|
RelWithDebInfo
|
||||||
Req
|
Req
|
||||||
ResNet
|
|
||||||
Rickle
|
Rickle
|
||||||
RoCE
|
RoCE
|
||||||
Runfile
|
Runfile
|
||||||
@@ -435,6 +442,7 @@ Ryzen
|
|||||||
SALU
|
SALU
|
||||||
SBIOS
|
SBIOS
|
||||||
SCA
|
SCA
|
||||||
|
ScaledGEMM
|
||||||
SDK
|
SDK
|
||||||
SDKs
|
SDKs
|
||||||
SDMA
|
SDMA
|
||||||
@@ -453,6 +461,7 @@ SKU
|
|||||||
SKUs
|
SKUs
|
||||||
SLES
|
SLES
|
||||||
SLURM
|
SLURM
|
||||||
|
Slurm
|
||||||
SMEM
|
SMEM
|
||||||
SMFMA
|
SMFMA
|
||||||
SMI
|
SMI
|
||||||
@@ -463,17 +472,17 @@ SRAM
|
|||||||
SRAMECC
|
SRAMECC
|
||||||
SVD
|
SVD
|
||||||
SWE
|
SWE
|
||||||
ScaledGEMM
|
|
||||||
SerDes
|
SerDes
|
||||||
ShareGPT
|
ShareGPT
|
||||||
Shlens
|
Shlens
|
||||||
|
simd
|
||||||
Skylake
|
Skylake
|
||||||
Slurm
|
|
||||||
Softmax
|
Softmax
|
||||||
Spack
|
Spack
|
||||||
SplitK
|
SplitK
|
||||||
Supermicro
|
Supermicro
|
||||||
Szegedy
|
Szegedy
|
||||||
|
TagRAM
|
||||||
TCA
|
TCA
|
||||||
TCC
|
TCC
|
||||||
TCCs
|
TCCs
|
||||||
@@ -481,33 +490,36 @@ TCI
|
|||||||
TCIU
|
TCIU
|
||||||
TCP
|
TCP
|
||||||
TCR
|
TCR
|
||||||
|
TVM
|
||||||
|
TheRock
|
||||||
|
THREADGROUPS
|
||||||
|
threadgroups
|
||||||
|
TensorRT
|
||||||
|
TensorFloat
|
||||||
TF
|
TF
|
||||||
TFLOPS
|
TFLOPS
|
||||||
THREADGROUPS
|
|
||||||
TP
|
TP
|
||||||
TPS
|
TPS
|
||||||
TPU
|
TPU
|
||||||
TPUs
|
TPUs
|
||||||
TSME
|
TSME
|
||||||
TVM
|
|
||||||
TagRAM
|
|
||||||
Tagram
|
|
||||||
Taichi
|
Taichi
|
||||||
Taichi's
|
Taichi's
|
||||||
|
Tagram
|
||||||
TensileLite
|
TensileLite
|
||||||
TensorBoard
|
TensorBoard
|
||||||
TensorFloat
|
|
||||||
TensorFlow
|
TensorFlow
|
||||||
TensorParallel
|
TensorParallel
|
||||||
TensorRT
|
|
||||||
TheRock
|
|
||||||
ToC
|
ToC
|
||||||
TopK
|
|
||||||
TorchAudio
|
TorchAudio
|
||||||
|
torchaudio
|
||||||
TorchElastic
|
TorchElastic
|
||||||
TorchMIGraphX
|
TorchMIGraphX
|
||||||
|
torchrec
|
||||||
TorchScript
|
TorchScript
|
||||||
TorchServe
|
TorchServe
|
||||||
|
torchserve
|
||||||
|
torchtext
|
||||||
TorchVision
|
TorchVision
|
||||||
TransferBench
|
TransferBench
|
||||||
TrapStatus
|
TrapStatus
|
||||||
@@ -519,18 +531,17 @@ UE
|
|||||||
UIF
|
UIF
|
||||||
UMC
|
UMC
|
||||||
USM
|
USM
|
||||||
USM
|
|
||||||
UTCL
|
UTCL
|
||||||
UTCL
|
|
||||||
UTIL
|
|
||||||
UTIL
|
UTIL
|
||||||
UltraChat
|
UltraChat
|
||||||
Uncached
|
Uncached
|
||||||
Unhandled
|
|
||||||
Unittests
|
Unittests
|
||||||
|
Unhandled
|
||||||
|
unwindowed
|
||||||
VALU
|
VALU
|
||||||
VBIOS
|
VBIOS
|
||||||
VCN
|
VCN
|
||||||
|
verl's
|
||||||
VGPR
|
VGPR
|
||||||
VGPRs
|
VGPRs
|
||||||
VM
|
VM
|
||||||
@@ -541,7 +552,6 @@ VSIX
|
|||||||
VSkipped
|
VSkipped
|
||||||
Vanhoucke
|
Vanhoucke
|
||||||
Vulkan
|
Vulkan
|
||||||
WDAG
|
|
||||||
WGP
|
WGP
|
||||||
WGPs
|
WGPs
|
||||||
WR
|
WR
|
||||||
@@ -550,6 +560,7 @@ WikiText
|
|||||||
Wojna
|
Wojna
|
||||||
Workgroups
|
Workgroups
|
||||||
Writebacks
|
Writebacks
|
||||||
|
xcc
|
||||||
XCD
|
XCD
|
||||||
XCDs
|
XCDs
|
||||||
XGBoost
|
XGBoost
|
||||||
@@ -569,8 +580,8 @@ ZeRO
|
|||||||
ZenDNN
|
ZenDNN
|
||||||
accuracies
|
accuracies
|
||||||
activations
|
activations
|
||||||
addEventListener
|
|
||||||
addr
|
addr
|
||||||
|
addEventListener
|
||||||
ade
|
ade
|
||||||
ai
|
ai
|
||||||
alloc
|
alloc
|
||||||
@@ -581,7 +592,6 @@ amdgpu
|
|||||||
api
|
api
|
||||||
aten
|
aten
|
||||||
atmi
|
atmi
|
||||||
atomicRMW
|
|
||||||
atomics
|
atomics
|
||||||
autogenerated
|
autogenerated
|
||||||
autotune
|
autotune
|
||||||
@@ -598,16 +608,17 @@ bilinear
|
|||||||
bitcode
|
bitcode
|
||||||
bitsandbytes
|
bitsandbytes
|
||||||
bitwise
|
bitwise
|
||||||
|
Bitwise
|
||||||
blit
|
blit
|
||||||
bootloader
|
bootloader
|
||||||
boson
|
boson
|
||||||
bosons
|
bosons
|
||||||
br
|
br
|
||||||
|
BrainFloat
|
||||||
btn
|
btn
|
||||||
buildable
|
buildable
|
||||||
bursty
|
bursty
|
||||||
bzip
|
bzip
|
||||||
cTDP
|
|
||||||
cacheable
|
cacheable
|
||||||
carveout
|
carveout
|
||||||
cd
|
cd
|
||||||
@@ -622,7 +633,6 @@ cmd
|
|||||||
coalescable
|
coalescable
|
||||||
codename
|
codename
|
||||||
collater
|
collater
|
||||||
comfyui
|
|
||||||
comgr
|
comgr
|
||||||
compat
|
compat
|
||||||
completers
|
completers
|
||||||
@@ -639,18 +649,16 @@ copyable
|
|||||||
cpp
|
cpp
|
||||||
csn
|
csn
|
||||||
cuBLAS
|
cuBLAS
|
||||||
|
cuda
|
||||||
cuDNN
|
cuDNN
|
||||||
|
cudnn
|
||||||
cuFFT
|
cuFFT
|
||||||
cuLIB
|
cuLIB
|
||||||
cuRAND
|
cuRAND
|
||||||
cuSOLVER
|
cuSOLVER
|
||||||
cuSPARSE
|
cuSPARSE
|
||||||
cuda
|
|
||||||
cudnn
|
|
||||||
customizations
|
customizations
|
||||||
dGPU
|
cTDP
|
||||||
dGPUs
|
|
||||||
da
|
|
||||||
dataset
|
dataset
|
||||||
datasets
|
datasets
|
||||||
dataspace
|
dataspace
|
||||||
@@ -660,9 +668,8 @@ datatypes
|
|||||||
dbgapi
|
dbgapi
|
||||||
de
|
de
|
||||||
deallocation
|
deallocation
|
||||||
debian
|
|
||||||
debuggability
|
debuggability
|
||||||
decompositions
|
debian
|
||||||
deepseek
|
deepseek
|
||||||
denoise
|
denoise
|
||||||
denoised
|
denoised
|
||||||
@@ -677,13 +684,10 @@ devicelibs
|
|||||||
devsel
|
devsel
|
||||||
dgl
|
dgl
|
||||||
dimensionality
|
dimensionality
|
||||||
disaggregated
|
|
||||||
disambiguates
|
disambiguates
|
||||||
distro
|
distro
|
||||||
distros
|
distros
|
||||||
dkms
|
dkms
|
||||||
dnf
|
|
||||||
dropless
|
|
||||||
dtype
|
dtype
|
||||||
eb
|
eb
|
||||||
el
|
el
|
||||||
@@ -696,14 +700,10 @@ endpgm
|
|||||||
enqueue
|
enqueue
|
||||||
env
|
env
|
||||||
epilog
|
epilog
|
||||||
etcd
|
|
||||||
etcetera
|
etcetera
|
||||||
ethernet
|
ethernet
|
||||||
exascale
|
exascale
|
||||||
executables
|
executables
|
||||||
fam
|
|
||||||
fam
|
|
||||||
fas
|
|
||||||
ffmpeg
|
ffmpeg
|
||||||
filesystem
|
filesystem
|
||||||
forEach
|
forEach
|
||||||
@@ -712,7 +712,6 @@ fp
|
|||||||
framebuffer
|
framebuffer
|
||||||
gRPC
|
gRPC
|
||||||
galb
|
galb
|
||||||
gb
|
|
||||||
gcc
|
gcc
|
||||||
gdb
|
gdb
|
||||||
gemm
|
gemm
|
||||||
@@ -725,15 +724,14 @@ globals
|
|||||||
gnupg
|
gnupg
|
||||||
gpu
|
gpu
|
||||||
grayscale
|
grayscale
|
||||||
gre
|
|
||||||
gx
|
gx
|
||||||
gzip
|
gzip
|
||||||
heterogenous
|
heterogenous
|
||||||
hipBLAS
|
hipBLAS
|
||||||
hipBLASLt
|
hipBLASLt
|
||||||
hipBLASLt's
|
hipBLASLt's
|
||||||
|
hipblaslt
|
||||||
hipCUB
|
hipCUB
|
||||||
hipDataType
|
|
||||||
hipFFT
|
hipFFT
|
||||||
hipFORT
|
hipFORT
|
||||||
hipLIB
|
hipLIB
|
||||||
@@ -744,12 +742,10 @@ hipSPARSELt
|
|||||||
hipTensor
|
hipTensor
|
||||||
hipamd
|
hipamd
|
||||||
hipblas
|
hipblas
|
||||||
hipblaslt
|
|
||||||
hipcc
|
hipcc
|
||||||
hipcub
|
hipcub
|
||||||
hipfft
|
hipfft
|
||||||
hipfort
|
hipfort
|
||||||
hipification
|
|
||||||
hipify
|
hipify
|
||||||
hipsolver
|
hipsolver
|
||||||
hipsparse
|
hipsparse
|
||||||
@@ -758,10 +754,8 @@ hostname
|
|||||||
hotspotting
|
hotspotting
|
||||||
hpc
|
hpc
|
||||||
hpp
|
hpp
|
||||||
href
|
|
||||||
hsa
|
hsa
|
||||||
hsakmt
|
hsakmt
|
||||||
hx
|
|
||||||
hyperparameter
|
hyperparameter
|
||||||
hyperparameters
|
hyperparameters
|
||||||
iDRAC
|
iDRAC
|
||||||
@@ -775,9 +769,7 @@ init
|
|||||||
initializer
|
initializer
|
||||||
inlining
|
inlining
|
||||||
installable
|
installable
|
||||||
instrSize
|
|
||||||
interop
|
interop
|
||||||
interpolators
|
|
||||||
interprocedural
|
interprocedural
|
||||||
intra
|
intra
|
||||||
intrinsics
|
intrinsics
|
||||||
@@ -804,7 +796,6 @@ lm
|
|||||||
localscratch
|
localscratch
|
||||||
logits
|
logits
|
||||||
lossy
|
lossy
|
||||||
lp
|
|
||||||
macOS
|
macOS
|
||||||
matchers
|
matchers
|
||||||
maxtext
|
maxtext
|
||||||
@@ -821,21 +812,23 @@ mjx
|
|||||||
mkdir
|
mkdir
|
||||||
mlirmiopen
|
mlirmiopen
|
||||||
mtypes
|
mtypes
|
||||||
mul
|
|
||||||
mutex
|
mutex
|
||||||
mvffr
|
mvffr
|
||||||
namespace
|
namespace
|
||||||
namespaces
|
namespaces
|
||||||
nanoGPT
|
nanoGPT
|
||||||
|
NCS
|
||||||
|
NOP
|
||||||
|
NVLink
|
||||||
num
|
num
|
||||||
numref
|
numref
|
||||||
ocl
|
ocl
|
||||||
ol
|
|
||||||
opencl
|
opencl
|
||||||
opencv
|
opencv
|
||||||
openmp
|
openmp
|
||||||
openssl
|
openssl
|
||||||
optimizers
|
optimizers
|
||||||
|
ol
|
||||||
os
|
os
|
||||||
oversubscription
|
oversubscription
|
||||||
pageable
|
pageable
|
||||||
@@ -846,11 +839,9 @@ param
|
|||||||
parameterization
|
parameterization
|
||||||
passthrough
|
passthrough
|
||||||
pe
|
pe
|
||||||
perf
|
|
||||||
perfcounter
|
perfcounter
|
||||||
performant
|
performant
|
||||||
perl
|
perl
|
||||||
pkgman
|
|
||||||
pragma
|
pragma
|
||||||
pre
|
pre
|
||||||
prebuild
|
prebuild
|
||||||
@@ -880,6 +871,8 @@ pseudorandom
|
|||||||
px
|
px
|
||||||
py
|
py
|
||||||
pytorch
|
pytorch
|
||||||
|
recommender
|
||||||
|
recommenders
|
||||||
quantile
|
quantile
|
||||||
quantizer
|
quantizer
|
||||||
quasirandom
|
quasirandom
|
||||||
@@ -891,10 +884,8 @@ radeon
|
|||||||
rccl
|
rccl
|
||||||
rdc
|
rdc
|
||||||
rdma
|
rdma
|
||||||
reStructuredText
|
|
||||||
recommender
|
|
||||||
recommenders
|
|
||||||
redhat
|
redhat
|
||||||
|
reStructuredText
|
||||||
redirections
|
redirections
|
||||||
refactorization
|
refactorization
|
||||||
reformats
|
reformats
|
||||||
@@ -908,6 +899,7 @@ rescaling
|
|||||||
reusability
|
reusability
|
||||||
rhel
|
rhel
|
||||||
rl
|
rl
|
||||||
|
RLHF
|
||||||
roadmap
|
roadmap
|
||||||
roc
|
roc
|
||||||
rocAL
|
rocAL
|
||||||
@@ -934,8 +926,8 @@ rocm
|
|||||||
rocminfo
|
rocminfo
|
||||||
rocprim
|
rocprim
|
||||||
rocprof
|
rocprof
|
||||||
rocprofiler
|
|
||||||
rocprofv
|
rocprofv
|
||||||
|
rocprofiler
|
||||||
rocr
|
rocr
|
||||||
rocrand
|
rocrand
|
||||||
rocsolver
|
rocsolver
|
||||||
@@ -945,8 +937,8 @@ roctracer
|
|||||||
rst
|
rst
|
||||||
runtime
|
runtime
|
||||||
runtimes
|
runtimes
|
||||||
rx
|
|
||||||
ryzen
|
ryzen
|
||||||
|
ResNet
|
||||||
sL
|
sL
|
||||||
scalability
|
scalability
|
||||||
scalable
|
scalable
|
||||||
@@ -961,7 +953,6 @@ sglang
|
|||||||
shader
|
shader
|
||||||
sharding
|
sharding
|
||||||
sigmoid
|
sigmoid
|
||||||
simd
|
|
||||||
sles
|
sles
|
||||||
sm
|
sm
|
||||||
smi
|
smi
|
||||||
@@ -982,7 +973,6 @@ submodule
|
|||||||
submodules
|
submodules
|
||||||
subnet
|
subnet
|
||||||
supercomputing
|
supercomputing
|
||||||
suse
|
|
||||||
symlink
|
symlink
|
||||||
symlinks
|
symlinks
|
||||||
sys
|
sys
|
||||||
@@ -992,7 +982,6 @@ td
|
|||||||
tensorfloat
|
tensorfloat
|
||||||
tf
|
tf
|
||||||
th
|
th
|
||||||
threadgroups
|
|
||||||
tokenization
|
tokenization
|
||||||
tokenize
|
tokenize
|
||||||
tokenized
|
tokenized
|
||||||
@@ -1002,21 +991,17 @@ toolchain
|
|||||||
toolchains
|
toolchains
|
||||||
toolset
|
toolset
|
||||||
toolsets
|
toolsets
|
||||||
torchaudio
|
|
||||||
torchrec
|
|
||||||
torchserve
|
|
||||||
torchtext
|
|
||||||
torchtitan
|
torchtitan
|
||||||
torchvision
|
torchvision
|
||||||
tp
|
tp
|
||||||
tqdm
|
tqdm
|
||||||
tracebacks
|
tracebacks
|
||||||
txt
|
txt
|
||||||
|
TopK
|
||||||
uarch
|
uarch
|
||||||
ubuntu
|
ubuntu
|
||||||
udev
|
|
||||||
uncacheable
|
|
||||||
uncached
|
uncached
|
||||||
|
uncacheable
|
||||||
uncorrectable
|
uncorrectable
|
||||||
underoptimized
|
underoptimized
|
||||||
unhandled
|
unhandled
|
||||||
@@ -1025,11 +1010,12 @@ unmapped
|
|||||||
unsqueeze
|
unsqueeze
|
||||||
unstacking
|
unstacking
|
||||||
unswitching
|
unswitching
|
||||||
untar
|
|
||||||
untrusted
|
untrusted
|
||||||
untuned
|
untuned
|
||||||
unwindowed
|
|
||||||
upvote
|
upvote
|
||||||
|
USM
|
||||||
|
UTCL
|
||||||
|
UTIL
|
||||||
utils
|
utils
|
||||||
vL
|
vL
|
||||||
variational
|
variational
|
||||||
@@ -1041,7 +1027,6 @@ vectorized
|
|||||||
vectorizer
|
vectorizer
|
||||||
vectorizes
|
vectorizes
|
||||||
verl
|
verl
|
||||||
verl's
|
|
||||||
virtualize
|
virtualize
|
||||||
virtualized
|
virtualized
|
||||||
vjxb
|
vjxb
|
||||||
@@ -1060,14 +1045,9 @@ writeback
|
|||||||
writebacks
|
writebacks
|
||||||
wrreq
|
wrreq
|
||||||
wzo
|
wzo
|
||||||
xDiT
|
xargs
|
||||||
xGMI
|
xGMI
|
||||||
xPacked
|
xPacked
|
||||||
xargs
|
|
||||||
xcc
|
|
||||||
xdit
|
|
||||||
xt
|
|
||||||
xtx
|
|
||||||
xz
|
xz
|
||||||
yaml
|
yaml
|
||||||
ysvmadyb
|
ysvmadyb
|
||||||
|
|||||||
@@ -26,16 +26,10 @@ source software compilers, debuggers, and libraries. ROCm is fully integrated in
|
|||||||
|
|
||||||
## Getting and Building ROCm from Source
|
## Getting and Building ROCm from Source
|
||||||
|
|
||||||
Please use [TheRock](https://github.com/ROCm/TheRock) build system to build ROCm from source.
|
Please use [TheRock](https://github.com/ROCm/TheRock/tree/release/therock-7.9) build system to build ROCm from source.
|
||||||
|
|
||||||
## ROCm documentation
|
## ROCm documentation
|
||||||
|
|
||||||
This repository contains the [manifest file](https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md)
|
|
||||||
for ROCm releases, changelogs, and release information.
|
|
||||||
|
|
||||||
The `default.xml` file contains information for all repositories and the associated commit used to build
|
|
||||||
the current ROCm release; `default.xml` uses the [Manifest Format repository](https://gerrit.googlesource.com/git-repo/).
|
|
||||||
|
|
||||||
Source code for our documentation is located in the `/docs` folder of most ROCm repositories. The
|
Source code for our documentation is located in the `/docs` folder of most ROCm repositories. The
|
||||||
`develop` branch of our repositories contains content for the next ROCm release.
|
`develop` branch of our repositories contains content for the next ROCm release.
|
||||||
|
|
||||||
|
|||||||
2087
RELEASE.md
67
default.xml
@@ -1,67 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<manifest>
|
|
||||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
|
||||||
<default revision="refs/tags/rocm-7.0.2"
|
|
||||||
remote="rocm-org"
|
|
||||||
sync-c="true"
|
|
||||||
sync-j="4" />
|
|
||||||
<!--list of projects for ROCm-->
|
|
||||||
<project name="ROCK-Kernel-Driver" />
|
|
||||||
<project name="ROCR-Runtime" />
|
|
||||||
<project name="amdsmi" />
|
|
||||||
<project name="aqlprofile" />
|
|
||||||
<project name="rdc" />
|
|
||||||
<project name="rocm_bandwidth_test" />
|
|
||||||
<project name="rocm_smi_lib" />
|
|
||||||
<project name="rocm-core" />
|
|
||||||
<project name="rocm-examples" />
|
|
||||||
<project name="rocminfo" />
|
|
||||||
<project name="rocprofiler" />
|
|
||||||
<project name="rocprofiler-register" />
|
|
||||||
<project name="rocprofiler-sdk" />
|
|
||||||
<project name="rocprofiler-compute" />
|
|
||||||
<project name="rocprofiler-systems" />
|
|
||||||
<project name="roctracer" />
|
|
||||||
<!--HIP Projects-->
|
|
||||||
<project name="hip" />
|
|
||||||
<project name="hip-tests" />
|
|
||||||
<project name="HIPIFY" />
|
|
||||||
<project name="clr" />
|
|
||||||
<project name="hipother" />
|
|
||||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
|
||||||
<project name="half" />
|
|
||||||
<project name="llvm-project" />
|
|
||||||
<project name="spirv-llvm-translator" />
|
|
||||||
<!-- gdb projects -->
|
|
||||||
<project name="ROCdbgapi" />
|
|
||||||
<project name="ROCgdb" />
|
|
||||||
<project name="rocr_debug_agent" />
|
|
||||||
<!-- ROCm Libraries -->
|
|
||||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
|
||||||
<project groups="mathlibs" name="MIVisionX" />
|
|
||||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
|
||||||
<project groups="mathlibs" name="composable_kernel" />
|
|
||||||
<project groups="mathlibs" name="hipTensor" />
|
|
||||||
<project groups="mathlibs" name="hipfort" />
|
|
||||||
<project groups="mathlibs" name="rccl" />
|
|
||||||
<project groups="mathlibs" name="rocAL" />
|
|
||||||
<project groups="mathlibs" name="rocALUTION" />
|
|
||||||
<project groups="mathlibs" name="rocDecode" />
|
|
||||||
<project groups="mathlibs" name="rocJPEG" />
|
|
||||||
<!-- The following components have been migrated to rocm-libraries:
|
|
||||||
hipBLAS-common hipBLAS hipBLASLt hipCUB
|
|
||||||
hipFFT hipRAND hipSPARSE hipSPARSELt
|
|
||||||
MIOpen rocBLAS rocFFT rocPRIM rocRAND
|
|
||||||
rocSPARSE rocThrust Tensile -->
|
|
||||||
<project groups="mathlibs" name="rocm-libraries" />
|
|
||||||
<project groups="mathlibs" name="rocPyDecode" />
|
|
||||||
<project groups="mathlibs" name="rocSHMEM" />
|
|
||||||
<project groups="mathlibs" name="rocWMMA" />
|
|
||||||
<project groups="mathlibs" name="rocm-cmake" />
|
|
||||||
<project groups="mathlibs" name="rpp" />
|
|
||||||
<project groups="mathlibs" name="TransferBench" />
|
|
||||||
<!-- Projects for OpenMP-Extras -->
|
|
||||||
<project name="aomp" path="openmp-extras/aomp" />
|
|
||||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
|
||||||
<project name="flang" path="openmp-extras/flang" />
|
|
||||||
</manifest>
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
****************************************
|
|
||||||
ROCm |ROCM_VERSION| compatibility matrix
|
|
||||||
****************************************
|
|
||||||
|
|
||||||
To plan your ROCm |ROCM_VERSION| installation, use the following selector to
|
|
||||||
view ROCm compatibility and system requirements information for your AMD
|
|
||||||
hardware configuration. For installation instructions, see
|
|
||||||
:doc:`/install/rocm`.
|
|
||||||
|
|
||||||
.. include:: ./includes/selector.rst
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
Hardware, software, and firmware requirements
|
|
||||||
=============================================
|
|
||||||
|
|
||||||
ROCm depends on a coordinated stack of compatible firmware, driver, and user
|
|
||||||
space components. Maintaining version alignment between these layers ensures
|
|
||||||
expected GPU operation and performance, especially for AMD data center products.
|
|
||||||
Future preview releases will expand hardware and operating system coverage.
|
|
||||||
|
|
||||||
ROCm 7.11.0 enables support for primarily compute workloads. Future releases
|
|
||||||
will support mixed workloads (compute and graphics).
|
|
||||||
|
|
||||||
.. selected:: os=ubuntu os=rhel os=sles
|
|
||||||
|
|
||||||
.. selected:: fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
If you’re interested in testing AMD Radeon GPUs with preview support for
|
|
||||||
graphics use cases with AMD ROCm 7.11.0, install Radeon Software for Linux
|
|
||||||
version 25.35 from `Linux Drivers for AMD Radeon and Radeon PRO
|
|
||||||
Graphics <https://www.amd.com/en/support/download/linux-drivers.html>`__.
|
|
||||||
|
|
||||||
.. selected:: fam=ryzen
|
|
||||||
|
|
||||||
If you're interested in testing AMD Ryzen APUs with preview support for
|
|
||||||
graphics use cases with AMD ROCm 7.11.0, use the inbox graphics drivers of
|
|
||||||
Ubuntu 24.04.3.
|
|
||||||
|
|
||||||
.. include:: ./includes/system-instinct.rst
|
|
||||||
|
|
||||||
.. include:: ./includes/system-radeon-pro.rst
|
|
||||||
|
|
||||||
.. include:: ./includes/system-radeon.rst
|
|
||||||
|
|
||||||
.. include:: ./includes/system-ryzen.rst
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
.. _rocm-compat-frameworks:
|
|
||||||
|
|
||||||
Deep learning frameworks
|
|
||||||
========================
|
|
||||||
|
|
||||||
ROCm |ROCM_VERSION| provides optimized support for popular deep learning
|
|
||||||
frameworks. The following table lists supported frameworks and their supported
|
|
||||||
versions.
|
|
||||||
|
|
||||||
.. _rocm-compat-pytorch:
|
|
||||||
|
|
||||||
.. matrix::
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Framework
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct fam=ryzen
|
|
||||||
|
|
||||||
.. matrix-cell:: PyTorch
|
|
||||||
|
|
||||||
.. matrix-cell:: 2.9.1, 2.8.0, 2.7.1
|
|
||||||
:show-when: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
|
||||||
|
|
||||||
.. matrix-cell:: 2.9.1
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=radeon fam=radeon-pro
|
|
||||||
|
|
||||||
.. matrix-cell:: PyTorch
|
|
||||||
|
|
||||||
.. matrix-cell:: 2.9.1
|
|
||||||
|
|
||||||
For installation instructions, see :ref:`pip-install-pytorch`.
|
|
||||||
|
|
||||||
.. _rocm-compat-python:
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
ROCm |ROCM_VERSION| is compatible with Python versions 3.11, 3.12, and
|
|
||||||
3.13.
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
ROCm Core SDK components
|
|
||||||
========================
|
|
||||||
|
|
||||||
The following table lists core components included in the ROCm |ROCM_VERSION|
|
|
||||||
release. Expect future releases in this stream to expand the list of
|
|
||||||
components.
|
|
||||||
|
|
||||||
.. include:: ./includes/core-sdk-components-linux.rst
|
|
||||||
|
|
||||||
.. include:: ./includes/core-sdk-components-windows.rst
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
.. include:: ./includes/virtualization-instinct.rst
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Component group
|
|
||||||
|
|
||||||
.. matrix-cell:: Component name
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Math and compute libraries
|
|
||||||
:rowspan: 18
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`Composable Kernel <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/composablekernel>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipBLAS <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipblas>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipBLASLt <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipblaslt>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipCUB <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipcub>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipFFT <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipfft>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipRAND <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hiprand>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipSOLVER <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipsolver>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipSPARSE <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipsparse>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipSPARSELt <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipsparselt>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`MIOpen <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/miopen>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocBLAS <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocblas>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocFFT <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocfft>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocPRIM <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocprim>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocRAND <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocrand>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocSOLVER <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocsolver>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocSPARSE <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocsparse>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocThrust <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocthrust>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocWMMA <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocwmma>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Communication librarires
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`RCCL <https://github.com/ROCm/rccl/tree/release/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Support libraries
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCm CMake <https://github.com/ROCm/rocm-cmake/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Runtimes and compilers
|
|
||||||
:rowspan: 5
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell:: Runtimes and compilers
|
|
||||||
:rowspan: 4
|
|
||||||
:show-when: fam=ryzen
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`HIP <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/hip>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`HIPIFY <https://github.com/ROCm/HIPIFY/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`LLVM <https://github.com/ROCm/llvm-project/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCr Runtime <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocr-runtime>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`SPIRV-LLVM-Translator <https://github.com/ROCm/SPIRV-LLVM-Translator/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Profiling and debugging tools
|
|
||||||
:rowspan: 6
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
.. matrix-cell:: Profiling and debugging tools
|
|
||||||
:rowspan: 4
|
|
||||||
:show-when: fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
`ROCm Compute Profiler (rocprofiler-compute) <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocprofiler-compute>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
`ROCprofiler-SDK <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocprofiler-sdk>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCm Systems Profiler (rocprofiler-systems) <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocprofiler-systems>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCprofiler-SDK <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocprofiler-sdk>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCdbgapi <https://github.com/ROCm/ROCdbgapi/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCm Debugger (ROCgdb) <https://github.com/ROCm/ROCgdb/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCr Debug Agent <https://github.com/ROCm/rocr_debug_agent/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Control and monitoring tools
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
|
||||||
|
|
||||||
`AMD SMI <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/amdsmi>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocminfo <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/rocminfo>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: System validation tools
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCm Bandwidth Test <https://github.com/ROCm/rocm_bandwidth_test>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`TransferBench <https://github.com/ROCm/TransferBench>`__
|
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Component group
|
|
||||||
|
|
||||||
.. matrix-cell:: Component name
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Math and compute libraries
|
|
||||||
:rowspan: 17
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`Composable Kernel <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/composablekernel>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipBLAS <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipblas>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipBLASLt <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipblaslt>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipCUB <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipcub>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipFFT <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipfft>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipRAND <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocsolver>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipSOLVER <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipsolver>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`hipSPARSE <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/hipsparse>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`MIOpen <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/miopen>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocBLAS <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocblas>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocFFT <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocfft>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocPRIM <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocprim>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocRAND <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocrand>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocSOLVER <https://github.com/ROCm/rocm-libraries/tree/therock-7.9.0/projects/rocsolver>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocSPARSE <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocsparse>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocThrust <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocthrust>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`rocWMMA <https://github.com/ROCm/rocm-libraries/tree/release/therock-7.11/projects/rocwmma>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Support libraries
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`ROCm CMake <https://github.com/ROCm/rocm-cmake/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Runtimes and compilers
|
|
||||||
:rowspan: 3
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`HIP <https://github.com/ROCm/rocm-systems/tree/release/therock-7.11/projects/hip>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`HIPIFY <https://github.com/ROCm/HIPIFY/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`LLVM <https://github.com/ROCm/llvm-project/tree/release/therock-7.11>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Control and monitoring tools
|
|
||||||
|
|
||||||
.. matrix-cell:: hipinfo
|
|
||||||
@@ -1,357 +0,0 @@
|
|||||||
.. =========================================================== GPU/APU FAMILY ==
|
|
||||||
|
|
||||||
.. selector:: AMD device family
|
|
||||||
:key: fam
|
|
||||||
|
|
||||||
.. selector-option:: Instinct
|
|
||||||
:value: instinct
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Radeon PRO
|
|
||||||
:value: radeon-pro
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Radeon
|
|
||||||
:value: radeon
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Ryzen AI
|
|
||||||
:value: ryzen
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
|
|
||||||
.. ================================================================ GPU / APU ==
|
|
||||||
|
|
||||||
.. selector:: Instinct GPU
|
|
||||||
:key: gpu
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
.. selector-info:: https://www.amd.com/en/products/accelerators/instinct.html
|
|
||||||
|
|
||||||
.. selector-option:: MI355X
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI350X
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI325X
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI300X
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI300A
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI250X
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI250
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: MI210
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector:: Radeon PRO GPU
|
|
||||||
:key: gpu
|
|
||||||
:show-when: fam=radeon-pro
|
|
||||||
|
|
||||||
.. selector-info:: https://www.amd.com/en/products/graphics/workstations.html
|
|
||||||
|
|
||||||
.. selector-option:: AI PRO R9700
|
|
||||||
:value: ai-r9700
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: AI PRO R9600D
|
|
||||||
:value: ai-r9600d
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: W7900 Dual Slot
|
|
||||||
:value: w7900-dual-slot
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: W7900
|
|
||||||
:value: w7900
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: W7800 48GB
|
|
||||||
:value: w7800-48gb
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: W7800
|
|
||||||
:value: w7800
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: W7700
|
|
||||||
:value: w7700
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: V710
|
|
||||||
:value: v710
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector:: Radeon GPU
|
|
||||||
:key: gpu
|
|
||||||
:show-when: fam=radeon
|
|
||||||
|
|
||||||
.. selector-info:: https://www.amd.com/en/products/graphics/desktops/radeon.html
|
|
||||||
|
|
||||||
.. selector-option:: RX 9070 XT
|
|
||||||
:value: rx-9070-xt
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 9070 GRE
|
|
||||||
:value: rx-9070-gre
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 9070
|
|
||||||
:value: rx-9070
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 9060 XT LP
|
|
||||||
:value: rx-9060-xt-lp
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 9060 XT
|
|
||||||
:value: rx-9060-xt
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 9060
|
|
||||||
:value: rx-9060
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7900 XTX
|
|
||||||
:value: rx-7900-xtx
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7900 XT
|
|
||||||
:value: rx-7900-xt
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7900 GRE
|
|
||||||
:value: rx-7900-gre
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7800 XT
|
|
||||||
:value: rx-7800-xt
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7700 XT
|
|
||||||
:value: rx-7700-xt
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RX 7700
|
|
||||||
:value: rx-7700
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector:: Ryzen AI APU
|
|
||||||
:key: gpu
|
|
||||||
:show-when: fam=ryzen
|
|
||||||
|
|
||||||
.. selector-info:: https://www.amd.com/en/products/processors/workstations/mobile.html
|
|
||||||
|
|
||||||
.. selector-option:: Max+ PRO 395
|
|
||||||
:value: max-pro-395
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Max PRO 390
|
|
||||||
:value: max-pro-390
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Max PRO 385
|
|
||||||
:value: max-pro-385
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Max PRO 380
|
|
||||||
:value: max-pro-380
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Max+ 395
|
|
||||||
:value: max-395
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
.. selector-option:: Max 390
|
|
||||||
:value: max-390
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
.. selector-option:: Max 385
|
|
||||||
:value: max-385
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
.. selector-option:: 9 HX 375
|
|
||||||
:value: 9-hx-375
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
.. selector-option:: 9 HX 370
|
|
||||||
:value: 9-hx-370
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
.. selector-option:: 9 365
|
|
||||||
:value: 9-365
|
|
||||||
:width: 2
|
|
||||||
|
|
||||||
|
|
||||||
.. ========================================================= OPERATING SYSTEM ==
|
|
||||||
|
|
||||||
.. selected:: fam=instinct
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 20%
|
|
||||||
|
|
||||||
.. selector-option:: Debian
|
|
||||||
:value: debian
|
|
||||||
:width: 20%
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 20%
|
|
||||||
|
|
||||||
.. selector-option:: Oracle Linux
|
|
||||||
:value: oracle-linux
|
|
||||||
:width: 20%
|
|
||||||
|
|
||||||
.. selector-option:: SLES
|
|
||||||
:value: sles
|
|
||||||
:width: 20%
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=mi300x
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: Debian
|
|
||||||
:value: debian
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: Oracle Linux
|
|
||||||
:value: oracle-linux
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: Rocky Linux
|
|
||||||
:value: rocky-linux
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: SLES
|
|
||||||
:value: sles
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=mi300a
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: Rocky Linux
|
|
||||||
:value: rocky-linux
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector-option:: SLES
|
|
||||||
:value: sles
|
|
||||||
:width: 3
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: SLES
|
|
||||||
:value: sles
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selected:: fam=radeon-pro
|
|
||||||
|
|
||||||
.. selector:: Operating system
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=ai-r9700 gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=w6800
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: Windows
|
|
||||||
:value: windows
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=v710 gpu=ai-r9600d
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selected:: fam=radeon
|
|
||||||
|
|
||||||
.. selector:: Linux distribution
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=rx-9070-xt gpu=rx-9070-gre gpu=rx-9070 gpu=rx-9060-xt-lp gpu=rx-9060-xt gpu=rx-9060
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selector:: Operating system
|
|
||||||
:key: os
|
|
||||||
:show-when: gpu=rx-7900-xtx gpu=rx-7900-xt gpu=rx-7900-gre gpu=rx-7800-xt gpu=rx-7700-xt gpu=rx-7700
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: RHEL
|
|
||||||
:value: rhel
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector-option:: Windows
|
|
||||||
:value: windows
|
|
||||||
:width: 4
|
|
||||||
|
|
||||||
.. selector:: Operating system
|
|
||||||
:key: os
|
|
||||||
:show-when: fam=ryzen
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selector-option:: Windows
|
|
||||||
:value: windows
|
|
||||||
:width: 6
|
|
||||||
@@ -1,209 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: fam=instinct
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<colgroup style="width: 50%;">
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: AMD GPU series
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x
|
|
||||||
|
|
||||||
`AMD Instinct MI350 Series <https://www.amd.com/en/products/accelerators/instinct/mi350.html>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi325x gpu=mi300x gpu=mi300a
|
|
||||||
|
|
||||||
`AMD Instinct MI300 Series <https://www.amd.com/en/products/accelerators/instinct/mi300.html>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
`AMD Instinct MI200 Series <https://www.amd.com/en/products/accelerators/instinct/mi200.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Architecture
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: CDNA 4
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x
|
|
||||||
|
|
||||||
.. matrix-cell:: CDNA 3
|
|
||||||
:show-when: gpu=mi325x gpu=mi300x gpu=mi300a
|
|
||||||
|
|
||||||
.. matrix-cell:: CDNA 2
|
|
||||||
:show-when: gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: LLVM target
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx950
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx942
|
|
||||||
:show-when: gpu=mi325x gpu=mi300x gpu=mi300a
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx90a
|
|
||||||
:show-when: gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Ubuntu versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
Ubuntu 24.04.3 (GA kernel: 6.8)
|
|
||||||
|
|
||||||
Ubuntu 22.04.5 (GA kernel: 5.15)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=rhel
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Red Hat Enterprise Linux versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi325x
|
|
||||||
|
|
||||||
RHEL 10.1 (kernel: 6.12.0-124)
|
|
||||||
|
|
||||||
RHEL 10.0 (kernel: 6.12.0-55)
|
|
||||||
|
|
||||||
RHEL 9.7 (kernel: 5.14.0-611)
|
|
||||||
|
|
||||||
RHEL 9.6 (kernel: 5.14.0-570)
|
|
||||||
|
|
||||||
RHEL 9.4 (kernel: 5.14.0-427)
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
RHEL 10.1 (kernel: 6.12.0-124)
|
|
||||||
|
|
||||||
RHEL 10.0 (kernel: 6.12.0-55)
|
|
||||||
|
|
||||||
RHEL 9.7 (kernel: 5.14.0-611)
|
|
||||||
|
|
||||||
RHEL 9.6 (kernel: 5.14.0-570)
|
|
||||||
|
|
||||||
RHEL 9.4 (kernel: 5.14.0-427)
|
|
||||||
|
|
||||||
RHEL 8.10 (kernel: 4.18.0-553)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=debian
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Debian version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Debian 13 (kernel: 6.12)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=oracle-linux
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Oracle Linux versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
Oracle Linux 10 (kernel: UEK 8.1)
|
|
||||||
|
|
||||||
Oracle Linux 9 (kernel: UEK 8)
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi300x
|
|
||||||
|
|
||||||
Oracle Linux 10 (kernel: UEK 8.1)
|
|
||||||
|
|
||||||
Oracle Linux 9 (kernel: UEK 8)
|
|
||||||
|
|
||||||
Oracle Linux 8 (kernel: UEK 7)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=rocky-linux
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Rocky Linux versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi300x gpu=mi300a
|
|
||||||
|
|
||||||
Rocky Linux 9 (kernel: 5.14.0-570)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=sles
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported SUSE Linux Enterprise Server versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
SLES 16.0 (kernel: 6.12)
|
|
||||||
|
|
||||||
SLES 15.7 (kernel: 6.4.0-150700.51)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported AMD GPU Driver (amdgpu) versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`31.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/31.10.0-preview/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.0/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.2 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.2/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported PLDM bundle (firmware) versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x
|
|
||||||
|
|
||||||
01.25.16.03
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi325x
|
|
||||||
|
|
||||||
01.25.04.02
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi300x
|
|
||||||
|
|
||||||
01.25.03.12
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi300a
|
|
||||||
|
|
||||||
BKC 26.1
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi250x
|
|
||||||
|
|
||||||
IFWI 75 (or later)
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=mi250 gpu=mi210
|
|
||||||
|
|
||||||
Maintenance update 5 with IFWI 75 (or later)
|
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: fam=radeon-pro
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<colgroup style="width: 50%;">
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: AMD GPU series
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=ai-r9700 gpu=ai-r9600d
|
|
||||||
|
|
||||||
`AMD Radeon AI PRO R9000 Series <https://www.amd.com/en/products/graphics/workstations/radeon-ai-pro.html#tabs-95fa144b96-item-b95ec9e1ca-tab>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700
|
|
||||||
|
|
||||||
`AMD Radeon PRO W7000 Series <https://www.amd.com/en/products/graphics/workstations/radeon-pro.html#tabs-990fdead92-item-20daa37284-tab>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=w6800
|
|
||||||
|
|
||||||
`AMD Radeon PRO W6000 Series <https://www.amd.com/en/products/graphics/workstations/radeon-pro/w6800.html>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=v710 gpu=v620
|
|
||||||
|
|
||||||
`AMD Radeon PRO V Series <https://www.amd.com/en/products/accelerators/radeon-pro.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Architecture
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: RDNA 4
|
|
||||||
:show-when: gpu=ai-r9700 gpu=ai-r9600d
|
|
||||||
|
|
||||||
.. matrix-cell:: RDNA 3
|
|
||||||
:show-when: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=v710 gpu=w6800 gpu=v620
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: LLVM target
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1201
|
|
||||||
:show-when: gpu=ai-r9700 gpu=ai-r9600d
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1100
|
|
||||||
:show-when: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1101
|
|
||||||
:show-when: gpu=w7700 gpu=v710
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1030
|
|
||||||
:show-when: gpu=w6800 gpu=v620
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Ubuntu versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
24.04.3 (GA kernel: 6.8)
|
|
||||||
|
|
||||||
22.04.5 (GA kernel: 5.15)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=rhel
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported RHEL versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
10.1 (kernel: 6.12.0-124)
|
|
||||||
|
|
||||||
9.7 (kernel: 5.14.0-427)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Windows version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Windows 11 25H2
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu os=rhel
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported AMD GPU Driver (amdgpu) versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`31.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/31.10.0-preview/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.0/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.2 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.2/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Adrenalin Driver version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`26.1.1 <https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-26-1-1.html>`__
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: fam=radeon
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<colgroup style="width: 50%;">
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: AMD GPU series
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=rx-9070 gpu=rx-9070-gre gpu=rx-9070-xt gpu=rx-9060 gpu=rx-9060-xt gpu=rx-9060-xt-lp
|
|
||||||
|
|
||||||
`AMD Radeon RX 9000 Series <https://www.amd.com/en/products/graphics/desktops/radeon.html#tabs-ff9c5c3863-item-37fb38a236-tab>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=rx-7900-xtx gpu=rx-7900-xt gpu=rx-7900-gre gpu=rx-7800-xt gpu=rx-7700-xt gpu=rx-7700
|
|
||||||
|
|
||||||
`AMD Radeon RX 7000 Series <https://www.amd.com/en/products/graphics/desktops/radeon/7000-series.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Architecture
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: RDNA 4
|
|
||||||
:show-when: gpu=rx-9070-xt gpu=rx-9070-gre gpu=rx-9070 gpu=rx-9060-xt-lp gpu=rx-9060-xt gpu=rx-9060
|
|
||||||
|
|
||||||
.. matrix-cell:: RDNA 3
|
|
||||||
:show-when: gpu=rx-7900-xtx gpu=rx-7900-xt gpu=rx-7900-gre gpu=rx-7800-xt gpu=rx-7700-xt gpu=rx-7700
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: LLVM target
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1201
|
|
||||||
:show-when: gpu=rx-9070 gpu=rx-9070-gre gpu=rx-9070-xt
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1200
|
|
||||||
:show-when: gpu=rx-9060 gpu=rx-9060-xt gpu=rx-9060-xt-lp
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1100
|
|
||||||
:show-when: gpu=rx-7900-xtx gpu=rx-7900-xt gpu=rx-7900-gre
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1101
|
|
||||||
:show-when: gpu=rx-7800-xt gpu=rx-7700-xt gpu=rx-7700
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Ubuntu versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
24.04.3 (GA kernel: 6.8)
|
|
||||||
|
|
||||||
22.04.5 (GA kernel: 5.15)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=rhel
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported RHEL versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
10.1 (kernel: 6.12.0-124)
|
|
||||||
|
|
||||||
9.7 (kernel: 5.14.0-427)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Windows version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Windows 11 25H2
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu os=rhel
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported AMD GPU Driver (amdgpu) versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`31.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/31.10.0-preview/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.20.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.20.0/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.2 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.2/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.1 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10.1/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
`30.10.0 <https://instinct.docs.amd.com/projects/amdgpu-docs/en/docs-30.10/documentation/release-notes.html>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Adrenalin Driver version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`26.1.1 <https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-26-1-1.html>`__
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
.. matrix::
|
|
||||||
:show-when: fam=ryzen
|
|
||||||
|
|
||||||
.. matrix-head::
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<colgroup style="width: 50%;">
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: AMD APU series
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=max-pro-395 gpu=max-pro-390 gpu=max-pro-385 gpu=max-pro-380
|
|
||||||
|
|
||||||
`AMD Ryzen AI Max PRO 300 Series <https://www.amd.com/en/products/processors/workstations/mobile.html#tabs-7f0c432fb2-item-5116ab7a74-tab>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=max-395 gpu=max-390 gpu=max-385
|
|
||||||
|
|
||||||
`AMD Ryzen AI Max 300 Series <https://www.amd.com/en/products/processors/laptop/ryzen.html#tabs-1181ea0b44-item-6ccfea5f65-tab>`__
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
:show-when: gpu=9-hx-375 gpu=9-hx-370 gpu=9-365
|
|
||||||
|
|
||||||
`AMD Ryzen AI 300 Series <https://www.amd.com/en/products/processors/consumer/ryzen-ai.html#tabs-f556098628-item-54e149d850-tab>`__
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Graphics model (iGPU)
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Radeon 8060S
|
|
||||||
:show-when: gpu=max-pro-395 gpu=max-395
|
|
||||||
|
|
||||||
.. matrix-cell:: Radeon 8050S
|
|
||||||
:show-when: gpu=max-pro-390 gpu=max-pro-385 gpu=max-390 gpu=max-385
|
|
||||||
|
|
||||||
.. matrix-cell:: Radeon 8040S
|
|
||||||
:show-when: gpu=max-pro-380
|
|
||||||
|
|
||||||
.. matrix-cell:: Radeon 890M
|
|
||||||
:show-when: gpu=9-hx-375 gpu=9-hx-370
|
|
||||||
|
|
||||||
.. matrix-cell:: Radeon 880M
|
|
||||||
:show-when: gpu=9-365
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: Architecture
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: RDNA 3.5
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
|
|
||||||
.. matrix-cell:: LLVM target
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1151
|
|
||||||
:show-when: gpu=max-pro-395 gpu=max-pro-390 gpu=max-pro-385 gpu=max-pro-380 gpu=max-395 gpu=max-390 gpu=max-385
|
|
||||||
|
|
||||||
.. matrix-cell:: gfx1150
|
|
||||||
:show-when: gpu=9-hx-375 gpu=9-hx-370 gpu=9-365
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Ubuntu versions
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: 24.04.3 (HWE kernel: 6.14)
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Windows version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Windows 11 25H2
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=ubuntu
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported kernel driver version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Inbox kernel driver in Ubuntu 24.04.3
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: os=windows
|
|
||||||
|
|
||||||
.. matrix-cell:: Supported Adrenalin Driver version
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`26.1.1 <https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-26-1-1.html>`__
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
.. selected:: gpu=mi355x gpu=mi350x gpu=mi325x gpu=mi300x
|
|
||||||
:heading: GPU virtualization support
|
|
||||||
|
|
||||||
.. selected:: gpu=mi355x
|
|
||||||
|
|
||||||
AMD Instinct MI355X GPUs support the following virtualization
|
|
||||||
configurations.
|
|
||||||
Supported SR-IOV configurations require the GPU-IOV Module (GIM) driver
|
|
||||||
8.7.0K -- see the `AMD Instinct Virtualization Driver documentation
|
|
||||||
<https://instinct.docs.amd.com/projects/virt-drv/en/mainline-8.7.0.k/>`__ to
|
|
||||||
get started.
|
|
||||||
|
|
||||||
.. selected:: gpu=mi350x
|
|
||||||
|
|
||||||
AMD Instinct MI350X GPUs support the following virtualization
|
|
||||||
configurations.
|
|
||||||
Supported SR-IOV configurations require the GPU-IOV Module (GIM) driver
|
|
||||||
8.7.0K -- see the `AMD Instinct Virtualization Driver documentation
|
|
||||||
<https://instinct.docs.amd.com/projects/virt-drv/en/mainline-8.7.0.k/>`__ to
|
|
||||||
get started.
|
|
||||||
|
|
||||||
.. selected:: gpu=mi325x
|
|
||||||
|
|
||||||
AMD Instinct MI325X GPUs support the following virtualization
|
|
||||||
configurations.
|
|
||||||
Supported SR-IOV configurations require the GPU-IOV Module (GIM) driver
|
|
||||||
8.7.0K -- see the `AMD Instinct Virtualization Driver documentation
|
|
||||||
<https://instinct.docs.amd.com/projects/virt-drv/en/mainline-8.7.0.k/>`__ to
|
|
||||||
get started.
|
|
||||||
|
|
||||||
.. selected:: gpu=mi300x
|
|
||||||
|
|
||||||
AMD Instinct MI300X GPUs support the following virtualization
|
|
||||||
configurations.
|
|
||||||
Supported SR-IOV configurations require the GPU-IOV Module (GIM) driver
|
|
||||||
8.7.0K -- see the `AMD Instinct Virtualization Driver documentation
|
|
||||||
<https://instinct.docs.amd.com/projects/virt-drv/en/mainline-8.7.0.k/>`__ to
|
|
||||||
get started.
|
|
||||||
|
|
||||||
.. matrix::
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:header:
|
|
||||||
|
|
||||||
.. matrix-cell:: Hypervisor
|
|
||||||
|
|
||||||
.. matrix-cell:: Virtualization technology
|
|
||||||
|
|
||||||
.. matrix-cell:: Virtualization driver
|
|
||||||
|
|
||||||
.. matrix-cell:: Host OS
|
|
||||||
|
|
||||||
.. matrix-cell:: Guest OS
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x
|
|
||||||
|
|
||||||
.. matrix-cell:: KVM
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell:: Passthrough
|
|
||||||
|
|
||||||
.. matrix-cell:: —
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 24.04
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 24.04
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: gpu=mi325x
|
|
||||||
|
|
||||||
.. matrix-cell:: KVM
|
|
||||||
|
|
||||||
.. matrix-cell:: SR-IOV
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`GIM 8.7.0K <https://github.com/amd/MxGPU-Virtualization/releases/tag/8.7.0.K>`__
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 22.04
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 22.04
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: gpu=mi300x
|
|
||||||
|
|
||||||
.. matrix-cell:: KVM
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell:: Passthrough
|
|
||||||
|
|
||||||
.. matrix-cell:: —
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 22.04
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-cell:: Ubuntu 22.04
|
|
||||||
:rowspan: 2
|
|
||||||
|
|
||||||
.. matrix-row::
|
|
||||||
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x
|
|
||||||
|
|
||||||
.. matrix-cell:: SR-IOV
|
|
||||||
|
|
||||||
.. matrix-cell::
|
|
||||||
|
|
||||||
`GIM 8.7.0K <https://github.com/amd/MxGPU-Virtualization/releases/tag/8.7.0.K>`__
|
|
||||||
|
|
||||||
See the :ref:`release notes <release-virtualization-support>`
|
|
||||||
for the full list of supported configurations.
|
|
||||||
|
|
||||||
55
docs/conf.py
@@ -9,8 +9,8 @@ import shutil
|
|||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
ROCM_VERSION = "7.11.0"
|
ROCM_VERSION = "7.9.0"
|
||||||
GA_DATE = "2026-02-11"
|
GA_DATE = "2025-10-20"
|
||||||
|
|
||||||
DOCS_DIR = Path(__file__).parent.resolve()
|
DOCS_DIR = Path(__file__).parent.resolve()
|
||||||
ROOT_DIR = DOCS_DIR.parent
|
ROOT_DIR = DOCS_DIR.parent
|
||||||
@@ -102,40 +102,46 @@ html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "rocm.docs.amd.com")
|
|||||||
html_context = {}
|
html_context = {}
|
||||||
|
|
||||||
# configurations for PDF output by Read the Docs
|
# configurations for PDF output by Read the Docs
|
||||||
project = "ROCm documentation"
|
project = "ROCm Documentation"
|
||||||
project_path = str(DOCS_DIR).replace("\\", "/")
|
project_path = str(DOCS_DIR).replace("\\", "/")
|
||||||
author = "Advanced Micro Devices, Inc."
|
author = "Advanced Micro Devices, Inc."
|
||||||
copyright = "Copyright (c) %Y Advanced Micro Devices, Inc. All rights reserved."
|
copyright = "Copyright (c) %Y Advanced Micro Devices, Inc. All rights reserved."
|
||||||
version = ROCM_VERSION
|
version = ROCM_VERSION
|
||||||
release = ROCM_VERSION
|
release = ROCM_VERSION
|
||||||
setting_all_article_info = False
|
setting_all_article_info = True
|
||||||
all_article_info_os = ["linux", "windows"]
|
all_article_info_os = ["linux", "windows"]
|
||||||
all_article_info_author = ""
|
all_article_info_author = ""
|
||||||
|
|
||||||
# pages with specific settings
|
# pages with specific settings
|
||||||
article_pages = [
|
article_pages = [
|
||||||
{"file": "about/release-notes", "date": GA_DATE, "os": ["linux", "windows"]},
|
{"file": "about/release-notes", "date": GA_DATE},
|
||||||
]
|
]
|
||||||
|
|
||||||
external_toc_path = "./sphinx/_toc.yml"
|
external_toc_path = "./sphinx/_toc.yml"
|
||||||
|
|
||||||
# Register Sphinx extensions and static assets
|
# Register Sphinx extensions and static assets
|
||||||
sys.path.append(str(DOCS_DIR / "extension"))
|
sys.path.append(str(DOCS_DIR / "extension"))
|
||||||
|
|
||||||
|
# html_static_path = ["sphinx/static/css", "extension/how-to/rocm-for-ai/inference"]
|
||||||
|
# html_css_files = [
|
||||||
|
# "rocm_custom.css",
|
||||||
|
# "rocm_rn.css",
|
||||||
|
# "dynamic_picker.css",
|
||||||
|
# "vllm-benchmark.css",
|
||||||
|
# ]
|
||||||
|
templates_path = ["extension/rocm_docs_custom/templates", "extension/templates"]
|
||||||
|
|
||||||
extensions = [
|
extensions = [
|
||||||
"rocm_docs",
|
"rocm_docs",
|
||||||
"rocm_docs_custom.selector",
|
"rocm_docs_custom.selector",
|
||||||
"rocm_docs_custom.matrix",
|
"rocm_docs_custom.table",
|
||||||
"rocm_docs_custom.icon",
|
"rocm_docs_custom.icon",
|
||||||
# "sphinxcontrib.datatemplates",
|
|
||||||
# "sphinx_reredirects",
|
# "sphinx_reredirects",
|
||||||
# "sphinx_sitemap",
|
# "sphinx_sitemap",
|
||||||
|
# "sphinxcontrib.datatemplates",
|
||||||
# "version-ref",
|
# "version-ref",
|
||||||
# "csv-to-list-table",
|
# "csv-to-list-table",
|
||||||
]
|
]
|
||||||
templates_path = ["extension/rocm_docs_custom/templates"]
|
|
||||||
|
|
||||||
html_static_path = ["sphinx/static"]
|
|
||||||
html_js_files = ["setup-toc-install-headings.js"]
|
|
||||||
|
|
||||||
# compatibility_matrix_file = str(
|
# compatibility_matrix_file = str(
|
||||||
# DOCS_DIR / "compatibility/compatibility-matrix-historical-6.0.csv"
|
# DOCS_DIR / "compatibility/compatibility-matrix-historical-6.0.csv"
|
||||||
@@ -144,34 +150,17 @@ html_js_files = ["setup-toc-install-headings.js"]
|
|||||||
external_projects_current_project = "rocm"
|
external_projects_current_project = "rocm"
|
||||||
html_theme = "rocm_docs_theme"
|
html_theme = "rocm_docs_theme"
|
||||||
html_theme_options = {
|
html_theme_options = {
|
||||||
"announcement": f"This is ROCm {ROCM_VERSION} technology preview release documentation. For the latest production stream release, refer to <a id='rocm-banner' href='https://rocm.docs.amd.com/en/latest/'>ROCm documentation</a>.",
|
"flavor": "rocm-docs-home",
|
||||||
"flavor": "generic",
|
|
||||||
"header_title": f"ROCm™ {ROCM_VERSION} Preview",
|
|
||||||
"header_link": f"https://rocm.docs.amd.com/en/{ROCM_VERSION}-preview/index.html",
|
|
||||||
"version_list_link": f"https://rocm.docs.amd.com/en/{ROCM_VERSION}-preview/release/versions.html",
|
|
||||||
"nav_secondary_items": {
|
|
||||||
"GitHub": "https://github.com/ROCm/ROCm",
|
|
||||||
"Community": "https://github.com/ROCm/ROCm/discussions",
|
|
||||||
"Blogs": "https://rocm.blogs.amd.com/",
|
|
||||||
"System and Infra Docs": "https://instinct.docs.amd.com/",
|
|
||||||
"Support": "https://github.com/ROCm/ROCm/issues/new/choose",
|
|
||||||
},
|
|
||||||
"link_main_doc": False,
|
"link_main_doc": False,
|
||||||
"secondary_sidebar_items": {
|
"secondary_sidebar_items": {
|
||||||
"**": ["page-toc"],
|
"**": ["page-toc"],
|
||||||
"compatibility/compatibility-matrix": ["selector-toc2"],
|
|
||||||
"install/rocm": ["selector-toc2"],
|
"install/rocm": ["selector-toc2"],
|
||||||
"rocm-for-ai/pytorch-comfyui": ["selector-toc2"],
|
"install/compatibility-matrix": ["selector-toc2"],
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
html_title = f"AMD ROCm {ROCM_VERSION} preview"
|
html_title = f"AMD ROCm {ROCM_VERSION} preview"
|
||||||
|
|
||||||
numfig = False
|
numfig = False
|
||||||
rst_prolog = f"""
|
|
||||||
.. |ROCM_VERSION| replace:: {ROCM_VERSION}
|
|
||||||
"""
|
|
||||||
|
|
||||||
exclude_patterns = ["**/includes/**"]
|
|
||||||
suppress_warnings = ["autosectionlabel.*"]
|
suppress_warnings = ["autosectionlabel.*"]
|
||||||
|
|
||||||
# html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "https://rocm-stg.amd.com/")
|
# html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "https://rocm-stg.amd.com/")
|
||||||
@@ -197,3 +186,7 @@ suppress_warnings = ["autosectionlabel.*"]
|
|||||||
# }
|
# }
|
||||||
if os.environ.get("READTHEDOCS", "") == "True":
|
if os.environ.get("READTHEDOCS", "") == "True":
|
||||||
html_context["READTHEDOCS"] = True
|
html_context["READTHEDOCS"] = True
|
||||||
|
|
||||||
|
# temporary settings to speed up docs build for faster iteration
|
||||||
|
# external_projects_remote_repository = ""
|
||||||
|
# external_toc_exclude_missing = True
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
BIN
docs/data/comfyui.png
Normal file
|
After Width: | Height: | Size: 586 KiB |
|
Before Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 778 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 171 KiB |
@@ -1,47 +1,16 @@
|
|||||||
dockers:
|
dockers:
|
||||||
- pull_tag: rocm/jax-training:maxtext-v25.7-jax060
|
- pull_tag: rocm/jax-training:maxtext-v25.9
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/jax-training/maxtext-v25.7/images/sha256-45f4c727d4019a63fc47313d3a5f5a5105569539294ddfd2d742218212ae9025
|
docker_hub_url: https://hub.docker.com/layers/rocm/jax-training/maxtext-v25.7/images/sha256-45f4c727d4019a63fc47313d3a5f5a5105569539294ddfd2d742218212ae9025
|
||||||
components:
|
components:
|
||||||
ROCm: 6.4.1
|
ROCm: 7.0.0
|
||||||
JAX: 0.6.0
|
JAX: 0.6.2
|
||||||
Python: 3.10.12
|
Python: 3.10.18
|
||||||
Transformer Engine: 2.1.0+90d703dd
|
Transformer Engine: 2.2.0.dev0+c91bac54
|
||||||
hipBLASLt: 1.1.0-499ece1c21
|
|
||||||
- pull_tag: rocm/jax-training:maxtext-v25.7
|
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/jax-training/maxtext-v25.7/images/sha256-45f4c727d4019a63fc47313d3a5f5a5105569539294ddfd2d742218212ae9025
|
|
||||||
components:
|
|
||||||
ROCm: 6.4.1
|
|
||||||
JAX: 0.5.0
|
|
||||||
Python: 3.10.12
|
|
||||||
Transformer Engine: 2.1.0+90d703dd
|
|
||||||
hipBLASLt: 1.x.x
|
hipBLASLt: 1.x.x
|
||||||
model_groups:
|
model_groups:
|
||||||
- group: Meta Llama
|
- group: Meta Llama
|
||||||
tag: llama
|
tag: llama
|
||||||
models:
|
models:
|
||||||
- model: Llama 3.3 70B
|
|
||||||
mad_tag: jax_maxtext_train_llama-3.3-70b
|
|
||||||
model_repo: Llama-3.3-70B
|
|
||||||
precision: bf16
|
|
||||||
doc_options: ["single-node"]
|
|
||||||
- model: Llama 3.1 8B
|
|
||||||
mad_tag: jax_maxtext_train_llama-3.1-8b
|
|
||||||
model_repo: Llama-3.1-8B
|
|
||||||
precision: bf16
|
|
||||||
doc_options: ["single-node"]
|
|
||||||
- model: Llama 3.1 70B
|
|
||||||
mad_tag: jax_maxtext_train_llama-3.1-70b
|
|
||||||
model_repo: Llama-3.1-70B
|
|
||||||
precision: bf16
|
|
||||||
doc_options: ["single-node"]
|
|
||||||
- model: Llama 3 8B
|
|
||||||
mad_tag: jax_maxtext_train_llama-3-8b
|
|
||||||
multinode_training_script: llama3_8b_multinode.sh
|
|
||||||
doc_options: ["multi-node"]
|
|
||||||
- model: Llama 3 70B
|
|
||||||
mad_tag: jax_maxtext_train_llama-3-70b
|
|
||||||
multinode_training_script: llama3_70b_multinode.sh
|
|
||||||
doc_options: ["multi-node"]
|
|
||||||
- model: Llama 2 7B
|
- model: Llama 2 7B
|
||||||
mad_tag: jax_maxtext_train_llama-2-7b
|
mad_tag: jax_maxtext_train_llama-2-7b
|
||||||
model_repo: Llama-2-7B
|
model_repo: Llama-2-7B
|
||||||
@@ -54,6 +23,29 @@ model_groups:
|
|||||||
precision: bf16
|
precision: bf16
|
||||||
multinode_training_script: llama2_70b_multinode.sh
|
multinode_training_script: llama2_70b_multinode.sh
|
||||||
doc_options: ["single-node", "multi-node"]
|
doc_options: ["single-node", "multi-node"]
|
||||||
|
- model: Llama 3 8B (multi-node)
|
||||||
|
mad_tag: jax_maxtext_train_llama-3-8b
|
||||||
|
multinode_training_script: llama3_8b_multinode.sh
|
||||||
|
doc_options: ["multi-node"]
|
||||||
|
- model: Llama 3 70B (multi-node)
|
||||||
|
mad_tag: jax_maxtext_train_llama-3-70b
|
||||||
|
multinode_training_script: llama3_70b_multinode.sh
|
||||||
|
doc_options: ["multi-node"]
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.1-8b
|
||||||
|
model_repo: Llama-3.1-8B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.1-70b
|
||||||
|
model_repo: Llama-3.1-70B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- model: Llama 3.3 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.3-70b
|
||||||
|
model_repo: Llama-3.3-70B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
- group: DeepSeek
|
- group: DeepSeek
|
||||||
tag: deepseek
|
tag: deepseek
|
||||||
models:
|
models:
|
||||||
|
|||||||
@@ -1,14 +1,21 @@
|
|||||||
dockers:
|
dockers:
|
||||||
- pull_tag: rocm/megatron-lm:v25.8_py310
|
MI355X and MI350X:
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.8_py310/images/sha256-50fc824361054e445e86d5d88d5f58817f61f8ec83ad4a7e43ea38bbc4a142c0
|
pull_tag: rocm/megatron-lm:v25.9_gfx950
|
||||||
components:
|
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.9_gfx950/images/sha256-1a198be32f49efd66d0ff82066b44bd99b3e6b04c8e0e9b36b2c481e13bff7b6
|
||||||
ROCm: 6.4.3
|
components: &docker_components
|
||||||
PyTorch: 2.8.0a0+gitd06a406
|
ROCm: 7.0.0
|
||||||
|
Primus: aab4234
|
||||||
|
PyTorch: 2.9.0.dev20250821+rocm7.0.0.lw.git125803b7
|
||||||
Python: "3.10"
|
Python: "3.10"
|
||||||
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
hipBLASLt: d1b517fc7a
|
Flash Attention: 2.8.3
|
||||||
Triton: 3.3.0
|
hipBLASLt: 911283acd1
|
||||||
RCCL: 2.22.3
|
Triton: 3.4.0+rocm7.0.0.git56765e8c
|
||||||
|
RCCL: 2.26.6
|
||||||
|
MI325X and MI300X:
|
||||||
|
pull_tag: rocm/megatron-lm:v25.9_gfx942
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.9_gfx942/images/sha256-df6ab8f45b4b9ceb100fb24e19b2019a364e351ee3b324dbe54466a1d67f8357
|
||||||
|
components: *docker_components
|
||||||
model_groups:
|
model_groups:
|
||||||
- group: Meta Llama
|
- group: Meta Llama
|
||||||
tag: llama
|
tag: llama
|
||||||
@@ -19,8 +26,6 @@ model_groups:
|
|||||||
mad_tag: pyt_megatron_lm_train_llama-3.1-8b
|
mad_tag: pyt_megatron_lm_train_llama-3.1-8b
|
||||||
- model: Llama 3.1 70B
|
- model: Llama 3.1 70B
|
||||||
mad_tag: pyt_megatron_lm_train_llama-3.1-70b
|
mad_tag: pyt_megatron_lm_train_llama-3.1-70b
|
||||||
- model: Llama 3.1 70B (proxy)
|
|
||||||
mad_tag: pyt_megatron_lm_train_llama-3.1-70b-proxy
|
|
||||||
- model: Llama 2 7B
|
- model: Llama 2 7B
|
||||||
mad_tag: pyt_megatron_lm_train_llama-2-7b
|
mad_tag: pyt_megatron_lm_train_llama-2-7b
|
||||||
- model: Llama 2 70B
|
- model: Llama 2 70B
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
dockers:
|
||||||
|
- pull_tag: rocm/jax-training:maxtext-v25.7-jax060
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/jax-training/maxtext-v25.7/images/sha256-45f4c727d4019a63fc47313d3a5f5a5105569539294ddfd2d742218212ae9025
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.1
|
||||||
|
JAX: 0.6.0
|
||||||
|
Python: 3.10.12
|
||||||
|
Transformer Engine: 2.1.0+90d703dd
|
||||||
|
hipBLASLt: 1.1.0-499ece1c21
|
||||||
|
- pull_tag: rocm/jax-training:maxtext-v25.7
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/jax-training/maxtext-v25.7/images/sha256-45f4c727d4019a63fc47313d3a5f5a5105569539294ddfd2d742218212ae9025
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.1
|
||||||
|
JAX: 0.5.0
|
||||||
|
Python: 3.10.12
|
||||||
|
Transformer Engine: 2.1.0+90d703dd
|
||||||
|
hipBLASLt: 1.x.x
|
||||||
|
model_groups:
|
||||||
|
- group: Meta Llama
|
||||||
|
tag: llama
|
||||||
|
models:
|
||||||
|
- model: Llama 3.3 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.3-70b
|
||||||
|
model_repo: Llama-3.3-70B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.1-8b
|
||||||
|
model_repo: Llama-3.1-8B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3.1-70b
|
||||||
|
model_repo: Llama-3.1-70B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- model: Llama 3 8B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3-8b
|
||||||
|
multinode_training_script: llama3_8b_multinode.sh
|
||||||
|
doc_options: ["multi-node"]
|
||||||
|
- model: Llama 3 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-3-70b
|
||||||
|
multinode_training_script: llama3_70b_multinode.sh
|
||||||
|
doc_options: ["multi-node"]
|
||||||
|
- model: Llama 2 7B
|
||||||
|
mad_tag: jax_maxtext_train_llama-2-7b
|
||||||
|
model_repo: Llama-2-7B
|
||||||
|
precision: bf16
|
||||||
|
multinode_training_script: llama2_7b_multinode.sh
|
||||||
|
doc_options: ["single-node", "multi-node"]
|
||||||
|
- model: Llama 2 70B
|
||||||
|
mad_tag: jax_maxtext_train_llama-2-70b
|
||||||
|
model_repo: Llama-2-70B
|
||||||
|
precision: bf16
|
||||||
|
multinode_training_script: llama2_70b_multinode.sh
|
||||||
|
doc_options: ["single-node", "multi-node"]
|
||||||
|
- group: DeepSeek
|
||||||
|
tag: deepseek
|
||||||
|
models:
|
||||||
|
- model: DeepSeek-V2-Lite (16B)
|
||||||
|
mad_tag: jax_maxtext_train_deepseek-v2-lite-16b
|
||||||
|
model_repo: DeepSeek-V2-lite
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
|
- group: Mistral AI
|
||||||
|
tag: mistral
|
||||||
|
models:
|
||||||
|
- model: Mixtral 8x7B
|
||||||
|
mad_tag: jax_maxtext_train_mixtral-8x7b
|
||||||
|
model_repo: Mixtral-8x7B
|
||||||
|
precision: bf16
|
||||||
|
doc_options: ["single-node"]
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
dockers:
|
||||||
|
- pull_tag: rocm/megatron-lm:v25.8_py310
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.8_py310/images/sha256-50fc824361054e445e86d5d88d5f58817f61f8ec83ad4a7e43ea38bbc4a142c0
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.3
|
||||||
|
PyTorch: 2.8.0a0+gitd06a406
|
||||||
|
Python: "3.10"
|
||||||
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
|
hipBLASLt: d1b517fc7a
|
||||||
|
Triton: 3.3.0
|
||||||
|
RCCL: 2.22.3
|
||||||
|
model_groups:
|
||||||
|
- group: Meta Llama
|
||||||
|
tag: llama
|
||||||
|
models:
|
||||||
|
- model: Llama 3.3 70B
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-3.3-70b
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-3.1-8b
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-3.1-70b
|
||||||
|
- model: Llama 3.1 70B (proxy)
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-3.1-70b-proxy
|
||||||
|
- model: Llama 2 7B
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-2-7b
|
||||||
|
- model: Llama 2 70B
|
||||||
|
mad_tag: pyt_megatron_lm_train_llama-2-70b
|
||||||
|
- group: DeepSeek
|
||||||
|
tag: deepseek
|
||||||
|
models:
|
||||||
|
- model: DeepSeek-V3 (proxy)
|
||||||
|
mad_tag: pyt_megatron_lm_train_deepseek-v3-proxy
|
||||||
|
- model: DeepSeek-V2-Lite
|
||||||
|
mad_tag: pyt_megatron_lm_train_deepseek-v2-lite-16b
|
||||||
|
- group: Mistral AI
|
||||||
|
tag: mistral
|
||||||
|
models:
|
||||||
|
- model: Mixtral 8x7B
|
||||||
|
mad_tag: pyt_megatron_lm_train_mixtral-8x7b
|
||||||
|
- model: Mixtral 8x22B (proxy)
|
||||||
|
mad_tag: pyt_megatron_lm_train_mixtral-8x22b-proxy
|
||||||
|
- group: Qwen
|
||||||
|
tag: qwen
|
||||||
|
models:
|
||||||
|
- model: Qwen 2.5 7B
|
||||||
|
mad_tag: pyt_megatron_lm_train_qwen2.5-7b
|
||||||
|
- model: Qwen 2.5 72B
|
||||||
|
mad_tag: pyt_megatron_lm_train_qwen2.5-72b
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
dockers:
|
||||||
|
- pull_tag: rocm/megatron-lm:v25.8_py310
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.8_py310/images/sha256-50fc824361054e445e86d5d88d5f58817f61f8ec83ad4a7e43ea38bbc4a142c0
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.3
|
||||||
|
Primus: 927a717
|
||||||
|
PyTorch: 2.8.0a0+gitd06a406
|
||||||
|
Python: "3.10"
|
||||||
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
|
hipBLASLt: d1b517fc7a
|
||||||
|
Triton: 3.3.0
|
||||||
|
RCCL: 2.22.3
|
||||||
|
model_groups:
|
||||||
|
- group: Meta Llama
|
||||||
|
tag: llama
|
||||||
|
models:
|
||||||
|
- model: Llama 3.3 70B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_llama-3.3-70b
|
||||||
|
config_name: llama3.3_70B-pretrain.yaml
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_llama-3.1-70b
|
||||||
|
config_name: llama3.1_70B-pretrain.yaml
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_llama-3.1-8b
|
||||||
|
config_name: llama3.1_8B-pretrain.yaml
|
||||||
|
- model: Llama 2 7B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_llama-2-7b
|
||||||
|
config_name: llama2_7B-pretrain.yaml
|
||||||
|
- model: Llama 2 70B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_llama-2-70b
|
||||||
|
config_name: llama2_70B-pretrain.yaml
|
||||||
|
- group: DeepSeek
|
||||||
|
tag: deepseek
|
||||||
|
models:
|
||||||
|
- model: DeepSeek-V3 (proxy)
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_deepseek-v3-proxy
|
||||||
|
config_name: deepseek_v3-pretrain.yaml
|
||||||
|
- model: DeepSeek-V2-Lite
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_deepseek-v2-lite-16b
|
||||||
|
config_name: deepseek_v2_lite-pretrain.yaml
|
||||||
|
- group: Mistral AI
|
||||||
|
tag: mistral
|
||||||
|
models:
|
||||||
|
- model: Mixtral 8x7B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_mixtral-8x7b
|
||||||
|
config_name: mixtral_8x7B_v0.1-pretrain.yaml
|
||||||
|
- model: Mixtral 8x22B (proxy)
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_mixtral-8x22b-proxy
|
||||||
|
config_name: mixtral_8x22B_v0.1-pretrain.yaml
|
||||||
|
- group: Qwen
|
||||||
|
tag: qwen
|
||||||
|
models:
|
||||||
|
- model: Qwen 2.5 7B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_qwen2.5-7b
|
||||||
|
config_name: primus_qwen2.5_7B-pretrain.yaml
|
||||||
|
- model: Qwen 2.5 72B
|
||||||
|
mad_tag: primus_pyt_megatron_lm_train_qwen2.5-72b
|
||||||
|
config_name: qwen2.5_72B-pretrain.yaml
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
dockers:
|
||||||
|
- pull_tag: rocm/pytorch-training:v25.8
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.8/images/sha256-5082ae01d73fec6972b0d84e5dad78c0926820dcf3c19f301d6c8eb892e573c5
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.3
|
||||||
|
PyTorch: 2.8.0a0+gitd06a406
|
||||||
|
Python: 3.10.18
|
||||||
|
Transformer Engine: 2.2.0.dev0+a1e66aae
|
||||||
|
Flash Attention: 3.0.0.post1
|
||||||
|
hipBLASLt: 1.1.0-d1b517fc7a
|
||||||
|
model_groups:
|
||||||
|
- group: Meta Llama
|
||||||
|
tag: llama
|
||||||
|
models:
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: primus_pyt_train_llama-3.1-8b
|
||||||
|
model_repo: Llama-3.1-8B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.1-8B
|
||||||
|
precision: BF16
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: primus_pyt_train_llama-3.1-70b
|
||||||
|
model_repo: Llama-3.1-70B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.1-70B
|
||||||
|
precision: BF16
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
dockers:
|
||||||
|
- pull_tag: rocm/pytorch-training:v25.8
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.8/images/sha256-5082ae01d73fec6972b0d84e5dad78c0926820dcf3c19f301d6c8eb892e573c5
|
||||||
|
components:
|
||||||
|
ROCm: 6.4.3
|
||||||
|
PyTorch: 2.8.0a0+gitd06a406
|
||||||
|
Python: 3.10.18
|
||||||
|
Transformer Engine: 2.2.0.dev0+a1e66aae
|
||||||
|
Flash Attention: 3.0.0.post1
|
||||||
|
hipBLASLt: 1.1.0-d1b517fc7a
|
||||||
|
model_groups:
|
||||||
|
- group: Meta Llama
|
||||||
|
tag: llama
|
||||||
|
models:
|
||||||
|
- model: Llama 4 Scout 17B-16E
|
||||||
|
mad_tag: pyt_train_llama-4-scout-17b-16e
|
||||||
|
model_repo: Llama-4-17B_16E
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 3.3 70B
|
||||||
|
mad_tag: pyt_train_llama-3.3-70b
|
||||||
|
model_repo: Llama-3.3-70B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora, finetune_qlora]
|
||||||
|
- model: Llama 3.2 1B
|
||||||
|
mad_tag: pyt_train_llama-3.2-1b
|
||||||
|
model_repo: Llama-3.2-1B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.2-1B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 3.2 3B
|
||||||
|
mad_tag: pyt_train_llama-3.2-3b
|
||||||
|
model_repo: Llama-3.2-3B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.2-3B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 3.2 Vision 11B
|
||||||
|
mad_tag: pyt_train_llama-3.2-vision-11b
|
||||||
|
model_repo: Llama-3.2-Vision-11B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.2-11B-Vision
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw]
|
||||||
|
- model: Llama 3.2 Vision 90B
|
||||||
|
mad_tag: pyt_train_llama-3.2-vision-90b
|
||||||
|
model_repo: Llama-3.2-Vision-90B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.2-90B-Vision
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw]
|
||||||
|
- model: Llama 3.1 8B
|
||||||
|
mad_tag: pyt_train_llama-3.1-8b
|
||||||
|
model_repo: Llama-3.1-8B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.1-8B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [pretrain, finetune_fw, finetune_lora, HF_pretrain]
|
||||||
|
- model: Llama 3.1 70B
|
||||||
|
mad_tag: pyt_train_llama-3.1-70b
|
||||||
|
model_repo: Llama-3.1-70B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [pretrain, finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 3.1 405B
|
||||||
|
mad_tag: pyt_train_llama-3.1-405b
|
||||||
|
model_repo: Llama-3.1-405B
|
||||||
|
url: https://huggingface.co/meta-llama/Llama-3.1-405B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_qlora]
|
||||||
|
- model: Llama 3 8B
|
||||||
|
mad_tag: pyt_train_llama-3-8b
|
||||||
|
model_repo: Llama-3-8B
|
||||||
|
url: https://huggingface.co/meta-llama/Meta-Llama-3-8B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 3 70B
|
||||||
|
mad_tag: pyt_train_llama-3-70b
|
||||||
|
model_repo: Llama-3-70B
|
||||||
|
url: https://huggingface.co/meta-llama/Meta-Llama-3-70B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 2 7B
|
||||||
|
mad_tag: pyt_train_llama-2-7b
|
||||||
|
model_repo: Llama-2-7B
|
||||||
|
url: https://github.com/meta-llama/llama-models/tree/main/models/llama2
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora, finetune_qlora]
|
||||||
|
- model: Llama 2 13B
|
||||||
|
mad_tag: pyt_train_llama-2-13b
|
||||||
|
model_repo: Llama-2-13B
|
||||||
|
url: https://github.com/meta-llama/llama-models/tree/main/models/llama2
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Llama 2 70B
|
||||||
|
mad_tag: pyt_train_llama-2-70b
|
||||||
|
model_repo: Llama-2-70B
|
||||||
|
url: https://github.com/meta-llama/llama-models/tree/main/models/llama2
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_lora, finetune_qlora]
|
||||||
|
- group: OpenAI
|
||||||
|
tag: openai
|
||||||
|
models:
|
||||||
|
- model: GPT OSS 20B
|
||||||
|
mad_tag: pyt_train_gpt_oss_20b
|
||||||
|
model_repo: GPT-OSS-20B
|
||||||
|
url: https://huggingface.co/openai/gpt-oss-20b
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [HF_finetune_lora]
|
||||||
|
- model: GPT OSS 120B
|
||||||
|
mad_tag: pyt_train_gpt_oss_120b
|
||||||
|
model_repo: GPT-OSS-120B
|
||||||
|
url: https://huggingface.co/openai/gpt-oss-120b
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [HF_finetune_lora]
|
||||||
|
- group: Qwen
|
||||||
|
tag: qwen
|
||||||
|
models:
|
||||||
|
- model: Qwen 3 8B
|
||||||
|
mad_tag: pyt_train_qwen3-8b
|
||||||
|
model_repo: Qwen3-8B
|
||||||
|
url: https://huggingface.co/Qwen/Qwen3-8B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Qwen 3 32B
|
||||||
|
mad_tag: pyt_train_qwen3-32b
|
||||||
|
model_repo: Qwen3-32
|
||||||
|
url: https://huggingface.co/Qwen/Qwen3-32B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_lora]
|
||||||
|
- model: Qwen 2.5 32B
|
||||||
|
mad_tag: pyt_train_qwen2.5-32b
|
||||||
|
model_repo: Qwen2.5-32B
|
||||||
|
url: https://huggingface.co/Qwen/Qwen2.5-32B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_lora]
|
||||||
|
- model: Qwen 2.5 72B
|
||||||
|
mad_tag: pyt_train_qwen2.5-72b
|
||||||
|
model_repo: Qwen2.5-72B
|
||||||
|
url: https://huggingface.co/Qwen/Qwen2.5-72B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_lora]
|
||||||
|
- model: Qwen 2 1.5B
|
||||||
|
mad_tag: pyt_train_qwen2-1.5b
|
||||||
|
model_repo: Qwen2-1.5B
|
||||||
|
url: https://huggingface.co/Qwen/Qwen2-1.5B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- model: Qwen 2 7B
|
||||||
|
mad_tag: pyt_train_qwen2-7b
|
||||||
|
model_repo: Qwen2-7B
|
||||||
|
url: https://huggingface.co/Qwen/Qwen2-7B
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_fw, finetune_lora]
|
||||||
|
- group: Stable Diffusion
|
||||||
|
tag: sd
|
||||||
|
models:
|
||||||
|
- model: Stable Diffusion XL
|
||||||
|
mad_tag: pyt_huggingface_stable_diffusion_xl_2k_lora_finetuning
|
||||||
|
model_repo: SDXL
|
||||||
|
url: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [finetune_lora]
|
||||||
|
- group: Flux
|
||||||
|
tag: flux
|
||||||
|
models:
|
||||||
|
- model: FLUX.1-dev
|
||||||
|
mad_tag: pyt_train_flux
|
||||||
|
model_repo: Flux
|
||||||
|
url: https://huggingface.co/black-forest-labs/FLUX.1-dev
|
||||||
|
precision: BF16
|
||||||
|
training_modes: [pretrain]
|
||||||
|
- group: NCF
|
||||||
|
tag: ncf
|
||||||
|
models:
|
||||||
|
- model: NCF
|
||||||
|
mad_tag: pyt_ncf_training
|
||||||
|
model_repo:
|
||||||
|
url: https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF
|
||||||
|
precision: FP32
|
||||||
@@ -1,15 +1,22 @@
|
|||||||
dockers:
|
dockers:
|
||||||
- pull_tag: rocm/megatron-lm:v25.8_py310
|
MI355X and MI350X:
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/megatron-lm/v25.8_py310/images/sha256-50fc824361054e445e86d5d88d5f58817f61f8ec83ad4a7e43ea38bbc4a142c0
|
pull_tag: rocm/primus:v25.9_gfx950
|
||||||
components:
|
docker_hub_url: https://hub.docker.com/layers/rocm/primus/v25.9_gfx950/images/sha256-1a198be32f49efd66d0ff82066b44bd99b3e6b04c8e0e9b36b2c481e13bff7b6
|
||||||
ROCm: 6.4.3
|
components: &docker_components
|
||||||
Primus: 927a717
|
ROCm: 7.0.0
|
||||||
PyTorch: 2.8.0a0+gitd06a406
|
Primus: 0.3.0
|
||||||
|
Primus Turbo: 0.1.1
|
||||||
|
PyTorch: 2.9.0.dev20250821+rocm7.0.0.lw.git125803b7
|
||||||
Python: "3.10"
|
Python: "3.10"
|
||||||
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
hipBLASLt: d1b517fc7a
|
Flash Attention: 2.8.3
|
||||||
Triton: 3.3.0
|
hipBLASLt: 911283acd1
|
||||||
RCCL: 2.22.3
|
Triton: 3.4.0+rocm7.0.0.git56765e8c
|
||||||
|
RCCL: 2.26.6
|
||||||
|
MI325X and MI300X:
|
||||||
|
pull_tag: rocm/primus:v25.9_gfx942
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/primus/v25.9_gfx942/images/sha256-df6ab8f45b4b9ceb100fb24e19b2019a364e351ee3b324dbe54466a1d67f8357
|
||||||
|
components: *docker_components
|
||||||
model_groups:
|
model_groups:
|
||||||
- group: Meta Llama
|
- group: Meta Llama
|
||||||
tag: llama
|
tag: llama
|
||||||
|
|||||||
@@ -1,24 +1,39 @@
|
|||||||
dockers:
|
dockers:
|
||||||
- pull_tag: rocm/pytorch-training:v25.8
|
MI355X and MI350X:
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.8/images/sha256-5082ae01d73fec6972b0d84e5dad78c0926820dcf3c19f301d6c8eb892e573c5
|
pull_tag: rocm/primus:v25.9_gfx950
|
||||||
components:
|
docker_hub_url: https://hub.docker.com/layers/rocm/primus/v25.9_gfx950/images/sha256-1a198be32f49efd66d0ff82066b44bd99b3e6b04c8e0e9b36b2c481e13bff7b6
|
||||||
ROCm: 6.4.3
|
components: &docker_components
|
||||||
PyTorch: 2.8.0a0+gitd06a406
|
ROCm: 7.0.0
|
||||||
Python: 3.10.18
|
Primus: 0.3.0
|
||||||
Transformer Engine: 2.2.0.dev0+a1e66aae
|
Primus Turbo: 0.1.1
|
||||||
Flash Attention: 3.0.0.post1
|
PyTorch: 2.9.0.dev20250821+rocm7.0.0.lw.git125803b7
|
||||||
hipBLASLt: 1.1.0-d1b517fc7a
|
Python: "3.10"
|
||||||
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
|
Flash Attention: 2.8.3
|
||||||
|
hipBLASLt: 911283acd1
|
||||||
|
Triton: 3.4.0+rocm7.0.0.git56765e8c
|
||||||
|
RCCL: 2.26.6
|
||||||
|
MI325X and MI300X:
|
||||||
|
pull_tag: rocm/primus:v25.9_gfx942
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/primus/v25.9_gfx942/images/sha256-df6ab8f45b4b9ceb100fb24e19b2019a364e351ee3b324dbe54466a1d67f8357
|
||||||
|
components: *docker_components
|
||||||
model_groups:
|
model_groups:
|
||||||
- group: Meta Llama
|
- group: Meta Llama
|
||||||
tag: llama
|
tag: llama
|
||||||
models:
|
models:
|
||||||
- model: Llama 3.1 8B
|
- model: Llama 3.1 8B
|
||||||
mad_tag: primus_pyt_train_llama-3.1-8b
|
mad_tag: primus_pyt_train_llama-3.1-8b
|
||||||
model_repo: Llama-3.1-8B
|
model_repo: meta-llama/Llama-3.1-8B
|
||||||
url: https://huggingface.co/meta-llama/Llama-3.1-8B
|
url: https://huggingface.co/meta-llama/Llama-3.1-8B
|
||||||
precision: BF16
|
precision: BF16
|
||||||
|
config_file:
|
||||||
|
bf16: "./llama3_8b_fsdp_bf16.toml"
|
||||||
|
fp8: "./llama3_8b_fsdp_fp8.toml"
|
||||||
- model: Llama 3.1 70B
|
- model: Llama 3.1 70B
|
||||||
mad_tag: primus_pyt_train_llama-3.1-70b
|
mad_tag: primus_pyt_train_llama-3.1-70b
|
||||||
model_repo: Llama-3.1-70B
|
model_repo: meta-llama/Llama-3.1-70B
|
||||||
url: https://huggingface.co/meta-llama/Llama-3.1-70B
|
url: https://huggingface.co/meta-llama/Llama-3.1-70B
|
||||||
precision: BF16
|
precision: BF16
|
||||||
|
config_file:
|
||||||
|
bf16: "./llama3_70b_fsdp_bf16.toml"
|
||||||
|
fp8: "./llama3_70b_fsdp_fp8.toml"
|
||||||
|
|||||||
@@ -1,13 +1,21 @@
|
|||||||
dockers:
|
dockers:
|
||||||
- pull_tag: rocm/pytorch-training:v25.8
|
MI355X and MI350X:
|
||||||
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.8/images/sha256-5082ae01d73fec6972b0d84e5dad78c0926820dcf3c19f301d6c8eb892e573c5
|
pull_tag: rocm/pytorch-training:v25.9_gfx950
|
||||||
components:
|
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.9_gfx950/images/sha256-1a198be32f49efd66d0ff82066b44bd99b3e6b04c8e0e9b36b2c481e13bff7b6
|
||||||
ROCm: 6.4.3
|
components: &docker_components
|
||||||
PyTorch: 2.8.0a0+gitd06a406
|
ROCm: 7.0.0
|
||||||
Python: 3.10.18
|
Primus: aab4234
|
||||||
Transformer Engine: 2.2.0.dev0+a1e66aae
|
PyTorch: 2.9.0.dev20250821+rocm7.0.0.lw.git125803b7
|
||||||
Flash Attention: 3.0.0.post1
|
Python: "3.10"
|
||||||
hipBLASLt: 1.1.0-d1b517fc7a
|
Transformer Engine: 2.2.0.dev0+54dd2bdc
|
||||||
|
Flash Attention: 2.8.3
|
||||||
|
hipBLASLt: 911283acd1
|
||||||
|
Triton: 3.4.0+rocm7.0.0.git56765e8c
|
||||||
|
RCCL: 2.26.6
|
||||||
|
MI325X and MI300X:
|
||||||
|
pull_tag: rocm/pytorch-training:v25.9_gfx942
|
||||||
|
docker_hub_url: https://hub.docker.com/layers/rocm/pytorch-training/v25.9_gfx942/images/sha256-df6ab8f45b4b9ceb100fb24e19b2019a364e351ee3b324dbe54466a1d67f8357
|
||||||
|
components: *docker_components
|
||||||
model_groups:
|
model_groups:
|
||||||
- group: Meta Llama
|
- group: Meta Llama
|
||||||
tag: llama
|
tag: llama
|
||||||
@@ -158,7 +166,7 @@ model_groups:
|
|||||||
model_repo: SDXL
|
model_repo: SDXL
|
||||||
url: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
|
url: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
|
||||||
precision: BF16
|
precision: BF16
|
||||||
training_modes: [finetune_lora]
|
training_modes: [posttrain-p]
|
||||||
- group: Flux
|
- group: Flux
|
||||||
tag: flux
|
tag: flux
|
||||||
models:
|
models:
|
||||||
@@ -167,7 +175,7 @@ model_groups:
|
|||||||
model_repo: Flux
|
model_repo: Flux
|
||||||
url: https://huggingface.co/black-forest-labs/FLUX.1-dev
|
url: https://huggingface.co/black-forest-labs/FLUX.1-dev
|
||||||
precision: BF16
|
precision: BF16
|
||||||
training_modes: [pretrain]
|
training_modes: [posttrain-p]
|
||||||
- group: NCF
|
- group: NCF
|
||||||
tag: ncf
|
tag: ncf
|
||||||
models:
|
models:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X series,MI300A,MI350X series
|
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X Series,MI300A,MI350X Series
|
||||||
32 bit atomicAdd,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicAdd,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
32 bit atomicSub,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicSub,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
32 bit atomicMin,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicMin,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
|
|||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X series,MI300A,MI350X series
|
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X Series,MI300A,MI350X Series
|
||||||
32 bit atomicAdd,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicAdd,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
32 bit atomicSub,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicSub,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
32 bit atomicMin,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
32 bit atomicMin,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS,✅ CAS
|
||||||
|
|||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X series,MI300A,MI350X series
|
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X Series,MI300A,MI350X Series
|
||||||
32 bit atomicAdd,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicAdd,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
32 bit atomicSub,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicSub,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
32 bit atomicMin,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicMin,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
|
|||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X series,MI300A,MI350X series
|
Atomic,MI100,MI200 PCIe,MI200 A+A,MI300X Series,MI300A,MI350X Series
|
||||||
32 bit atomicAdd,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicAdd,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
32 bit atomicSub,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicSub,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
32 bit atomicMin,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
32 bit atomicMin,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native,✅ Native
|
||||||
|
|||||||
|
@@ -1,562 +0,0 @@
|
|||||||
<p>
|
|
||||||
<div class="rocm-docs-ontology-diagram container-fluid p-1 pl-3 text-white">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-1"></div>
|
|
||||||
<div class="col-11">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Enterprise applications
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Customer service
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Sales assistant
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Human resources
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Marketing
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Personal assistant
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Coding assistant
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Drug discovery
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey small h-100"
|
|
||||||
>
|
|
||||||
Material science
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="col-1 d-flex align-items-center justify-content-center bg-amd-grey fw-bold vertical-text"
|
|
||||||
>
|
|
||||||
AMD ROCm<span class="trademark">™</span> software ecosystem
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-11">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
AMD enterprise AI
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1 h-100">
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
AMD Resource Manager
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
AMD Solution Blueprints
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
AMD Developer Console
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
AMD Inference Microservices
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
AI ecosystem
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1 h-100">
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
Hugging Face
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
PyTorch
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
JAX
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
TensorFlow
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
ONNX
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
Triton
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
DeepSpeed
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
OpenXLA
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Cluster operations
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-4">
|
|
||||||
<div class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100">
|
|
||||||
Monitoring:
|
|
||||||
<ul>
|
|
||||||
<li>Prometheus</li>
|
|
||||||
<li>Grafana</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<div class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100">
|
|
||||||
MLOps platforms:
|
|
||||||
<ul>
|
|
||||||
<li>mlflow</li>
|
|
||||||
<li>Kubeflow</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<div class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100">
|
|
||||||
Model serving runtimes:
|
|
||||||
<ul>
|
|
||||||
<li>vLLM</li>
|
|
||||||
<li>PyTorch</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Vertical SDKs
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange small h-100"
|
|
||||||
>
|
|
||||||
ROCm-DS
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange small h-100"
|
|
||||||
>
|
|
||||||
ROCm-LS
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange small h-100"
|
|
||||||
>
|
|
||||||
ROCm-Finance
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange small h-100"
|
|
||||||
>
|
|
||||||
ROCm-Simulation
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
ROCm Core SDK
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Math and compute libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Communication libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Support libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Media libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Runtimes and compilers
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Profiling and debugging tools
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-teal small h-100"
|
|
||||||
>
|
|
||||||
Control and monitoring tools
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3 d-flex align-items-center">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-gold h-100 w-100
|
|
||||||
d-flex align-items-center
|
|
||||||
small fw-bold
|
|
||||||
"
|
|
||||||
>
|
|
||||||
Systems and infrastructure
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-6">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-gold small h-100"
|
|
||||||
>
|
|
||||||
Kubernetes:
|
|
||||||
<ul>
|
|
||||||
<li>GPU Operator</li>
|
|
||||||
<li>Device Plugin</li>
|
|
||||||
<li>Container Toolkit</li>
|
|
||||||
<li>Device Metrics Exporter</li>
|
|
||||||
<li>Device Plugin</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="row h-100">
|
|
||||||
<div class="col-12 d-flex flex-grow-1">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-gold small w-100
|
|
||||||
d-flex align-items-center mb-1
|
|
||||||
"
|
|
||||||
>
|
|
||||||
AMD GPU Driver and runtime firmware
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 d-flex flex-grow-1">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-gold small w-100
|
|
||||||
d-flex align-items-center mb-1
|
|
||||||
"
|
|
||||||
>
|
|
||||||
AMD Virtualization Driver
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 d-flex flex-grow-1">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-gold small w-100
|
|
||||||
d-flex align-items-center mb-1
|
|
||||||
"
|
|
||||||
>
|
|
||||||
AMD Instinct<span class="trademark">™</span> Fabric
|
|
||||||
Manager
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 d-flex flex-grow-1">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-gold small w-100
|
|
||||||
d-flex align-items-center
|
|
||||||
"
|
|
||||||
>
|
|
||||||
Management tools
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3 d-flex align-items-center">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-ontology-tile p-2 bg-amd-red h-100 w-100
|
|
||||||
d-flex align-items-center
|
|
||||||
small fw-bold
|
|
||||||
"
|
|
||||||
>
|
|
||||||
Supported OSes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
Ubuntu
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
Debian
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
RHEL
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
Oracle Linux
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
Rocky Linux
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
SLES
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-red small h-100"
|
|
||||||
>
|
|
||||||
Windows
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-3">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
OEM/ODM firmware
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-9">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-orange small h-100"
|
|
||||||
>
|
|
||||||
Baseboard and GPU firmware (platform-optimized firmware)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-1"></div>
|
|
||||||
<div class="col-11">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-ontology-tile p-2 bg-amd-grey h-100 d-flex justify-content-center align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
AMD GPUs and APUs
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.rocm-docs-ontology-diagram {
|
|
||||||
background-color: #1b1b1b;
|
|
||||||
|
|
||||||
.bg-amd-grey {
|
|
||||||
background-color: #6e6e6e;
|
|
||||||
}
|
|
||||||
.bg-amd-gold {
|
|
||||||
background-color: #b08a3a;
|
|
||||||
}
|
|
||||||
.bg-amd-orange {
|
|
||||||
background-color: #3a5f4b;
|
|
||||||
}
|
|
||||||
.bg-amd-red {
|
|
||||||
background-color: #2f4d69;
|
|
||||||
}
|
|
||||||
.bg-amd-teal {
|
|
||||||
background-color: #007c97;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-ontology-tile:not(.vertical-text) {
|
|
||||||
transition: transform 0.25s ease, box-shadow 0.25s ease;
|
|
||||||
will-change: transform;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.rocm-docs-ontology-tile:hover {
|
|
||||||
transform: scale(1.02);
|
|
||||||
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.25);
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Rotates the text for the sidebar */
|
|
||||||
.vertical-text {
|
|
||||||
writing-mode: vertical-rl;
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-text .trademark {
|
|
||||||
display: inline-block;
|
|
||||||
transform: rotate(90deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
BIN
docs/data/rocm-ontology.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
@@ -1,211 +0,0 @@
|
|||||||
<p>
|
|
||||||
<div class="rocm-docs-core-sdk-diagram container-fluid p-1 pl-3 text-white">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div
|
|
||||||
class="col-1 d-flex align-items-center justify-content-center bg-amd-grey fw-bold vertical-text"
|
|
||||||
>
|
|
||||||
ROCm<span class="trademark">™</span> Core SDK
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-11">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Math and compute libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>Deep learning and GPU compute kernels</strong>:<br>
|
|
||||||
Composable Kernel, MIOpen, rocWMMA, hipDNN (coming soon)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>BLAS dense and sparse libraries</strong>:<br>
|
|
||||||
hipBLAS, hipBLASLt, hipSOLVER, hipSPARSE, hipSPARSELt
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>Kernel primitives</strong>:<br>
|
|
||||||
hipCUB, rocPRIM, rocThrust
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>Other math</strong>:<br>
|
|
||||||
hipRAND, hipFFT
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Communication libraries
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
RCCL, rocSHMEM
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
hipFile (coming soon)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Runtimes and compilers
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
HIP, HIPIFY, LLVM, ROCr Runtime, SPIRV-LLVM-Translator
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 d-flex align-items-center small fw-bold"
|
|
||||||
>
|
|
||||||
Profiling and debugging tools
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>ROCprofiler family</strong>:<br>ROCm Compute Profiler
|
|
||||||
(rocprofiler-compute), ROCm Systems Profiler
|
|
||||||
(rocprofiler-systems), ROCprofiler-SDK and rocprofv3 CLI
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
<strong>ROCm Debugger family</strong>:<br>ROCm Debugger
|
|
||||||
(ROCgdb), ROCdbgapi, ROCr Debug Agent
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-4">
|
|
||||||
<div
|
|
||||||
class="
|
|
||||||
rocm-docs-core-sdk-tile bg-amd-blue p-2 h-100 w-100
|
|
||||||
d-flex align-items-center
|
|
||||||
small fw-bold
|
|
||||||
"
|
|
||||||
>
|
|
||||||
Control and monitoring tools
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8">
|
|
||||||
<div class="row g-1">
|
|
||||||
<div class="col">
|
|
||||||
<div
|
|
||||||
class="rocm-docs-core-sdk-tile p-2 small h-100"
|
|
||||||
>
|
|
||||||
AMD SMI, hipinfo, rocminfo
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.rocm-docs-core-sdk-diagram {
|
|
||||||
background-color: #1b1b1b;
|
|
||||||
|
|
||||||
.rocm-docs-core-sdk-tile {
|
|
||||||
background-color: #007c97;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-amd-grey {
|
|
||||||
background-color: #6e6e6e;
|
|
||||||
}
|
|
||||||
.bg-amd-blue {
|
|
||||||
opacity: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-core-sdk-tile:not(.vertical-text) {
|
|
||||||
transition: transform 0.25s ease, box-shadow 0.25s ease;
|
|
||||||
will-change: transform;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.rocm-docs-core-sdk-tile:hover {
|
|
||||||
transform: scale(1.02);
|
|
||||||
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.25);
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Rotates the text for the sidebar */
|
|
||||||
.vertical-text {
|
|
||||||
writing-mode: vertical-rl;
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-text .trademark {
|
|
||||||
display: inline-block;
|
|
||||||
transform: rotate(90deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
BIN
docs/data/rocm-sdk-arch.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/data/rocm-software-stack-6_3_1.jpg
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
docs/data/rocm-software-stack-6_3_2.jpg
Normal file
|
After Width: | Height: | Size: 346 KiB |
BIN
docs/data/rocm-software-stack-6_4_0.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
docs/data/rocm-software-stack-7_0_0.jpg
Normal file
|
After Width: | Height: | Size: 350 KiB |
@@ -1,289 +0,0 @@
|
|||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from docutils import nodes
|
|
||||||
from docutils.parsers.rst import directives
|
|
||||||
from sphinx.util.docutils import SphinxDirective
|
|
||||||
|
|
||||||
from .utils import kv_to_data_attr, logger
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTable(nodes.General, nodes.Element):
|
|
||||||
"""Bootstrap-flavoured table container."""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def visit_html(translator, node):
|
|
||||||
show_when_attr = kv_to_data_attr("show-when", node.get("show-when", ""))
|
|
||||||
|
|
||||||
classes = ["rocm-docs-table", "table"]
|
|
||||||
classes.extend(node.get("classes", []))
|
|
||||||
class_attr = " ".join(classes)
|
|
||||||
table_id = node.get("id") or ""
|
|
||||||
|
|
||||||
attrs = []
|
|
||||||
if table_id:
|
|
||||||
attrs.append(f'id="{table_id}"')
|
|
||||||
attrs.append(f'class="{class_attr}"')
|
|
||||||
if show_when_attr:
|
|
||||||
attrs.append(show_when_attr)
|
|
||||||
|
|
||||||
attrs_str = " ".join(attrs)
|
|
||||||
translator.body.append(f"<!-- start custom-table --><table {attrs_str}>")
|
|
||||||
|
|
||||||
caption = node.get("caption", "")
|
|
||||||
if caption:
|
|
||||||
translator.body.append(f"<caption>{caption}</caption>")
|
|
||||||
|
|
||||||
translator._in_matrix_body = False # internal state flag
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def depart_html(translator, node):
|
|
||||||
# Close an open <tbody> if present
|
|
||||||
if getattr(translator, "_in_matrix_body", False):
|
|
||||||
translator.body.append("</tbody>")
|
|
||||||
translator._in_matrix_body = False
|
|
||||||
|
|
||||||
translator.body.append("</table><!-- end custom-table -->")
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableDirective(SphinxDirective):
|
|
||||||
""".. matrix:: Optional caption"""
|
|
||||||
|
|
||||||
required_arguments = 0
|
|
||||||
optional_arguments = 1
|
|
||||||
final_argument_whitespace = True
|
|
||||||
has_content = True
|
|
||||||
option_spec = {
|
|
||||||
"id": directives.unchanged,
|
|
||||||
"class": directives.class_option,
|
|
||||||
"show-when": directives.unchanged,
|
|
||||||
}
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
node = CustomTable()
|
|
||||||
node["caption"] = self.arguments[0] if self.arguments else ""
|
|
||||||
node["id"] = self.options.get("id", "")
|
|
||||||
node["classes"] = self.options.get("class", [])
|
|
||||||
node["show-when"] = self.options.get("show-when", "")
|
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
|
||||||
return [node]
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableHead(nodes.General, nodes.Element):
|
|
||||||
"""A table header section (renders <thead>).</thead>"""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def visit_html(translator, node):
|
|
||||||
translator.body.append("<!-- start table head --><thead>")
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def depart_html(translator, node):
|
|
||||||
translator.body.append("</thead><!-- end table head -->")
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableHeadDirective(SphinxDirective):
|
|
||||||
""".. matrix-head::"""
|
|
||||||
|
|
||||||
has_content = True
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
node = CustomTableHead()
|
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
|
||||||
return [node]
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableRow(nodes.General, nodes.Element):
|
|
||||||
"""A table row (<tr> inside <thead> or <tbody>)."""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def visit_html(translator, node):
|
|
||||||
# handle automatic <tbody> opening for body rows
|
|
||||||
if not node.get("header-row", False):
|
|
||||||
if not getattr(translator, "_in_matrix_body", False):
|
|
||||||
translator.body.append("<!-- start tbody --><tbody>")
|
|
||||||
translator._in_matrix_body = True
|
|
||||||
|
|
||||||
show_when_attr = kv_to_data_attr("show-when", node.get("show-when", ""))
|
|
||||||
disable_when_attr = kv_to_data_attr(
|
|
||||||
"disable-when", node.get("disable-when", "")
|
|
||||||
)
|
|
||||||
|
|
||||||
classes = " ".join(node.get("classes", []))
|
|
||||||
attrs = []
|
|
||||||
if classes:
|
|
||||||
attrs.append(f'class="{classes}"')
|
|
||||||
if show_when_attr:
|
|
||||||
attrs.append(show_when_attr)
|
|
||||||
if disable_when_attr:
|
|
||||||
attrs.append(disable_when_attr)
|
|
||||||
|
|
||||||
attrs_str = "" if not attrs else " " + " ".join(attrs)
|
|
||||||
translator.body.append(f"<!-- start custom-table row --><tr{attrs_str}>")
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def depart_html(translator, node):
|
|
||||||
translator.body.append("</tr><!-- end custom-table row -->")
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableRowDirective(SphinxDirective):
|
|
||||||
""".. matrix-row::"""
|
|
||||||
|
|
||||||
required_arguments = 0
|
|
||||||
final_argument_whitespace = True
|
|
||||||
has_content = True
|
|
||||||
option_spec = {
|
|
||||||
"class": directives.class_option,
|
|
||||||
"show-when": directives.unchanged,
|
|
||||||
"disable-when": directives.unchanged,
|
|
||||||
"header": directives.flag,
|
|
||||||
}
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
node = CustomTableRow()
|
|
||||||
node["classes"] = self.options.get("class", [])
|
|
||||||
node["show-when"] = self.options.get("show-when", "")
|
|
||||||
node["disable-when"] = self.options.get("disable-when", "")
|
|
||||||
node["header-row"] = self.options.get("header", False) is not False
|
|
||||||
|
|
||||||
# Parse nested cells
|
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
|
||||||
|
|
||||||
# Inherit header status if inside matrix-head
|
|
||||||
parent_in_head = any(
|
|
||||||
isinstance(p, CustomTableHead)
|
|
||||||
for p in self.state.parent.traverse(include_self=True)
|
|
||||||
)
|
|
||||||
if parent_in_head:
|
|
||||||
node["header-row"] = True
|
|
||||||
|
|
||||||
# Mark all cells as headers if this is a header row
|
|
||||||
if node["header-row"]:
|
|
||||||
for cell in node.findall(CustomTableCell):
|
|
||||||
if "header" not in cell:
|
|
||||||
cell["header"] = True
|
|
||||||
|
|
||||||
# Sanity check
|
|
||||||
parent = getattr(self.state, "parent", None)
|
|
||||||
if not parent or not any(
|
|
||||||
isinstance(p, (CustomTable, CustomTableHead))
|
|
||||||
for p in parent.traverse(include_self=True)
|
|
||||||
):
|
|
||||||
logger.warning(
|
|
||||||
"'.. matrix-row::' at line %s should be nested under a '.. matrix::'.",
|
|
||||||
self.lineno,
|
|
||||||
location=(self.env.docname, self.lineno),
|
|
||||||
)
|
|
||||||
|
|
||||||
return [node]
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableCell(nodes.General, nodes.Element):
|
|
||||||
"""A table cell (<td> or <th>)."""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def visit_html(translator, node):
|
|
||||||
is_header = bool(node.get("header", False))
|
|
||||||
tag = "th" if is_header else "td"
|
|
||||||
|
|
||||||
classes = " ".join(node.get("classes", []))
|
|
||||||
colspan = node.get("colspan", 1)
|
|
||||||
rowspan = node.get("rowspan", 1)
|
|
||||||
show_when_attr = kv_to_data_attr("show-when", node.get("show-when", ""))
|
|
||||||
|
|
||||||
attrs = []
|
|
||||||
if classes:
|
|
||||||
attrs.append(f'class="{classes}"')
|
|
||||||
if colspan and colspan > 1:
|
|
||||||
attrs.append(f'colspan="{colspan}"')
|
|
||||||
if rowspan and rowspan > 1:
|
|
||||||
attrs.append(f'rowspan="{rowspan}"')
|
|
||||||
if show_when_attr:
|
|
||||||
attrs.append(show_when_attr)
|
|
||||||
|
|
||||||
attrs_str = "" if not attrs else " " + " ".join(attrs)
|
|
||||||
translator.body.append(f"<{tag}{attrs_str}>")
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def depart_html(translator, node):
|
|
||||||
tag = "th" if node.get("header", False) else "td"
|
|
||||||
translator.body.append(f"</{tag}>")
|
|
||||||
|
|
||||||
|
|
||||||
class CustomTableCellDirective(SphinxDirective):
|
|
||||||
""".. matrix-cell::"""
|
|
||||||
|
|
||||||
required_arguments = 0
|
|
||||||
optional_arguments = 1
|
|
||||||
final_argument_whitespace = True
|
|
||||||
has_content = True
|
|
||||||
option_spec = {
|
|
||||||
"header": directives.flag,
|
|
||||||
"class": directives.class_option,
|
|
||||||
"colspan": directives.nonnegative_int,
|
|
||||||
"rowspan": directives.nonnegative_int,
|
|
||||||
"show-when": directives.unchanged,
|
|
||||||
}
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
label = self.arguments[0] if self.arguments else ""
|
|
||||||
node = CustomTableCell()
|
|
||||||
|
|
||||||
# Explicit :header: always wins
|
|
||||||
explicit_header = self.options.get("header", False) is not False
|
|
||||||
|
|
||||||
# Detect if the parent row (matrix-row) or one of its ancestors
|
|
||||||
# (matrix-head) marks this as a header section.
|
|
||||||
parent_header_row = False
|
|
||||||
parent_node = getattr(self.state, "parent", None)
|
|
||||||
if parent_node:
|
|
||||||
for ancestor in parent_node.traverse(include_self=True):
|
|
||||||
if isinstance(ancestor, CustomTableRow) and ancestor.get("header-row", False):
|
|
||||||
parent_header_row = True
|
|
||||||
break
|
|
||||||
if isinstance(ancestor, CustomTableHead):
|
|
||||||
parent_header_row = True
|
|
||||||
break
|
|
||||||
node["header"] = explicit_header or parent_header_row
|
|
||||||
node["classes"] = self.options.get("class", [])
|
|
||||||
node["colspan"] = self.options.get("colspan", 1)
|
|
||||||
node["rowspan"] = self.options.get("rowspan", 1)
|
|
||||||
node["show-when"] = self.options.get("show-when", "")
|
|
||||||
|
|
||||||
if self.content:
|
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
|
||||||
elif label:
|
|
||||||
node += nodes.Text(label)
|
|
||||||
|
|
||||||
# Sanity check nesting
|
|
||||||
if not parent_node or not any(
|
|
||||||
isinstance(p, CustomTableRow)
|
|
||||||
for p in parent_node.traverse(include_self=True)
|
|
||||||
):
|
|
||||||
logger.warning(
|
|
||||||
"'.. matrix-cell::' at line %s should be nested under a '.. matrix-row::' directive",
|
|
||||||
self.lineno,
|
|
||||||
location=(self.env.docname, self.lineno),
|
|
||||||
)
|
|
||||||
|
|
||||||
return [node]
|
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
|
||||||
app.add_node(CustomTable, html=(CustomTable.visit_html, CustomTable.depart_html))
|
|
||||||
app.add_node(CustomTableHead, html=(CustomTableHead.visit_html, CustomTableHead.depart_html))
|
|
||||||
app.add_node(CustomTableRow, html=(CustomTableRow.visit_html, CustomTableRow.depart_html))
|
|
||||||
app.add_node(CustomTableCell, html=(CustomTableCell.visit_html, CustomTableCell.depart_html))
|
|
||||||
|
|
||||||
app.add_directive("matrix", CustomTableDirective)
|
|
||||||
app.add_directive("matrix-head", CustomTableHeadDirective)
|
|
||||||
app.add_directive("matrix-row", CustomTableRowDirective)
|
|
||||||
app.add_directive("matrix-cell", CustomTableCellDirective)
|
|
||||||
|
|
||||||
static_assets_dir = Path(__file__).parent / "static"
|
|
||||||
app.config.html_static_path.append(str(static_assets_dir))
|
|
||||||
app.add_css_file("table.css")
|
|
||||||
|
|
||||||
return {
|
|
||||||
"version": "1.1",
|
|
||||||
"parallel_read_safe": True,
|
|
||||||
"parallel_write_safe": True,
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,20 @@
|
|||||||
from sphinx.util.docutils import SphinxDirective, directives, nodes
|
from sphinx.util.docutils import SphinxDirective, directives, nodes
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from .utils import kv_to_data_attr, normalize_key, logger
|
from .utils import kv_to_data_attr, normalize_key
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
|
|
||||||
class SelectorGroup(nodes.General, nodes.Element):
|
class SelectorGroup(nodes.General, nodes.Element):
|
||||||
"""
|
"""
|
||||||
A row or dropdown within a selector container.
|
A row within a selector container.
|
||||||
|
|
||||||
|
rST usage:
|
||||||
|
|
||||||
|
.. selector-group:: Heading
|
||||||
|
:key:
|
||||||
|
:show-when: os=ubuntu (list of key=value pairs separated by spaces)
|
||||||
|
:heading-width: 4 (defaults to 6)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -13,46 +23,32 @@ class SelectorGroup(nodes.General, nodes.Element):
|
|||||||
key = node["key"]
|
key = node["key"]
|
||||||
show_when_attr = kv_to_data_attr("show-when", node["show-when"])
|
show_when_attr = kv_to_data_attr("show-when", node["show-when"])
|
||||||
heading_width = node["heading-width"]
|
heading_width = node["heading-width"]
|
||||||
list_mode = node.get("list", False)
|
icon = node["icon"]
|
||||||
|
|
||||||
# Standard tile mode
|
icon_html = ""
|
||||||
info_nodes = list(node.findall(SelectorInfo))
|
if icon:
|
||||||
info_link = info_nodes[0]["link"] if info_nodes else None
|
icon_html = f'<i class="rocm-docs-selector-icon {icon}"></i>'
|
||||||
info_icon = info_nodes[0]["icon"] if info_nodes else None
|
|
||||||
|
|
||||||
info_icon_html = ""
|
|
||||||
if info_link:
|
|
||||||
info_icon_html = f"""
|
|
||||||
<a href="{info_link}" target="_blank">
|
|
||||||
<i class="rocm-docs-selector-icon {info_icon}"></i>
|
|
||||||
</a>
|
|
||||||
"""
|
|
||||||
|
|
||||||
translator.body.append(
|
translator.body.append(
|
||||||
"<!-- start selector-group row -->"
|
"<!-- start selector-group row -->"
|
||||||
f"""
|
f"""
|
||||||
<div id="{nodes.make_id(label)}"
|
<div id="{nodes.make_id(label)}" class="rocm-docs-selector-group row gx-0 pt-2"
|
||||||
class="rocm-docs-selector-group row gx-0 pt-2"
|
|
||||||
data-selector-key="{key}"
|
data-selector-key="{key}"
|
||||||
{show_when_attr}
|
{show_when_attr}
|
||||||
{'role="radiogroup"' if list_mode else ""}
|
role="radiogroup"
|
||||||
aria-label="{label}"
|
aria-label="{label}"
|
||||||
>
|
>
|
||||||
<div class="col-{heading_width} me-1 px-2 rocm-docs-selector-group-heading">
|
<div class="col-{heading_width} me-1 px-2 rocm-docs-selector-group-heading">
|
||||||
<span class="rocm-docs-selector-group-heading-text">{label}{info_icon_html}</span>
|
<span class="rocm-docs-selector-group-heading-text">{label}{icon_html}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-{12 - heading_width} pe-0">
|
<div class="row col-{12 - heading_width} pe-0">
|
||||||
{f'<select class="form-select rocm-docs-selector-dropdown-list" aria-label="{label}">' if list_mode else ""}
|
|
||||||
""".strip()
|
""".strip()
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def depart_html(translator, node):
|
def depart_html(translator, _):
|
||||||
list_mode = node.get("list", False)
|
|
||||||
|
|
||||||
translator.body.append(
|
translator.body.append(
|
||||||
f"""
|
"""
|
||||||
{"</select>" if list_mode else ""}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
@@ -61,160 +57,90 @@ class SelectorGroup(nodes.General, nodes.Element):
|
|||||||
|
|
||||||
|
|
||||||
class SelectorGroupDirective(SphinxDirective):
|
class SelectorGroupDirective(SphinxDirective):
|
||||||
required_arguments = 1 # title text
|
required_arguments = 1 # tile text
|
||||||
final_argument_whitespace = True
|
final_argument_whitespace = True
|
||||||
has_content = True
|
has_content = True
|
||||||
option_spec = {
|
option_spec = {
|
||||||
"key": directives.unchanged,
|
"key": directives.unchanged,
|
||||||
"show-when": directives.unchanged,
|
"show-when": directives.unchanged,
|
||||||
"heading-width": directives.nonnegative_int,
|
"heading-width": directives.nonnegative_int,
|
||||||
"list": directives.flag,
|
"icon": directives.unchanged,
|
||||||
}
|
}
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
env = self.state.document.settings.env
|
|
||||||
app = env.app
|
|
||||||
|
|
||||||
# Add required JS and CSS if selector exists
|
|
||||||
if not hasattr(env, '_selector_js_added'):
|
|
||||||
static_assets_dir = Path(__file__).parent / "static" / "selector"
|
|
||||||
app.config.html_static_path.append(str(static_assets_dir))
|
|
||||||
|
|
||||||
app.add_js_file("selector.js", type="module", defer="defer")
|
|
||||||
app.add_css_file("selector.css")
|
|
||||||
env._selector_js_added = True
|
|
||||||
|
|
||||||
label = self.arguments[0]
|
label = self.arguments[0]
|
||||||
node = SelectorGroup()
|
node = SelectorGroup()
|
||||||
node["label"] = label
|
node["label"] = label
|
||||||
node["key"] = normalize_key(self.options.get("key", label))
|
node["key"] = normalize_key(self.options.get("key", label))
|
||||||
node["show-when"] = self.options.get("show-when", "")
|
node["show-when"] = self.options.get("show-when", "")
|
||||||
node["heading-width"] = self.options.get("heading-width", 3)
|
node["heading-width"] = self.options.get("heading-width", 3)
|
||||||
node["list"] = "list" in self.options
|
node["icon"] = self.options.get("icon")
|
||||||
|
|
||||||
# Parse nested content (selector-info + selector-option)
|
# Parse nested content
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
self.state.nested_parse(self.content, self.content_offset, node)
|
||||||
|
|
||||||
|
# Find all SelectorOption descendants
|
||||||
option_nodes = list(node.findall(SelectorOption))
|
option_nodes = list(node.findall(SelectorOption))
|
||||||
|
|
||||||
if option_nodes:
|
if option_nodes:
|
||||||
|
# Set the group key on all options
|
||||||
for opt in option_nodes:
|
for opt in option_nodes:
|
||||||
opt["group_key"] = node["key"]
|
opt["group_key"] = node["key"]
|
||||||
opt["list"] = node["list"]
|
|
||||||
|
|
||||||
# Default marking
|
# Find all options marked as default
|
||||||
default_options = [opt for opt in option_nodes if opt["default"]]
|
default_options = [opt for opt in option_nodes if opt["default"]]
|
||||||
if not default_options:
|
|
||||||
|
if default_options:
|
||||||
|
# Multiple options marked :default: - only keep first as default
|
||||||
|
for i, opt in enumerate(default_options):
|
||||||
|
if i > 0:
|
||||||
|
opt["default"] = False
|
||||||
|
else:
|
||||||
|
# No explicit default - make first option default
|
||||||
option_nodes[0]["default"] = True
|
option_nodes[0]["default"] = True
|
||||||
|
|
||||||
return [node]
|
return [node]
|
||||||
|
|
||||||
class SelectorInfo(nodes.General, nodes.Element):
|
|
||||||
"""
|
|
||||||
Represents an informational icon/link associated with a selector group.
|
|
||||||
Appears as a clickable icon in the selector group heading.
|
|
||||||
|
|
||||||
rST usage:
|
|
||||||
|
|
||||||
.. selector:: AMD EPYC Server CPU
|
|
||||||
:key: cpu
|
|
||||||
|
|
||||||
.. selector-info:: https://www.amd.com/en/products/processors/server/epyc.html
|
|
||||||
:icon: fa-solid fa-circle-info fa-lg
|
|
||||||
|
|
||||||
.. selector-option:: EPYC 9005 (5th gen.)
|
|
||||||
:value: 9005
|
|
||||||
"""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def visit_html(translator, node):
|
|
||||||
# Do nothing — rendering handled by SelectorGroup
|
|
||||||
pass
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def depart_html(translator, node):
|
|
||||||
# Do nothing — prevent NotImplementedError
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class SelectorInfoDirective(SphinxDirective):
|
|
||||||
required_arguments = 1 # link URL
|
|
||||||
final_argument_whitespace = True
|
|
||||||
has_content = False
|
|
||||||
option_spec = {"icon": directives.unchanged}
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
node = SelectorInfo()
|
|
||||||
node["link"] = self.arguments[0]
|
|
||||||
node["icon"] = self.options.get("icon", "fa-solid fa-circle-info fa-lg")
|
|
||||||
|
|
||||||
parent = getattr(self.state, "parent", None)
|
|
||||||
if not parent or not any(isinstance(p, SelectorGroup) for p in parent.traverse(include_self=True)):
|
|
||||||
logger.warning(
|
|
||||||
f"'.. selector-info::' at line {self.lineno} should be nested under a '.. selector::' directive",
|
|
||||||
location=(self.env.docname, self.lineno),
|
|
||||||
)
|
|
||||||
|
|
||||||
return [node]
|
|
||||||
|
|
||||||
|
|
||||||
class SelectorOption(nodes.General, nodes.Element):
|
class SelectorOption(nodes.General, nodes.Element):
|
||||||
"""
|
"""
|
||||||
A selectable tile or list-item option within a selector group.
|
A selectable tile within a selector group.
|
||||||
|
|
||||||
|
rST usage:
|
||||||
|
|
||||||
|
.. selector-option::
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def visit_html(translator, node):
|
def visit_html(translator, node):
|
||||||
label = node["label"]
|
|
||||||
value = node["value"]
|
value = node["value"]
|
||||||
show_when_attr = kv_to_data_attr("show-when", node["show-when"])
|
|
||||||
disable_when_attr = kv_to_data_attr("disable-when", node["disable-when"])
|
disable_when_attr = kv_to_data_attr("disable-when", node["disable-when"])
|
||||||
default = node["default"]
|
default = node["default"]
|
||||||
width = node["width"]
|
width = node["width"]
|
||||||
list_mode = node.get("list", False)
|
group_key = node.get("group_key", "")
|
||||||
|
|
||||||
if list_mode:
|
|
||||||
selected_attr = " selected" if default else ""
|
|
||||||
translator.body.append(
|
|
||||||
f'<option value="{value}"{selected_attr} {show_when_attr} {disable_when_attr}>{label}</option>'
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
default_class = "rocm-docs-selector-option-default" if default else ""
|
default_class = "rocm-docs-selector-option-default" if default else ""
|
||||||
|
|
||||||
# Handle width: either bootstrap col-N or percentage
|
|
||||||
if isinstance(width, str) and width.endswith("%"):
|
|
||||||
width_class = ""
|
|
||||||
width_style = f' style="width: {width}"'
|
|
||||||
else:
|
|
||||||
width_class = f"col-{width}"
|
|
||||||
width_style = ""
|
|
||||||
|
|
||||||
translator.body.append(
|
translator.body.append(
|
||||||
"<!-- start selector-option tile -->"
|
"<!-- start selector-option tile -->"
|
||||||
f"""
|
f"""
|
||||||
<div class="rocm-docs-selector-option {default_class} {width_class} px-2"
|
<div class="rocm-docs-selector-option {default_class} col-{width} px-2"
|
||||||
data-selector-key="{node.get('group_key', '')}"
|
data-selector-key="{group_key}"
|
||||||
data-selector-value="{value}"
|
data-selector-value="{value}"
|
||||||
{show_when_attr}
|
|
||||||
{disable_when_attr}
|
{disable_when_attr}
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
role="radio"
|
role="radio"
|
||||||
aria-checked="false"
|
aria-checked="false"
|
||||||
{width_style}
|
|
||||||
>
|
>
|
||||||
<span>{label}</span>
|
|
||||||
""".strip()
|
""".strip()
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def depart_html(translator, node):
|
def depart_html(translator, node):
|
||||||
list_mode = node.get("list", False)
|
|
||||||
if list_mode:
|
|
||||||
return # no closing tag needed for <option>
|
|
||||||
icon = node["icon"]
|
icon = node["icon"]
|
||||||
if icon:
|
if icon:
|
||||||
translator.body.append(f'<i class="rocm-docs-selector-icon {icon}"></i>')
|
translator.body.append(f'<i class="rocm-docs-selector-icon {icon}"></i>')
|
||||||
translator.body.append("</div><!-- end selector-option tile -->")
|
translator.body.append("</div>" "<!-- end selector-option tile -->")
|
||||||
|
|
||||||
|
|
||||||
class SelectorOptionDirective(SphinxDirective):
|
class SelectorOptionDirective(SphinxDirective):
|
||||||
@@ -222,10 +148,9 @@ class SelectorOptionDirective(SphinxDirective):
|
|||||||
final_argument_whitespace = True
|
final_argument_whitespace = True
|
||||||
option_spec = {
|
option_spec = {
|
||||||
"value": directives.unchanged,
|
"value": directives.unchanged,
|
||||||
"show-when": directives.unchanged,
|
|
||||||
"disable-when": directives.unchanged,
|
"disable-when": directives.unchanged,
|
||||||
"default": directives.flag,
|
"default": directives.flag,
|
||||||
"width": directives.unchanged,
|
"width": directives.nonnegative_int,
|
||||||
"icon": directives.unchanged,
|
"icon": directives.unchanged,
|
||||||
}
|
}
|
||||||
has_content = True
|
has_content = True
|
||||||
@@ -235,52 +160,22 @@ class SelectorOptionDirective(SphinxDirective):
|
|||||||
node = SelectorOption()
|
node = SelectorOption()
|
||||||
node["label"] = label
|
node["label"] = label
|
||||||
node["value"] = normalize_key(self.options.get("value", label))
|
node["value"] = normalize_key(self.options.get("value", label))
|
||||||
node["show-when"] = self.options.get("show-when", "")
|
# node["show-when"] = self.options.get("show-when", "")
|
||||||
node["disable-when"] = self.options.get("disable-when", "")
|
node["disable-when"] = self.options.get("disable-when", "")
|
||||||
node["default"] = self.options.get("default", False) is not False
|
node["default"] = self.options.get("default", False) is not False
|
||||||
|
node["width"] = self.options.get("width", 6)
|
||||||
# Parse width - supports bootstrap (1-12) or percentage (like "25%")
|
|
||||||
width_value = self.options.get("width", "6")
|
|
||||||
if isinstance(width_value, str) and width_value.endswith("%"):
|
|
||||||
try:
|
|
||||||
pct = float(width_value[:-1])
|
|
||||||
if pct <= 0 or pct > 100:
|
|
||||||
raise ValueError("must be between 0 and 100")
|
|
||||||
node["width"] = width_value
|
|
||||||
except ValueError as e:
|
|
||||||
logger.warning(
|
|
||||||
f"Invalid percentage width '{width_value}' ({e}), using default",
|
|
||||||
location=(self.env.docname, self.lineno),
|
|
||||||
)
|
|
||||||
node["width"] = 6
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
col_num = int(width_value)
|
|
||||||
if col_num < 1 or col_num > 12:
|
|
||||||
raise ValueError("must be between 1 and 12")
|
|
||||||
node["width"] = col_num
|
|
||||||
except ValueError as e:
|
|
||||||
logger.warning(
|
|
||||||
f"Invalid width '{width_value}' ({e}), using default",
|
|
||||||
location=(self.env.docname, self.lineno),
|
|
||||||
)
|
|
||||||
node["width"] = 6
|
|
||||||
|
|
||||||
node["icon"] = self.options.get("icon")
|
node["icon"] = self.options.get("icon")
|
||||||
|
|
||||||
parent = getattr(self.state, "parent", None)
|
# Content replaces label if provided
|
||||||
if not parent or not any(isinstance(p, SelectorGroup) for p in parent.traverse(include_self=True)):
|
if self.content:
|
||||||
logger.warning(
|
self.state.nested_parse(self.content, self.content_offset, node)
|
||||||
f"'.. selector-option::' at line {self.lineno} should be nested under a '.. selector::' directive",
|
else:
|
||||||
location=(self.env.docname, self.lineno),
|
node += nodes.Text(label)
|
||||||
)
|
|
||||||
|
|
||||||
return [node]
|
return [node]
|
||||||
|
|
||||||
|
|
||||||
class SelectedContent(nodes.General, nodes.Element):
|
class SelectedContent(nodes.General, nodes.Element):
|
||||||
"""
|
"""
|
||||||
A container to hold documentation content to be shown conditionally.
|
A container to hold conditional content.
|
||||||
|
|
||||||
rST usage::
|
rST usage::
|
||||||
|
|
||||||
@@ -290,21 +185,20 @@ class SelectedContent(nodes.General, nodes.Element):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def visit_html(translator, node):
|
def visit_html(translator, node):
|
||||||
show_when = node.get("show-when", "")
|
show_when_attr = kv_to_data_attr("show-when", node["show-when"])
|
||||||
show_when_attr = kv_to_data_attr("show-when", show_when)
|
|
||||||
classes = " ".join(node.get("class", []))
|
classes = " ".join(node.get("class", []))
|
||||||
heading = node.get("heading", "")
|
heading = node.get("heading", "")
|
||||||
# default to <h2>
|
heading_level = node.get("heading-level") or (SelectedContent._get_depth(node) + 1)
|
||||||
heading_level = min(node.get("heading-level") or 2, 6) # maximum depth is <h6>
|
heading_level = min(heading_level, 6)
|
||||||
|
|
||||||
id_attr = ""
|
|
||||||
heading_elem = ""
|
heading_elem = ""
|
||||||
combined_show_when = node.get("combined-show-when", show_when)
|
|
||||||
if heading:
|
if heading:
|
||||||
id_attr = nodes.make_id(f"{heading}-{combined_show_when}")
|
# HACK to fix secondary sidebar observer
|
||||||
|
suffix = "".join(random.choices(string.ascii_lowercase + string.digits, k=3))
|
||||||
|
id_attr = nodes.make_id(f"{heading}-{suffix}")
|
||||||
|
|
||||||
heading_elem = (
|
heading_elem = (
|
||||||
f'<h{heading_level} class="rocm-docs-custom-heading">'
|
f'<h{heading_level} id="{id_attr}" class="rocm-docs-custom-heading">'
|
||||||
f'{heading}<a class="headerlink" href="#{id_attr}" title="Link to this heading">#</a>'
|
f'{heading}<a class="headerlink" href="#{id_attr}" title="Link to this heading">#</a>'
|
||||||
f'</h{heading_level}>'
|
f'</h{heading_level}>'
|
||||||
)
|
)
|
||||||
@@ -312,22 +206,24 @@ class SelectedContent(nodes.General, nodes.Element):
|
|||||||
translator.body.append(
|
translator.body.append(
|
||||||
f"""
|
f"""
|
||||||
<!-- start selected-content -->
|
<!-- start selected-content -->
|
||||||
<{"section" if heading else "div"}
|
<div class="rocm-docs-selected-content {classes}" {show_when_attr} aria-hidden="true">
|
||||||
id="{id_attr}"
|
|
||||||
class="rocm-docs-selected-content {classes}"
|
|
||||||
{show_when_attr}
|
|
||||||
aria-hidden="true">
|
|
||||||
{heading_elem}
|
{heading_elem}
|
||||||
""".strip()
|
""".strip()
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def depart_html(translator, node):
|
def depart_html(translator, _):
|
||||||
heading = node.get("heading", "")
|
translator.body.append("</div><!-- end selected-content -->")
|
||||||
|
|
||||||
translator.body.append(f"""
|
@staticmethod
|
||||||
</{"section" if heading else "div"}>
|
def _get_depth(node):
|
||||||
<!-- end selected-content -->""")
|
depth = 1
|
||||||
|
parent = node.parent
|
||||||
|
while parent is not None:
|
||||||
|
if isinstance(parent, SelectedContent) and parent.get("heading"):
|
||||||
|
depth += 1
|
||||||
|
parent = getattr(parent, "parent", None)
|
||||||
|
return depth
|
||||||
|
|
||||||
|
|
||||||
class SelectedContentDirective(SphinxDirective):
|
class SelectedContentDirective(SphinxDirective):
|
||||||
@@ -346,20 +242,9 @@ class SelectedContentDirective(SphinxDirective):
|
|||||||
node["show-when"] = self.arguments[0]
|
node["show-when"] = self.arguments[0]
|
||||||
node["id"] = self.options.get("id", "")
|
node["id"] = self.options.get("id", "")
|
||||||
node["class"] = self.options.get("class", "")
|
node["class"] = self.options.get("class", "")
|
||||||
node["heading"] = self.options.get("heading", "")
|
node["heading"] = self.options.get("heading", "") # empty string if none
|
||||||
node["heading-level"] = self.options.get("heading-level", None)
|
node["heading-level"] = self.options.get("heading-level", None)
|
||||||
|
|
||||||
# Collect parent show-whens (if nested)
|
|
||||||
# to create a completely unique id
|
|
||||||
parent_show_whens = []
|
|
||||||
for ancestor in self.state.parent.traverse(include_self=True):
|
|
||||||
if isinstance(ancestor, SelectedContent) and "show-when" in ancestor:
|
|
||||||
parent_show_whens.append(ancestor["show-when"])
|
|
||||||
|
|
||||||
# Compose combined show-when chain
|
|
||||||
combined_show_when = "+".join(parent_show_whens + [node["show-when"]])
|
|
||||||
node["combined-show-when"] = combined_show_when
|
|
||||||
|
|
||||||
# Parse nested content
|
# Parse nested content
|
||||||
self.state.nested_parse(self.content, self.content_offset, node)
|
self.state.nested_parse(self.content, self.content_offset, node)
|
||||||
return [node]
|
return [node]
|
||||||
@@ -370,10 +255,6 @@ def setup(app):
|
|||||||
SelectorGroup,
|
SelectorGroup,
|
||||||
html=(SelectorGroup.visit_html, SelectorGroup.depart_html),
|
html=(SelectorGroup.visit_html, SelectorGroup.depart_html),
|
||||||
)
|
)
|
||||||
app.add_node(
|
|
||||||
SelectorInfo,
|
|
||||||
html=(SelectorInfo.visit_html, SelectorInfo.depart_html),
|
|
||||||
)
|
|
||||||
app.add_node(
|
app.add_node(
|
||||||
SelectorOption,
|
SelectorOption,
|
||||||
html=(SelectorOption.visit_html, SelectorOption.depart_html),
|
html=(SelectorOption.visit_html, SelectorOption.depart_html),
|
||||||
@@ -384,9 +265,13 @@ def setup(app):
|
|||||||
)
|
)
|
||||||
|
|
||||||
app.add_directive("selector", SelectorGroupDirective)
|
app.add_directive("selector", SelectorGroupDirective)
|
||||||
app.add_directive("selector-info", SelectorInfoDirective)
|
|
||||||
app.add_directive("selector-option", SelectorOptionDirective)
|
app.add_directive("selector-option", SelectorOptionDirective)
|
||||||
app.add_directive("selected-content", SelectedContentDirective)
|
app.add_directive("selected-content", SelectedContentDirective)
|
||||||
app.add_directive("selected", SelectedContentDirective)
|
app.add_directive("selected", SelectedContentDirective)
|
||||||
|
|
||||||
return {"version": "1.2", "parallel_read_safe": True}
|
static_assets_dir = Path(__file__).parent / "static"
|
||||||
|
app.config.html_static_path.append(str(static_assets_dir))
|
||||||
|
app.add_css_file("selector.css")
|
||||||
|
app.add_js_file("selector.js", type="module", defer="defer")
|
||||||
|
|
||||||
|
return {"version": "1.0", "parallel_read_safe": True}
|
||||||
|
|||||||
@@ -7,11 +7,6 @@ html {
|
|||||||
--rocm-docs-selector-option-hover-color: var(--pst-color-link-hover);
|
--rocm-docs-selector-option-hover-color: var(--pst-color-link-hover);
|
||||||
--rocm-docs-selector-option-selected-color: var(--pst-color-primary);
|
--rocm-docs-selector-option-selected-color: var(--pst-color-primary);
|
||||||
--rocm-docs-selector-tile-padding: 0.2rem;
|
--rocm-docs-selector-tile-padding: 0.2rem;
|
||||||
--rocm-docs-selector-tile-gap: 0.5rem;
|
|
||||||
--rocm-docs-selector-focus-ring: 2px solid var(
|
|
||||||
--rocm-docs-selector-accent-color
|
|
||||||
);
|
|
||||||
--rocm-docs-selector-focus-offset: 2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html[data-theme="light"] {
|
html[data-theme="light"] {
|
||||||
@@ -26,37 +21,15 @@ html[data-theme="dark"] {
|
|||||||
--rocm-docs-selector-shadow-hover: 0 2px 8px rgba(0, 0, 0, 0.4);
|
--rocm-docs-selector-shadow-hover: 0 2px 8px rgba(0, 0, 0, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Avoid odd sizing interactions with Bootstrap width utilities */
|
/* Selector container */
|
||||||
.rocm-docs-selector-group,
|
.rocm-docs-selector-container {
|
||||||
.rocm-docs-selector-group * {
|
padding: 0 0 1rem 0;
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hide selectors during initialization to prevent FOUC */
|
/* Selector group heading when one of its options is hovered */
|
||||||
.rocm-docs-selector-group:not(.rocm-docs-selector-initialized) {
|
.rocm-docs-selector-group:has(.rocm-docs-selector-option:hover)
|
||||||
visibility: hidden;
|
.rocm-docs-selector-group-heading {
|
||||||
}
|
border-right-color: var(--rocm-docs-selector-option-hover-color);
|
||||||
|
|
||||||
/* Smooth fade-in when ready */
|
|
||||||
.rocm-docs-selector-group.rocm-docs-selector-initialized {
|
|
||||||
visibility: visible;
|
|
||||||
animation: rocm-docs-selector-fade-in 0.2s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes rocm-docs-selector-fade-in {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports selector(.x:has(.y)) {
|
|
||||||
.rocm-docs-selector-group:has(.rocm-docs-selector-option:hover)
|
|
||||||
.rocm-docs-selector-group-heading {
|
|
||||||
border-right-color: var(--rocm-docs-selector-option-hover-color);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector group heading box */
|
/* Selector group heading box */
|
||||||
@@ -66,7 +39,7 @@ html[data-theme="dark"] {
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
border-right: solid 3px var(--rocm-docs-selector-accent-color);
|
border-right: solid 3px var(--rocm-docs-selector-accent-color);
|
||||||
border-radius: var(--rocm-docs-selector-border-radius);
|
border-radius: var(--rocm-docs-selector-border-radius);
|
||||||
transition: border-color 0.25s ease;
|
transition: border-right-color 0.25s ease;
|
||||||
box-shadow: var(--rocm-docs-selector-shadow);
|
box-shadow: var(--rocm-docs-selector-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,25 +57,16 @@ html[data-theme="dark"] {
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
|
|
||||||
background-color: var(--rocm-docs-selector-bg-color);
|
background-color: var(--rocm-docs-selector-bg-color);
|
||||||
padding: var(--rocm-docs-selector-tile-padding);
|
padding: var(--rocm-docs-selector-tile-padding);
|
||||||
border: solid 2px var(--rocm-docs-selector-border-color);
|
border: solid 2px var(--rocm-docs-selector-border-color);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2 ease;
|
||||||
border-radius: var(--rocm-docs-selector-border-radius);
|
border-radius: var(--rocm-docs-selector-border-radius);
|
||||||
box-shadow: var(--rocm-docs-selector-shadow);
|
box-shadow: var(--rocm-docs-selector-shadow);
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
user-select: none;
|
|
||||||
|
|
||||||
transition:
|
|
||||||
background-color 0.2s ease,
|
|
||||||
color 0.2s ease,
|
|
||||||
transform 0.2s ease,
|
|
||||||
box-shadow 0.2s ease,
|
|
||||||
border-color 0.2s ease;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hover (not disabled) */
|
/* Selector option when hovered */
|
||||||
.rocm-docs-selector-option:hover:not(.rocm-docs-disabled) {
|
.rocm-docs-selector-option:hover:not(.rocm-docs-disabled) {
|
||||||
background-color: var(--rocm-docs-selector-option-hover-color);
|
background-color: var(--rocm-docs-selector-option-hover-color);
|
||||||
color: var(--rocm-docs-selector-fg-color);
|
color: var(--rocm-docs-selector-fg-color);
|
||||||
@@ -110,94 +74,30 @@ html[data-theme="dark"] {
|
|||||||
box-shadow: var(--rocm-docs-selector-shadow-hover);
|
box-shadow: var(--rocm-docs-selector-shadow-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Accessible keyboard focus */
|
|
||||||
.rocm-docs-selector-option:focus-visible:not(.rocm-docs-disabled) {
|
|
||||||
outline: var(--rocm-docs-selector-focus-ring);
|
|
||||||
outline-offset: var(--rocm-docs-selector-focus-offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Keep it above neighbors if it gets an outline/box-shadow */
|
|
||||||
.rocm-docs-selector-option:focus:not(.rocm-docs-disabled) {
|
.rocm-docs-selector-option:focus:not(.rocm-docs-disabled) {
|
||||||
position: relative;
|
z-index: 69;
|
||||||
z-index: 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selected */
|
/* Selector option when selected */
|
||||||
.rocm-docs-selector-option.rocm-docs-selected {
|
.rocm-docs-selector-option.rocm-docs-selected {
|
||||||
background-color: var(--rocm-docs-selector-option-selected-color);
|
background-color: var(--rocm-docs-selector-option-selected-color);
|
||||||
color: var(--rocm-docs-selector-fg-color);
|
color: var(--rocm-docs-selector-fg-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prevent hover lift on selected (keeps it steady) */
|
/* Prevent hover effect on selected */
|
||||||
.rocm-docs-selector-option.rocm-docs-selected:hover {
|
.rocm-docs-selector-option.rocm-docs-selected:hover {
|
||||||
transform: none;
|
transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disabled */
|
/* Selector option when disabled */
|
||||||
.rocm-docs-selector-option.rocm-docs-disabled {
|
.rocm-docs-selector-option.rocm-docs-disabled {
|
||||||
background-color: var(--rocm-docs-selector-border-color);
|
background-color: var(--rocm-docs-selector-border-color);
|
||||||
color: var(--rocm-docs-selector-fg-color);
|
color: var(--rocm-docs-selector-fg-color);
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
opacity: 0.75;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hidden state */
|
/* Hidden state */
|
||||||
.rocm-docs-hidden {
|
.rocm-docs-hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put selected option summary in secondary page-level TOC on a new line */
|
|
||||||
.rocm-docs-selector-toc2-item .nav-link span {
|
|
||||||
display: block;
|
|
||||||
padding-left: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.rocm-docs-selector-group {
|
|
||||||
row-gap: var(--rocm-docs-selector-tile-gap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 576px) {
|
|
||||||
.rocm-docs-selector-option {
|
|
||||||
flex: 0 0 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 440px) {
|
|
||||||
.rocm-docs-selector-group-heading {
|
|
||||||
flex: 0 0 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
|
|
||||||
/* When stacked, puth the accent on the bottom */
|
|
||||||
border-right: 0;
|
|
||||||
border-bottom: solid 3px var(--rocm-docs-selector-accent-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-selector-group.row .row {
|
|
||||||
flex: 0 0 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-selector-option {
|
|
||||||
flex: 0 0 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Motion reduction */
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
.rocm-docs-selector-group.rocm-docs-selector-initialized {
|
|
||||||
animation: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-selector-option {
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rocm-docs-selector-option:hover:not(.rocm-docs-disabled) {
|
|
||||||
transform: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
300
docs/extension/rocm_docs_custom/static/selector.js
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
const READY_EVENT = "ROCmDocsSelectorsReady";
|
||||||
|
const STATE_CHANGE_EVENT = "ROCmDocsSelectorStateChanged";
|
||||||
|
|
||||||
|
const GROUP_QUERY = ".rocm-docs-selector-group";
|
||||||
|
const OPTION_QUERY = ".rocm-docs-selector-option";
|
||||||
|
const COND_QUERY = "[data-show-when]";
|
||||||
|
const TOC2_OPTIONS_LIST_QUERY = ".rocm-docs-selector-toc2-options";
|
||||||
|
const TOC2_CONTENTS_LIST_QUERY = ".rocm-docs-selector-toc2-contents";
|
||||||
|
const HEADING_QUERY = ".rocm-docs-selected-content h1,h2,h3,h4,h5,h6[id]";
|
||||||
|
|
||||||
|
const isDefaultOption = (elem) =>
|
||||||
|
elem.classList.contains("rocm-docs-selector-option-default");
|
||||||
|
|
||||||
|
const DISABLED_CLASS = "rocm-docs-disabled";
|
||||||
|
const disable = (elem) => {
|
||||||
|
elem.classList.add(DISABLED_CLASS);
|
||||||
|
elem.setAttribute("aria-disabled", "true");
|
||||||
|
elem.setAttribute("tabindex", "-1");
|
||||||
|
};
|
||||||
|
// const enable = (elem) => {
|
||||||
|
// elem.classList.remove(DISABLED_CLASS);
|
||||||
|
// elem.setAttribute("aria-disabled", "false");
|
||||||
|
// elem.setAttribute("tabindex", "0");
|
||||||
|
// };
|
||||||
|
|
||||||
|
const HIDDEN_CLASS = "rocm-docs-hidden";
|
||||||
|
const hide = (elem) => {
|
||||||
|
elem.classList.add(HIDDEN_CLASS);
|
||||||
|
elem.setAttribute("aria-hidden", "true");
|
||||||
|
};
|
||||||
|
const show = (elem) => {
|
||||||
|
elem.classList.remove(HIDDEN_CLASS);
|
||||||
|
elem.setAttribute("aria-hidden", "false");
|
||||||
|
};
|
||||||
|
|
||||||
|
const SELECTED_CLASS = "rocm-docs-selected";
|
||||||
|
const select = (elem) => {
|
||||||
|
elem.classList.add(SELECTED_CLASS);
|
||||||
|
elem.setAttribute("aria-checked", "true");
|
||||||
|
};
|
||||||
|
const deselect = (elem) => {
|
||||||
|
elem.classList.remove(SELECTED_CLASS);
|
||||||
|
elem.setAttribute("aria-checked", "false");
|
||||||
|
};
|
||||||
|
|
||||||
|
const state = {};
|
||||||
|
|
||||||
|
function getState() {
|
||||||
|
return { ...state };
|
||||||
|
}
|
||||||
|
|
||||||
|
function setState(updates) {
|
||||||
|
const previousState = getState();
|
||||||
|
Object.assign(state, updates);
|
||||||
|
|
||||||
|
const event = new CustomEvent(STATE_CHANGE_EVENT, {
|
||||||
|
detail: {
|
||||||
|
previousState,
|
||||||
|
currentState: getState(),
|
||||||
|
changes: updates,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
document.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateOptionElem(optionElem) {
|
||||||
|
const key = optionElem.dataset.selectorKey;
|
||||||
|
const value = optionElem.dataset.selectorValue;
|
||||||
|
|
||||||
|
const errors = [];
|
||||||
|
if (!key) errors.push("Missing 'data-selector-key'");
|
||||||
|
if (!value) errors.push("Missing 'data-selector-value'");
|
||||||
|
|
||||||
|
if (errors.length === 0) return;
|
||||||
|
|
||||||
|
const label = optionElem.textContent.trim() || "<unnamed option>";
|
||||||
|
console.error(
|
||||||
|
`[ROCmDocsSelector] Invalid selector option '${label}': ${
|
||||||
|
errors.join(", ")
|
||||||
|
}!`,
|
||||||
|
);
|
||||||
|
disable(optionElem);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleOptionSelect(e) {
|
||||||
|
const option = e.currentTarget;
|
||||||
|
const parentGroup = option.closest(GROUP_QUERY);
|
||||||
|
const siblingOptions = parentGroup.querySelectorAll(OPTION_QUERY);
|
||||||
|
|
||||||
|
siblingOptions.forEach((elem) => deselect(elem));
|
||||||
|
select(option);
|
||||||
|
|
||||||
|
// Update global state
|
||||||
|
const key = option.dataset.selectorKey;
|
||||||
|
const value = option.dataset.selectorValue;
|
||||||
|
if (key && value) setState({ [key]: value });
|
||||||
|
|
||||||
|
updateVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
function shouldBeShown(elem) {
|
||||||
|
const conditionsData = elem.dataset.showWhen;
|
||||||
|
if (!conditionsData) return true; // Default visible
|
||||||
|
|
||||||
|
try {
|
||||||
|
const conditions = JSON.parse(conditionsData);
|
||||||
|
// Ensure it's an object
|
||||||
|
if (typeof conditions !== "object" || Array.isArray(conditions)) {
|
||||||
|
console.warn(
|
||||||
|
"[ROCmDocsSelector] Invalid 'show-when' format (must be key/value object):",
|
||||||
|
conditionsData,
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [key, value] of Object.entries(conditions)) {
|
||||||
|
const currentValue = state[key];
|
||||||
|
|
||||||
|
if (currentValue === undefined) return false;
|
||||||
|
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
if (!value.includes(currentValue)) return false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state[key] !== value) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(
|
||||||
|
"[ROCmDocsSelector] Couldn't parse 'show-when' conditions:",
|
||||||
|
err,
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateTOC2OptionsList() {
|
||||||
|
const tocOptionsList = document.querySelector(TOC2_OPTIONS_LIST_QUERY);
|
||||||
|
if (!tocOptionsList) return;
|
||||||
|
|
||||||
|
// Clear previous entries
|
||||||
|
tocOptionsList.innerHTML = "";
|
||||||
|
|
||||||
|
// Get only visible selector groups
|
||||||
|
const groups = Array.from(document.querySelectorAll(GROUP_QUERY)).filter(
|
||||||
|
(g) => g.offsetParent !== null
|
||||||
|
);
|
||||||
|
|
||||||
|
if (groups.length === 0) {
|
||||||
|
const li = document.createElement("li");
|
||||||
|
li.className =
|
||||||
|
"nav-item toc-entry toc-h3 rocm-docs-selector-toc2-item empty";
|
||||||
|
const span = document.createElement("span");
|
||||||
|
span.textContent = "(no visible selectors)";
|
||||||
|
li.appendChild(span);
|
||||||
|
tocOptionsList.appendChild(li);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
groups.forEach((group) => {
|
||||||
|
// ✅ Find group heading span
|
||||||
|
const headingSpan = group.querySelector(
|
||||||
|
".rocm-docs-selector-group-heading-text"
|
||||||
|
);
|
||||||
|
const headingText = headingSpan
|
||||||
|
? headingSpan.textContent.trim()
|
||||||
|
: "(Unnamed Selector)";
|
||||||
|
|
||||||
|
// Find currently selected option
|
||||||
|
const selectedOption = group.querySelector(`.${SELECTED_CLASS}`);
|
||||||
|
const optionText = selectedOption
|
||||||
|
? selectedOption.textContent.trim()
|
||||||
|
: "(none selected)";
|
||||||
|
|
||||||
|
// Build list item
|
||||||
|
const li = document.createElement("li");
|
||||||
|
li.className = "nav-item toc-entry toc-h3 rocm-docs-selector-toc2-item";
|
||||||
|
|
||||||
|
const link = document.createElement("a");
|
||||||
|
link.className = "nav-link";
|
||||||
|
link.href = `#${group.id}`;
|
||||||
|
link.innerHTML = `<strong>${headingText}</strong>: ${optionText}`;
|
||||||
|
|
||||||
|
li.appendChild(link);
|
||||||
|
tocOptionsList.appendChild(li);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateTOC2ContentsList() {
|
||||||
|
const tocOptionsList = document.querySelector(TOC2_OPTIONS_LIST_QUERY);
|
||||||
|
const tocContentsList = document.querySelector(TOC2_CONTENTS_LIST_QUERY);
|
||||||
|
if (!tocContentsList || !tocOptionsList) return;
|
||||||
|
|
||||||
|
const visibleHeaders = [...document.querySelectorAll(HEADING_QUERY)]
|
||||||
|
.filter((h) => h.offsetParent !== null); // only visible headings
|
||||||
|
|
||||||
|
tocContentsList
|
||||||
|
.querySelectorAll("li.toc-entry.rocm-docs-selector-toc2-item")
|
||||||
|
.forEach((node) => node.remove());
|
||||||
|
|
||||||
|
if (visibleHeaders.length === 0) return;
|
||||||
|
|
||||||
|
let lastH2Li = null;
|
||||||
|
|
||||||
|
visibleHeaders.forEach((h) => {
|
||||||
|
const level = parseInt(h.tagName.substring(1), 10);
|
||||||
|
const li = document.createElement("li");
|
||||||
|
li.className = `nav-item toc-entry toc-${h.tagName.toLowerCase()} rocm-docs-selector-toc2-item`;
|
||||||
|
|
||||||
|
const a = document.createElement("a");
|
||||||
|
a.className = "reference internal nav-link";
|
||||||
|
const section = h.closest("section");
|
||||||
|
const fallbackId = section ? section.id : "";
|
||||||
|
a.href = h.id ? `#${h.id}` : fallbackId ? `#${fallbackId}` : "#";
|
||||||
|
a.textContent = h.cloneNode(true).childNodes[0].textContent.trim();
|
||||||
|
li.appendChild(a);
|
||||||
|
|
||||||
|
// Nest logic: h3+ belong to last h2's inner list
|
||||||
|
if (level === 2) {
|
||||||
|
tocContentsList.appendChild(li);
|
||||||
|
lastH2Li = li;
|
||||||
|
} else if (level === 3 && lastH2Li) {
|
||||||
|
// ensure nested UL exists
|
||||||
|
let innerUl = lastH2Li.querySelector("ul");
|
||||||
|
if (!innerUl) {
|
||||||
|
innerUl = document.createElement("ul");
|
||||||
|
innerUl.className = "nav section-nav flex-column";
|
||||||
|
lastH2Li.appendChild(innerUl);
|
||||||
|
}
|
||||||
|
innerUl.appendChild(li);
|
||||||
|
} else {
|
||||||
|
tocContentsList.appendChild(li);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateVisibility() {
|
||||||
|
document.querySelectorAll(COND_QUERY).forEach((elem) => {
|
||||||
|
if (shouldBeShown(elem)) {
|
||||||
|
show(elem);
|
||||||
|
} else {
|
||||||
|
hide(elem);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
updateTOC2OptionsList();
|
||||||
|
updateTOC2ContentsList();
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
const selectorOptions = document.querySelectorAll(OPTION_QUERY);
|
||||||
|
|
||||||
|
const initialState = {};
|
||||||
|
|
||||||
|
// Attach listeners and gather defaults
|
||||||
|
selectorOptions.forEach((option) => {
|
||||||
|
validateOptionElem(option);
|
||||||
|
|
||||||
|
option.addEventListener("click", handleOptionSelect);
|
||||||
|
option.addEventListener("keydown", (e) => {
|
||||||
|
if (e.key === "Enter" || e.key === " ") {
|
||||||
|
e.preventDefault();
|
||||||
|
handleOptionSelect(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isDefaultOption(option)) {
|
||||||
|
select(option);
|
||||||
|
const { selectorKey: key, selectorValue: value } = option.dataset;
|
||||||
|
if (key && value) {
|
||||||
|
initialState[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setState(initialState);
|
||||||
|
updateVisibility();
|
||||||
|
|
||||||
|
document.dispatchEvent(new CustomEvent(READY_EVENT));
|
||||||
|
}
|
||||||
|
|
||||||
|
function domReady(callback) {
|
||||||
|
if (document.readyState !== "loading") {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
document.addEventListener("DOMContentLoaded", callback, { once: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// window.rocmDocsSelector = {
|
||||||
|
// setState,
|
||||||
|
// getState,
|
||||||
|
// };
|
||||||
|
|
||||||
|
// Initialize when DOM is ready
|
||||||
|
domReady(init);
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
const GROUP_QUERY = ".rocm-docs-selector-group";
|
|
||||||
const SELECTED_CLASS = "rocm-docs-selected";
|
|
||||||
const TOC2_OPTIONS_LIST_QUERY = ".rocm-docs-selector-toc2-options";
|
|
||||||
const TOC2_CONTENTS_LIST_QUERY = ".rocm-docs-selector-toc2-contents";
|
|
||||||
const HEADING_QUERY = ".rocm-docs-selected-content h1,h2,h3,h4,h5,h6";
|
|
||||||
|
|
||||||
const TOC_ITEM_CLASS = "rocm-docs-selector-toc2-item";
|
|
||||||
const EMPTY_ITEM_CLASS = "empty";
|
|
||||||
|
|
||||||
function isVisible(el) {
|
|
||||||
return !!(el && el.offsetParent !== null);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getUniqueGroups(groups) {
|
|
||||||
const seen = new Set();
|
|
||||||
return groups.filter((group) => {
|
|
||||||
// Use group ID as primary identity; fallback to heading text
|
|
||||||
const headingSpan = group.querySelector(
|
|
||||||
".rocm-docs-selector-group-heading-text"
|
|
||||||
);
|
|
||||||
const headingText = headingSpan
|
|
||||||
? headingSpan.textContent.trim()
|
|
||||||
: "(Unnamed Selector)";
|
|
||||||
const identifier = group.id ? `id:${group.id}` : `heading:${headingText}`;
|
|
||||||
|
|
||||||
if (seen.has(identifier)) return false;
|
|
||||||
seen.add(identifier);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function updateTOC2OptionsList() {
|
|
||||||
const tocOptionsList = document.querySelector(TOC2_OPTIONS_LIST_QUERY);
|
|
||||||
if (!tocOptionsList) return;
|
|
||||||
|
|
||||||
let visibleGroups = Array.from(document.querySelectorAll(GROUP_QUERY)).filter(
|
|
||||||
isVisible
|
|
||||||
);
|
|
||||||
visibleGroups = getUniqueGroups(visibleGroups);
|
|
||||||
|
|
||||||
// Always rebuild fresh (simpler, avoids state drift)
|
|
||||||
tocOptionsList.innerHTML = "";
|
|
||||||
|
|
||||||
if (visibleGroups.length === 0) {
|
|
||||||
const li = document.createElement("li");
|
|
||||||
li.className = `nav-item toc-entry toc-h3 ${TOC_ITEM_CLASS} ${EMPTY_ITEM_CLASS}`;
|
|
||||||
const span = document.createElement("span");
|
|
||||||
span.textContent = "(no visible selectors)";
|
|
||||||
li.appendChild(span);
|
|
||||||
tocOptionsList.appendChild(li);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
visibleGroups.forEach((group) => {
|
|
||||||
const headingSpan = group.querySelector(
|
|
||||||
".rocm-docs-selector-group-heading-text"
|
|
||||||
);
|
|
||||||
const headingText = headingSpan
|
|
||||||
? headingSpan.textContent.trim()
|
|
||||||
: "(Unnamed Selector)";
|
|
||||||
|
|
||||||
const li = document.createElement("li");
|
|
||||||
li.className = `nav-item toc-entry toc-h3 ${TOC_ITEM_CLASS}`;
|
|
||||||
li.dataset.groupId = group.id || "";
|
|
||||||
|
|
||||||
const link = document.createElement("a");
|
|
||||||
link.className = "nav-link";
|
|
||||||
link.href = group.id ? `#${group.id}` : "#";
|
|
||||||
link.dataset.headingText = headingText;
|
|
||||||
|
|
||||||
const selectedOption = group.querySelector(`.${SELECTED_CLASS}`);
|
|
||||||
let optionText = "(none selected)";
|
|
||||||
if (selectedOption) {
|
|
||||||
const clone = selectedOption.cloneNode(true);
|
|
||||||
clone.querySelectorAll("i, svg").forEach((el) => el.remove());
|
|
||||||
optionText = clone.innerHTML.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
link.innerHTML = `<strong>${headingText}</strong>: ${optionText}`;
|
|
||||||
li.appendChild(link);
|
|
||||||
tocOptionsList.appendChild(li);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let contentsTocInitialized = false;
|
|
||||||
|
|
||||||
function initTOC2ContentsList() {
|
|
||||||
const tocContentsList = document.querySelector(TOC2_CONTENTS_LIST_QUERY);
|
|
||||||
if (!tocContentsList) return;
|
|
||||||
|
|
||||||
// Remove any previous dynamic items (idempotent init)
|
|
||||||
tocContentsList
|
|
||||||
.querySelectorAll(`li.toc-entry.${TOC_ITEM_CLASS}`)
|
|
||||||
.forEach((node) => node.remove());
|
|
||||||
|
|
||||||
const headings = Array.from(document.querySelectorAll(HEADING_QUERY));
|
|
||||||
if (headings.length === 0) {
|
|
||||||
contentsTocInitialized = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastLiByLevel = {};
|
|
||||||
|
|
||||||
headings.forEach((h) => {
|
|
||||||
const level = parseInt(h.tagName.substring(1), 10);
|
|
||||||
if (Number.isNaN(level) || level < 2 || level > 6) return;
|
|
||||||
|
|
||||||
const li = document.createElement("li");
|
|
||||||
li.className = `nav-item toc-entry toc-${h.tagName.toLowerCase()} ` +
|
|
||||||
TOC_ITEM_CLASS;
|
|
||||||
|
|
||||||
const a = document.createElement("a");
|
|
||||||
a.className = "reference internal nav-link";
|
|
||||||
|
|
||||||
const section = h.closest("section");
|
|
||||||
const targetId = h.id || (section ? section.id : "");
|
|
||||||
a.href = targetId ? `#${targetId}` : "#";
|
|
||||||
|
|
||||||
// Use only the text from the heading (ignore headerlink icon etc.)
|
|
||||||
const clone = h.cloneNode(true);
|
|
||||||
const firstTextNode = clone.childNodes.length > 0
|
|
||||||
? clone.childNodes[0].textContent
|
|
||||||
: "";
|
|
||||||
a.textContent = (firstTextNode || "").trim();
|
|
||||||
|
|
||||||
li.dataset.targetId = targetId;
|
|
||||||
li.appendChild(a);
|
|
||||||
|
|
||||||
// Nest under closest previous shallower heading
|
|
||||||
let parentUl = null;
|
|
||||||
for (let parentLevel = level - 1; parentLevel >= 2; parentLevel -= 1) {
|
|
||||||
const parentLi = lastLiByLevel[parentLevel];
|
|
||||||
if (parentLi) {
|
|
||||||
parentUl = parentLi.querySelector("ul");
|
|
||||||
if (!parentUl) {
|
|
||||||
parentUl = document.createElement("ul");
|
|
||||||
parentUl.className = "nav section-nav flex-column";
|
|
||||||
parentLi.appendChild(parentUl);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentUl) {
|
|
||||||
parentUl.appendChild(li);
|
|
||||||
} else {
|
|
||||||
tocContentsList.appendChild(li);
|
|
||||||
}
|
|
||||||
|
|
||||||
lastLiByLevel[level] = li;
|
|
||||||
for (let deeper = level + 1; deeper <= 6; deeper += 1) {
|
|
||||||
delete lastLiByLevel[deeper];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
contentsTocInitialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function updateTOC2ContentsList() {
|
|
||||||
const tocOptionsList = document.querySelector(TOC2_OPTIONS_LIST_QUERY);
|
|
||||||
const tocContentsList = document.querySelector(TOC2_CONTENTS_LIST_QUERY);
|
|
||||||
if (!tocContentsList || !tocOptionsList) return;
|
|
||||||
|
|
||||||
if (!contentsTocInitialized) {
|
|
||||||
initTOC2ContentsList();
|
|
||||||
}
|
|
||||||
|
|
||||||
tocContentsList
|
|
||||||
.querySelectorAll(`li.toc-entry.${TOC_ITEM_CLASS}`)
|
|
||||||
.forEach((li) => {
|
|
||||||
const targetId = li.dataset.targetId;
|
|
||||||
if (!targetId) {
|
|
||||||
li.style.display = "none";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const target = document.getElementById(targetId);
|
|
||||||
const visible = target && target.offsetParent !== null;
|
|
||||||
li.style.display = visible ? "" : "none";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,441 +0,0 @@
|
|||||||
import { domReady, logDebug } from "./utils.js";
|
|
||||||
import {
|
|
||||||
updateTOC2ContentsList,
|
|
||||||
updateTOC2OptionsList,
|
|
||||||
} from "./selector-toc.js";
|
|
||||||
|
|
||||||
const GROUP_QUERY = ".rocm-docs-selector-group";
|
|
||||||
const OPTION_QUERY = ".rocm-docs-selector-option";
|
|
||||||
const COND_QUERY = "[data-show-when],[data-disable-when]";
|
|
||||||
|
|
||||||
const DEFAULT_OPTION_CLASS = "rocm-docs-selector-option-default";
|
|
||||||
const DISABLED_CLASS = "rocm-docs-disabled";
|
|
||||||
const HIDDEN_CLASS = "rocm-docs-hidden";
|
|
||||||
const SELECTED_CLASS = "rocm-docs-selected";
|
|
||||||
|
|
||||||
const STORAGE_KEY = "rocm-docs-selector-state";
|
|
||||||
|
|
||||||
// Toggle helpers -------------------------------------------------------------
|
|
||||||
|
|
||||||
const isDefaultOption = (elem) => elem.classList.contains(DEFAULT_OPTION_CLASS);
|
|
||||||
|
|
||||||
const disable = (elem) => {
|
|
||||||
elem.classList.add(DISABLED_CLASS);
|
|
||||||
elem.setAttribute("aria-disabled", "true");
|
|
||||||
elem.setAttribute("tabindex", "-1");
|
|
||||||
};
|
|
||||||
|
|
||||||
const enable = (elem) => {
|
|
||||||
elem.classList.remove(DISABLED_CLASS);
|
|
||||||
elem.setAttribute("aria-disabled", "false");
|
|
||||||
elem.setAttribute("tabindex", "0");
|
|
||||||
};
|
|
||||||
|
|
||||||
const hide = (elem) => {
|
|
||||||
elem.classList.add(HIDDEN_CLASS);
|
|
||||||
elem.setAttribute("aria-hidden", "true");
|
|
||||||
};
|
|
||||||
|
|
||||||
const show = (elem) => {
|
|
||||||
elem.classList.remove(HIDDEN_CLASS);
|
|
||||||
elem.setAttribute("aria-hidden", "false");
|
|
||||||
};
|
|
||||||
|
|
||||||
const select = (elem) => {
|
|
||||||
elem.classList.add(SELECTED_CLASS);
|
|
||||||
elem.setAttribute("aria-checked", "true");
|
|
||||||
};
|
|
||||||
|
|
||||||
const deselect = (elem) => {
|
|
||||||
elem.classList.remove(SELECTED_CLASS);
|
|
||||||
elem.setAttribute("aria-checked", "false");
|
|
||||||
};
|
|
||||||
|
|
||||||
// URL synchronization --------------------------------------------------------
|
|
||||||
|
|
||||||
function syncStateToURL() {
|
|
||||||
const params = new URLSearchParams();
|
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(state)) {
|
|
||||||
params.set(key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
const newURL = params.toString()
|
|
||||||
? `${window.location.pathname}?${params.toString()}${window.location.hash}`
|
|
||||||
: `${window.location.pathname}${window.location.hash}`;
|
|
||||||
|
|
||||||
window.history.replaceState({}, "", newURL);
|
|
||||||
logDebug("URL updated:", newURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStateFromURL() {
|
|
||||||
const params = new URLSearchParams(window.location.search);
|
|
||||||
const urlState = {};
|
|
||||||
|
|
||||||
for (const [key, value] of params) {
|
|
||||||
urlState[key] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return urlState;
|
|
||||||
}
|
|
||||||
|
|
||||||
// localStorage synchronization -----------------------------------------------
|
|
||||||
|
|
||||||
function syncStateToLocalStorage() {
|
|
||||||
try {
|
|
||||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
|
|
||||||
logDebug("localStorage updated:", state);
|
|
||||||
} catch (err) {
|
|
||||||
console.warn("[ROCmDocsSelector] Failed to save to localStorage:", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStateFromLocalStorage() {
|
|
||||||
try {
|
|
||||||
const stored = localStorage.getItem(STORAGE_KEY);
|
|
||||||
if (!stored) return {};
|
|
||||||
|
|
||||||
const parsed = JSON.parse(stored);
|
|
||||||
logDebug("localStorage loaded:", parsed);
|
|
||||||
return parsed;
|
|
||||||
} catch (err) {
|
|
||||||
console.warn(
|
|
||||||
"[ROCmDocsSelector] Failed to read from localStorage:",
|
|
||||||
err,
|
|
||||||
);
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global selector state ------------------------------------------------------
|
|
||||||
|
|
||||||
const state = {};
|
|
||||||
|
|
||||||
function getState() {
|
|
||||||
return { ...state };
|
|
||||||
}
|
|
||||||
|
|
||||||
function setState(updates) {
|
|
||||||
Object.assign(state, updates);
|
|
||||||
logDebug("State updated:", state);
|
|
||||||
syncStateToURL();
|
|
||||||
syncStateToLocalStorage();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Condition handling ---------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Safely parse JSON-encoded conditions from a data-* attribute.
|
|
||||||
* Expects a key/value object, where values may be strings or arrays of strings.
|
|
||||||
*/
|
|
||||||
function parseConditions(attrName, raw) {
|
|
||||||
if (!raw) return null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const conditions = JSON.parse(raw);
|
|
||||||
if (typeof conditions !== "object" || Array.isArray(conditions)) {
|
|
||||||
console.warn(
|
|
||||||
`[ROCmDocsSelector] Invalid '${attrName}' format ` +
|
|
||||||
"(must be a key/value object):",
|
|
||||||
raw,
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return conditions;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(
|
|
||||||
`[ROCmDocsSelector] Couldn't parse '${attrName}' conditions:`,
|
|
||||||
err,
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return true iff all conditions match the current state.
|
|
||||||
* - Values can be a string or an array of strings.
|
|
||||||
* - A condition with an undefined state key is treated as not matching.
|
|
||||||
*/
|
|
||||||
function matchesConditions(conditions, currentState) {
|
|
||||||
for (const [key, expected] of Object.entries(conditions)) {
|
|
||||||
const actual = currentState[key];
|
|
||||||
|
|
||||||
// If no value yet, this condition does not match.
|
|
||||||
if (actual === undefined) return false;
|
|
||||||
|
|
||||||
if (Array.isArray(expected)) {
|
|
||||||
if (!expected.includes(actual)) return false;
|
|
||||||
} else if (actual !== expected) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function shouldBeDisabled(elem) {
|
|
||||||
const raw = elem.dataset.disableWhen;
|
|
||||||
if (!raw) return false; // no conditions => never disabled
|
|
||||||
|
|
||||||
const conditions = parseConditions("disable-when", raw);
|
|
||||||
if (!conditions) {
|
|
||||||
console.warn(
|
|
||||||
"[ROCmDocsSelector] Invalid 'disable-when' conditions; not disabling affected element.",
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return matchesConditions(conditions, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
function shouldBeShown(elem) {
|
|
||||||
const raw = elem.dataset.showWhen;
|
|
||||||
if (!raw) return true; // no conditions => always visible
|
|
||||||
|
|
||||||
const conditions = parseConditions("show-when", raw);
|
|
||||||
if (!conditions) return true;
|
|
||||||
|
|
||||||
return matchesConditions(conditions, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Event handlers -------------------------------------------------------------
|
|
||||||
|
|
||||||
function handleOptionSelect(e) {
|
|
||||||
const option = e.currentTarget;
|
|
||||||
|
|
||||||
// Ignore interaction with disabled or already selected options
|
|
||||||
if (
|
|
||||||
option.classList.contains(DISABLED_CLASS) ||
|
|
||||||
option.classList.contains(SELECTED_CLASS)
|
|
||||||
) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { selectorKey: key, selectorValue: value } = option.dataset;
|
|
||||||
if (!key || !value) return;
|
|
||||||
|
|
||||||
// Update all selectors sharing the same key
|
|
||||||
const allOptions = document.querySelectorAll(
|
|
||||||
`${OPTION_QUERY}[data-selector-key="${key}"]`,
|
|
||||||
);
|
|
||||||
|
|
||||||
allOptions.forEach((opt) => {
|
|
||||||
if (opt.dataset.selectorValue === value) {
|
|
||||||
select(opt);
|
|
||||||
} else {
|
|
||||||
deselect(opt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Update global state
|
|
||||||
setState({ [key]: value });
|
|
||||||
|
|
||||||
// Re-run visibility rules and TOC sync
|
|
||||||
updateVisibility();
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleOptionKeydown(e) {
|
|
||||||
if (e.key === "Enter" || e.key === " ") {
|
|
||||||
e.preventDefault();
|
|
||||||
handleOptionSelect(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Visibility / enablement update ---------------------------------------------
|
|
||||||
|
|
||||||
// Ensure each selector group always has a valid selected option.
|
|
||||||
// If the current selection becomes disabled/hidden due to another selector's
|
|
||||||
// change, automatically pick a replacement.
|
|
||||||
function reconcileGroupSelections() {
|
|
||||||
const currentState = getState();
|
|
||||||
const updates = {};
|
|
||||||
|
|
||||||
document.querySelectorAll(GROUP_QUERY).forEach((group) => {
|
|
||||||
// Skip groups that are hidden OR inside a hidden parent
|
|
||||||
if (
|
|
||||||
group.classList.contains(HIDDEN_CLASS) ||
|
|
||||||
group.closest(`.${HIDDEN_CLASS}`)
|
|
||||||
) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = Array.from(group.querySelectorAll(OPTION_QUERY));
|
|
||||||
if (!options.length) return;
|
|
||||||
|
|
||||||
const groupKey = group.dataset.selectorKey ||
|
|
||||||
options[0].dataset.selectorKey;
|
|
||||||
if (!groupKey) return;
|
|
||||||
|
|
||||||
// Options that are both enabled and visible
|
|
||||||
const enabledVisible = options.filter(
|
|
||||||
(opt) =>
|
|
||||||
!opt.classList.contains(DISABLED_CLASS) &&
|
|
||||||
!opt.classList.contains(HIDDEN_CLASS),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!enabledVisible.length) {
|
|
||||||
// No valid options left; just clear visual selection.
|
|
||||||
options.forEach(deselect);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentlySelected = options.find((opt) =>
|
|
||||||
opt.classList.contains(SELECTED_CLASS)
|
|
||||||
);
|
|
||||||
|
|
||||||
const selectedStillValid = currentlySelected &&
|
|
||||||
enabledVisible.includes(currentlySelected);
|
|
||||||
|
|
||||||
if (selectedStillValid) {
|
|
||||||
const selectedValue = currentlySelected.dataset.selectorValue;
|
|
||||||
if (selectedValue && currentState[groupKey] !== selectedValue) {
|
|
||||||
updates[groupKey] = selectedValue;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Need a new selection: prioritize current state value
|
|
||||||
let replacement;
|
|
||||||
|
|
||||||
// 1. Try to match the current global state value (if exists)
|
|
||||||
const stateValue = currentState[groupKey];
|
|
||||||
if (stateValue) {
|
|
||||||
replacement = enabledVisible.find(
|
|
||||||
(opt) => opt.dataset.selectorValue === stateValue,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. If no match, prefer a default option
|
|
||||||
if (!replacement) {
|
|
||||||
replacement = enabledVisible.find(isDefaultOption);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Otherwise use the first enabled+visible option
|
|
||||||
if (!replacement) {
|
|
||||||
replacement = enabledVisible[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!replacement) return;
|
|
||||||
|
|
||||||
options.forEach(deselect);
|
|
||||||
select(replacement);
|
|
||||||
|
|
||||||
const newValue = replacement.dataset.selectorValue;
|
|
||||||
if (newValue && currentState[groupKey] !== newValue) {
|
|
||||||
updates[groupKey] = newValue;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const changedKeys = Object.keys(updates);
|
|
||||||
if (changedKeys.length > 0) {
|
|
||||||
setState(updates);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
let isUpdatingVisibility = false;
|
|
||||||
|
|
||||||
function updateVisibility() {
|
|
||||||
// Prevent re-entrancy if something triggers updateVisibility
|
|
||||||
// while it is already running.
|
|
||||||
if (isUpdatingVisibility) return;
|
|
||||||
isUpdatingVisibility = true;
|
|
||||||
|
|
||||||
try {
|
|
||||||
let stateChanged = false;
|
|
||||||
let iterations = 0;
|
|
||||||
|
|
||||||
// We may need multiple passes: reconciling selections can change the
|
|
||||||
// global state, which in turn affects show/disable conditions.
|
|
||||||
do {
|
|
||||||
document.querySelectorAll(COND_QUERY).forEach((elem) => {
|
|
||||||
// Show/hide only if element has show-when
|
|
||||||
if (elem.dataset.showWhen !== undefined) {
|
|
||||||
if (shouldBeShown(elem)) {
|
|
||||||
show(elem);
|
|
||||||
} else {
|
|
||||||
hide(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable/disable only if element has disable-when
|
|
||||||
if (elem.dataset.disableWhen !== undefined) {
|
|
||||||
if (shouldBeDisabled(elem)) {
|
|
||||||
disable(elem);
|
|
||||||
} else {
|
|
||||||
enable(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
stateChanged = reconcileGroupSelections();
|
|
||||||
iterations += 1;
|
|
||||||
// Hard stop to avoid infinite loops in case of conflicting rules.
|
|
||||||
} while (stateChanged && iterations < 5);
|
|
||||||
|
|
||||||
updateTOC2OptionsList();
|
|
||||||
updateTOC2ContentsList();
|
|
||||||
} finally {
|
|
||||||
isUpdatingVisibility = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialization -------------------------------------------------------------
|
|
||||||
|
|
||||||
domReady(() => {
|
|
||||||
const selectorOptions = document.querySelectorAll(OPTION_QUERY);
|
|
||||||
if (!selectorOptions?.length) {
|
|
||||||
// Clear URLSearchParams if page does not have selector
|
|
||||||
const url = new URL(window.location);
|
|
||||||
url.search = "";
|
|
||||||
window.history.replaceState({}, "", url);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const defaultState = {};
|
|
||||||
const localStorageState = getStateFromLocalStorage();
|
|
||||||
const urlState = getStateFromURL();
|
|
||||||
|
|
||||||
// Attach listeners and gather defaults
|
|
||||||
selectorOptions.forEach((option) => {
|
|
||||||
option.addEventListener("click", handleOptionSelect);
|
|
||||||
option.addEventListener("keydown", handleOptionKeydown);
|
|
||||||
|
|
||||||
if (isDefaultOption(option)) {
|
|
||||||
const { selectorKey: key, selectorValue: value } = option.dataset;
|
|
||||||
if (key && value && defaultState[key] === undefined) {
|
|
||||||
defaultState[key] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Merge with priority: URL > localStorage > defaults
|
|
||||||
const initialState = {
|
|
||||||
...defaultState,
|
|
||||||
...localStorageState,
|
|
||||||
...urlState,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Apply initial selections from merged state
|
|
||||||
for (const [key, value] of Object.entries(initialState)) {
|
|
||||||
const allOptions = document.querySelectorAll(
|
|
||||||
`${OPTION_QUERY}[data-selector-key="${key}"]`,
|
|
||||||
);
|
|
||||||
|
|
||||||
allOptions.forEach((opt) => {
|
|
||||||
if (opt.dataset.selectorValue === value) {
|
|
||||||
select(opt);
|
|
||||||
} else {
|
|
||||||
deselect(opt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(initialState);
|
|
||||||
updateVisibility();
|
|
||||||
|
|
||||||
// Mark all selector groups as initialized to make them visible
|
|
||||||
document.querySelectorAll(GROUP_QUERY).forEach((group) => {
|
|
||||||
group.classList.add("rocm-docs-selector-initialized");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
export function domReady(callback) {
|
|
||||||
if (document.readyState !== "loading") {
|
|
||||||
callback();
|
|
||||||
} else {
|
|
||||||
document.addEventListener("DOMContentLoaded", callback, { once: true });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const DEBUG = true;
|
|
||||||
export const logDebug = (...args) => {
|
|
||||||
if (DEBUG) {
|
|
||||||
console.debug("[ROCmDocsSelector]", ...args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -29,12 +29,7 @@ html[data-theme="dark"] {
|
|||||||
background-color: var(--rocm-docs-table-head-bg-color);
|
background-color: var(--rocm-docs-table-head-bg-color);
|
||||||
border: 2px solid var(--rocm-docs-table-border-color);
|
border: 2px solid var(--rocm-docs-table-border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.rocm-docs-table td {
|
.rocm-docs-table td {
|
||||||
background-color: var(--rocm-docs-table-bg-color);
|
background-color: var(--rocm-docs-table-bg-color);
|
||||||
border: 2px solid var(--rocm-docs-table-border-color) !important;
|
border: 2px solid var(--rocm-docs-table-border-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rocm-docs-table p:not(:last-child) {
|
|
||||||
margin-bottom: 0.3rem;
|
|
||||||
}
|
|
||||||
|
|||||||
9
docs/extension/rocm_docs_custom/table.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
from sphinx.util.docutils import SphinxDirective, directives, nodes
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def setup(app):
|
||||||
|
static_assets_dir = Path(__file__).parent / "static"
|
||||||
|
app.config.html_static_path.append(str(static_assets_dir))
|
||||||
|
app.add_css_file("table.css")
|
||||||
|
|
||||||
|
return {"version": "1.0", "parallel_read_safe": True}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
<!-- Summary of selected options in secondary TOC -->
|
|
||||||
<div class="tocsection onthispage">
|
<div class="tocsection onthispage">
|
||||||
<i class="fa-solid fa-computer"></i>
|
<i class="fa-solid fa-filter"></i>
|
||||||
Installation environment
|
Options
|
||||||
</div>
|
</div>
|
||||||
<nav class="page-toc rocm-docs-selector-toc2">
|
<nav class="page-toc rocm-docs-selector-toc2">
|
||||||
<ul
|
<ul
|
||||||
@@ -9,7 +8,6 @@
|
|||||||
>
|
>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<!-- Summary of page contents in secondary TOC -->
|
|
||||||
<div class="page-toc tocsection onthispage">
|
<div class="page-toc tocsection onthispage">
|
||||||
<i class="fa-solid fa-list"></i>
|
<i class="fa-solid fa-list"></i>
|
||||||
Contents
|
Contents
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
import html
|
import html
|
||||||
from sphinx.util import logging
|
|
||||||
|
|
||||||
def normalize_key(key):
|
def normalize_key(key):
|
||||||
return key.replace(" ", "_").lower().strip()
|
return key.replace(" ", "_").lower().strip()
|
||||||
@@ -29,6 +28,3 @@ def kv_to_data_attr(name, kv_str, separator="="):
|
|||||||
|
|
||||||
return f'data-{name}="{html.escape(json.dumps(pairs))}"' if pairs else ""
|
return f'data-{name}="{html.escape(json.dumps(pairs))}"' if pairs else ""
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,366 @@
|
|||||||
|
:orphan:
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:description: How to train a model using JAX MaxText for ROCm.
|
||||||
|
:keywords: ROCm, AI, LLM, train, jax, torch, Llama, flux, tutorial, docker
|
||||||
|
|
||||||
|
******************************************
|
||||||
|
Training a model with JAX MaxText on ROCm
|
||||||
|
******************************************
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
|
||||||
|
This documentation does not reflect the latest version of ROCm JAX MaxText
|
||||||
|
training performance documentation. See :doc:`../jax-maxtext` for the latest version.
|
||||||
|
|
||||||
|
MaxText is a high-performance, open-source framework built on the Google JAX
|
||||||
|
machine learning library to train LLMs at scale. The MaxText framework for
|
||||||
|
ROCm is an optimized fork of the upstream
|
||||||
|
`<https://github.com/AI-Hypercomputer/maxtext>`__ enabling efficient AI workloads
|
||||||
|
on AMD MI300X series GPUs.
|
||||||
|
|
||||||
|
The MaxText for ROCm training Docker image
|
||||||
|
provides a prebuilt environment for training on AMD Instinct MI300X and MI325X GPUs,
|
||||||
|
including essential components like JAX, XLA, ROCm libraries, and MaxText utilities.
|
||||||
|
It includes the following software components:
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/jax-maxtext-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
{% for docker in dockers %}
|
||||||
|
{% set jax_version = docker.components["JAX"] %}
|
||||||
|
|
||||||
|
.. tab-item:: ``{{ docker.pull_tag }}``
|
||||||
|
:sync: {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Software component
|
||||||
|
- Version
|
||||||
|
|
||||||
|
{% for component_name, component_version in docker.components.items() %}
|
||||||
|
* - {{ component_name }}
|
||||||
|
- {{ component_version }}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% if jax_version == "0.6.0" %}
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Shardy is a new config in JAX 0.6.0. You might get related errors if it's
|
||||||
|
not configured correctly. For now you can turn it off by setting
|
||||||
|
``shardy=False`` during the training run. You can also follow the `migration
|
||||||
|
guide <https://docs.jax.dev/en/latest/shardy_jax_migration.html>`__ to enable
|
||||||
|
it.
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
MaxText with on ROCm provides the following key features to train large language models efficiently:
|
||||||
|
|
||||||
|
- Transformer Engine (TE)
|
||||||
|
|
||||||
|
- Flash Attention (FA) 3 -- with or without sequence input packing
|
||||||
|
|
||||||
|
- GEMM tuning
|
||||||
|
|
||||||
|
- Multi-node support
|
||||||
|
|
||||||
|
- NANOO FP8 quantization support
|
||||||
|
|
||||||
|
.. _amd-maxtext-model-support-v257:
|
||||||
|
|
||||||
|
Supported models
|
||||||
|
================
|
||||||
|
|
||||||
|
The following models are pre-optimized for performance on AMD Instinct MI300
|
||||||
|
series GPUs. Some instructions, commands, and available training
|
||||||
|
configurations in this documentation might vary by model -- select one to get
|
||||||
|
started.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/jax-maxtext-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<div id="vllm-benchmark-ud-params-picker" class="container-fluid">
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Model</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model-group" data-param-v="{{ model_group.tag }}" tabindex="0">{{ model_group.group }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row gx-0 pt-1">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Variant</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% set models = model_group.models %}
|
||||||
|
{% for model in models %}
|
||||||
|
{% if models|length % 3 == 0 %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-6 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some models, such as Llama 3, require an external license agreement through
|
||||||
|
a third party (for example, Meta).
|
||||||
|
|
||||||
|
System validation
|
||||||
|
=================
|
||||||
|
|
||||||
|
Before running AI workloads, it's important to validate that your AMD hardware is configured
|
||||||
|
correctly and performing optimally.
|
||||||
|
|
||||||
|
If you have already validated your system settings, including aspects like NUMA auto-balancing, you
|
||||||
|
can skip this step. Otherwise, complete the procedures in the :ref:`System validation and
|
||||||
|
optimization <rocm-for-ai-system-optimization>` guide to properly configure your system settings
|
||||||
|
before starting training.
|
||||||
|
|
||||||
|
To test for optimal performance, consult the recommended :ref:`System health benchmarks
|
||||||
|
<rocm-for-ai-system-health-bench>`. This suite of tests will help you verify and fine-tune your
|
||||||
|
system's configuration.
|
||||||
|
|
||||||
|
Environment setup
|
||||||
|
=================
|
||||||
|
|
||||||
|
This Docker image is optimized for specific model configurations outlined
|
||||||
|
as follows. Performance can vary for other training workloads, as AMD
|
||||||
|
doesn’t validate configurations and run conditions outside those described.
|
||||||
|
|
||||||
|
Pull the Docker image
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Use the following command to pull the Docker image from Docker Hub.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/jax-maxtext-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
{% for docker in dockers %}
|
||||||
|
{% set jax_version = docker.components["JAX"] %}
|
||||||
|
|
||||||
|
.. tab-item:: JAX {{ jax_version }}
|
||||||
|
:sync: {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. _amd-maxtext-multi-node-setup-v257:
|
||||||
|
|
||||||
|
Multi-node configuration
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
See :doc:`/how-to/rocm-for-ai/system-setup/multi-node-setup` to configure your
|
||||||
|
environment for multi-node training.
|
||||||
|
|
||||||
|
.. _amd-maxtext-get-started-v257:
|
||||||
|
|
||||||
|
Benchmarking
|
||||||
|
============
|
||||||
|
|
||||||
|
Once the setup is complete, choose between two options to reproduce the
|
||||||
|
benchmark results:
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/jax-maxtext-benchmark-models.yaml
|
||||||
|
|
||||||
|
.. _vllm-benchmark-mad:
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{model.mad_tag}}
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
{% if model.mad_tag and "single-node" in model.doc_options %}
|
||||||
|
.. tab-item:: MAD-integrated benchmarking
|
||||||
|
|
||||||
|
1. Clone the ROCm Model Automation and Dashboarding (`<https://github.com/ROCm/MAD>`__) repository to a local
|
||||||
|
directory and install the required packages on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
2. Use this command to run the performance benchmark test on the {{ model.model }} model
|
||||||
|
using one GPU with the :literal:`{{model.precision}}` data type on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export MAD_SECRETS_HFTOKEN="your personal Hugging Face token to access gated models"
|
||||||
|
madengine run \
|
||||||
|
--tags {{model.mad_tag}} \
|
||||||
|
--keep-model-dir \
|
||||||
|
--live-output \
|
||||||
|
--timeout 28800
|
||||||
|
|
||||||
|
MAD launches a Docker container with the name
|
||||||
|
``container_ci-{{model.mad_tag}}``. The latency and throughput reports of the
|
||||||
|
model are collected in the following path: ``~/MAD/perf.csv/``.
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
.. tab-item:: Standalone benchmarking
|
||||||
|
|
||||||
|
.. rubric:: Download the Docker image and required scripts
|
||||||
|
|
||||||
|
Run the JAX MaxText benchmark tool independently by starting the
|
||||||
|
Docker container as shown in the following snippet.
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
{% for docker in dockers %}
|
||||||
|
{% set jax_version = docker.components["JAX"] %}
|
||||||
|
|
||||||
|
.. tab-item:: JAX {{ jax_version }}
|
||||||
|
:sync: {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ docker.pull_tag }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if model.model_repo and "single-node" in model.doc_options %}
|
||||||
|
.. rubric:: Single node training
|
||||||
|
|
||||||
|
1. Set up environment variables.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export MAD_SECRETS_HFTOKEN=<Your Hugging Face token>
|
||||||
|
export HF_HOME=<Location of saved/cached Hugging Face models>
|
||||||
|
|
||||||
|
``MAD_SECRETS_HFTOKEN`` is your Hugging Face access token to access models, tokenizers, and data.
|
||||||
|
See `User access tokens <https://huggingface.co/docs/hub/en/security-tokens>`__.
|
||||||
|
|
||||||
|
``HF_HOME`` is where ``huggingface_hub`` will store local data. See `huggingface_hub CLI <https://huggingface.co/docs/huggingface_hub/main/en/guides/cli#huggingface-cli-download>`__.
|
||||||
|
If you already have downloaded or cached Hugging Face artifacts, set this variable to that path.
|
||||||
|
Downloaded files typically get cached to ``~/.cache/huggingface``.
|
||||||
|
|
||||||
|
2. Launch the Docker container.
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
{% for docker in dockers %}
|
||||||
|
{% set jax_version = docker.components["JAX"] %}
|
||||||
|
|
||||||
|
.. tab-item:: JAX {{ jax_version }}
|
||||||
|
:sync: {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
--device=/dev/dri \
|
||||||
|
--device=/dev/kfd \
|
||||||
|
--network host \
|
||||||
|
--ipc host \
|
||||||
|
--group-add video \
|
||||||
|
--cap-add=SYS_PTRACE \
|
||||||
|
--security-opt seccomp=unconfined \
|
||||||
|
--privileged \
|
||||||
|
-v $HOME:$HOME \
|
||||||
|
-v $HOME/.ssh:/root/.ssh \
|
||||||
|
-v $HF_HOME:/hf_cache \
|
||||||
|
-e HF_HOME=/hf_cache \
|
||||||
|
-e MAD_SECRETS_HFTOKEN=$MAD_SECRETS_HFTOKEN
|
||||||
|
--shm-size 64G \
|
||||||
|
--name training_env \
|
||||||
|
{{ docker.pull_tag }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
3. In the Docker container, clone the ROCm MAD repository and navigate to the
|
||||||
|
benchmark scripts directory at ``MAD/scripts/jax-maxtext``.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD/scripts/jax-maxtext
|
||||||
|
|
||||||
|
4. Run the setup scripts to install libraries and datasets needed
|
||||||
|
for benchmarking.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./jax-maxtext_benchmark_setup.sh -m {{ model.model_repo }}
|
||||||
|
|
||||||
|
5. To run the training benchmark without quantization, use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./jax-maxtext_benchmark_report.sh -m {{ model.model_repo }}
|
||||||
|
|
||||||
|
For quantized training, use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./jax-maxtext_benchmark_report.sh -m {{ model.model_repo }} -q nanoo_fp8
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if model.multinode_training_script and "multi-node" in model.doc_options %}
|
||||||
|
.. rubric:: Multi-node training
|
||||||
|
|
||||||
|
The following examples use SLURM to run on multiple nodes.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The following scripts will launch the Docker container and run the
|
||||||
|
benchmark. Run them outside of any Docker container.
|
||||||
|
|
||||||
|
1. Make sure ``$HF_HOME`` is set before running the test. See
|
||||||
|
`ROCm benchmarking <https://github.com/ROCm/MAD/blob/develop/scripts/jax-maxtext/gpu-rocm/readme.md>`__
|
||||||
|
for more details on downloading the Llama models before running the
|
||||||
|
benchmark.
|
||||||
|
|
||||||
|
2. To run multi-node training for {{ model.model }},
|
||||||
|
use the
|
||||||
|
`multi-node training script <https://github.com/ROCm/MAD/blob/develop/scripts/jax-maxtext/gpu-rocm/{{ model.multinode_training_script }}>`__
|
||||||
|
under the ``scripts/jax-maxtext/gpu-rocm/`` directory.
|
||||||
|
|
||||||
|
3. Run the multi-node training benchmark script.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
sbatch -N <num_nodes> {{ model.multinode_training_script }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
.. rubric:: Multi-node training
|
||||||
|
|
||||||
|
For multi-node training examples, choose a model from :ref:`amd-maxtext-model-support-v257`
|
||||||
|
with an available `multi-node training script <https://github.com/ROCm/MAD/tree/develop/scripts/jax-maxtext/gpu-rocm>`__.
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
===============
|
||||||
|
|
||||||
|
- To learn more about MAD and the ``madengine`` CLI, see the `MAD usage guide <https://github.com/ROCm/MAD?tab=readme-ov-file#usage-guide>`__.
|
||||||
|
|
||||||
|
- To learn more about system settings and management practices to configure your system for
|
||||||
|
AMD Instinct MI300X series GPUs, see `AMD Instinct MI300X system optimization <https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300x.html>`_.
|
||||||
|
|
||||||
|
- For a list of other ready-made Docker images for AI with ROCm, see
|
||||||
|
`AMD Infinity Hub <https://www.amd.com/en/developer/resources/infinity-hub.html#f-amd_hub_category=AI%20%26%20ML%20Models>`_.
|
||||||
|
|
||||||
|
Previous versions
|
||||||
|
=================
|
||||||
|
|
||||||
|
See :doc:`jax-maxtext-history` to find documentation for previous releases
|
||||||
|
of the ``ROCm/jax-training`` Docker image.
|
||||||
@@ -0,0 +1,667 @@
|
|||||||
|
:orphan:
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:description: How to train a model using Megatron-LM for ROCm.
|
||||||
|
:keywords: ROCm, AI, LLM, train, Megatron-LM, megatron, Llama, tutorial, docker, torch
|
||||||
|
|
||||||
|
********************************************
|
||||||
|
Training a model with Primus and Megatron-LM
|
||||||
|
********************************************
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
|
||||||
|
This documentation does not reflect the latest version of ROCm Megatron-LM
|
||||||
|
training performance documentation. See :doc:`../primus-megatron` for the latest version.
|
||||||
|
|
||||||
|
`Primus <https://github.com/AMD-AGI/Primus>`__ is a unified and flexible
|
||||||
|
LLM training framework designed to streamline training. It streamlines LLM
|
||||||
|
training on AMD Instinct GPUs using a modular, reproducible configuration paradigm.
|
||||||
|
Primus is backend-agnostic and supports multiple training engines -- including Megatron.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Primus with Megatron is designed to replace the :doc:`ROCm Megatron-LM training <../megatron-lm>` workflow.
|
||||||
|
To learn how to migrate workloads from Megatron-LM to Primus with Megatron,
|
||||||
|
see :doc:`megatron-lm-primus-migration-guide`.
|
||||||
|
|
||||||
|
For ease of use, AMD provides a ready-to-use Docker image for MI300 series GPUs
|
||||||
|
containing essential components for Primus and Megatron-LM. This Docker is powered by Primus
|
||||||
|
Turbo optimizations for performance; this release adds support for Primus Turbo
|
||||||
|
with optimized attention and grouped GEMM kernels.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This Docker environment is based on Python 3.10 and Ubuntu 22.04. For an alternative environment with
|
||||||
|
Python 3.12 and Ubuntu 24.04, see the :doc:`previous ROCm Megatron-LM v25.6 Docker release <megatron-lm-v25.6>`.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-megatron-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set docker = dockers[0] %}
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Software component
|
||||||
|
- Version
|
||||||
|
|
||||||
|
{% for component_name, component_version in docker.components.items() %}
|
||||||
|
* - {{ component_name }}
|
||||||
|
- {{ component_version }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-model-support:
|
||||||
|
|
||||||
|
Supported models
|
||||||
|
================
|
||||||
|
|
||||||
|
The following models are pre-optimized for performance on AMD Instinct MI300X series GPUs.
|
||||||
|
Some instructions, commands, and training examples in this documentation might
|
||||||
|
vary by model -- select one to get started.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-megatron-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<div id="vllm-benchmark-ud-params-picker" class="container-fluid">
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Model</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
<div class="col-3 px-2 model-param" data-param-k="model-group" data-param-v="{{ model_group.tag }}" tabindex="0">{{ model_group.group }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row gx-0 pt-1">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Variant</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% set models = model_group.models %}
|
||||||
|
{% for model in models %}
|
||||||
|
{% if models|length % 3 == 0 %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-6 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some models, such as Llama, require an external license agreement through
|
||||||
|
a third party (for example, Meta).
|
||||||
|
|
||||||
|
System validation
|
||||||
|
=================
|
||||||
|
|
||||||
|
Before running AI workloads, it's important to validate that your AMD hardware is configured
|
||||||
|
correctly and performing optimally.
|
||||||
|
|
||||||
|
If you have already validated your system settings, including aspects like NUMA auto-balancing, you
|
||||||
|
can skip this step. Otherwise, complete the procedures in the :ref:`System validation and
|
||||||
|
optimization <rocm-for-ai-system-optimization>` guide to properly configure your system settings
|
||||||
|
before starting training.
|
||||||
|
|
||||||
|
To test for optimal performance, consult the recommended :ref:`System health benchmarks
|
||||||
|
<rocm-for-ai-system-health-bench>`. This suite of tests will help you verify and fine-tune your
|
||||||
|
system's configuration.
|
||||||
|
|
||||||
|
.. _mi300x-amd-primus-megatron-lm-training:
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-megatron-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set docker = dockers[0] %}
|
||||||
|
|
||||||
|
Environment setup
|
||||||
|
=================
|
||||||
|
|
||||||
|
Use the following instructions to set up the environment, configure the script to train models, and
|
||||||
|
reproduce the benchmark results on MI300X series GPUs with the ``{{ docker.pull_tag }}`` image.
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-requirements:
|
||||||
|
|
||||||
|
Download the Docker image
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
1. Use the following command to pull the Docker image from Docker Hub.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ docker.pull_tag }}
|
||||||
|
|
||||||
|
2. Launch the Docker container.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
--device /dev/dri \
|
||||||
|
--device /dev/kfd \
|
||||||
|
--device /dev/infiniband \
|
||||||
|
--network host --ipc host \
|
||||||
|
--group-add video \
|
||||||
|
--cap-add SYS_PTRACE \
|
||||||
|
--security-opt seccomp=unconfined \
|
||||||
|
--privileged \
|
||||||
|
-v $HOME:$HOME \
|
||||||
|
--shm-size 128G \
|
||||||
|
--name primus_training_env \
|
||||||
|
{{ docker.pull_tag }}
|
||||||
|
|
||||||
|
3. Use these commands if you exit the ``primus_training_env`` container and need to return to it.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker start primus_training_env
|
||||||
|
docker exec -it primus_training_env bash
|
||||||
|
|
||||||
|
The Docker container hosts verified commit ``927a717`` of the `Primus
|
||||||
|
<https://github.com/AMD-AGI/Primus/tree/927a71702784347a311ca48fd45f0f308c6ef6dd>`__ repository.
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-environment-setup:
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
Primus defines a training configuration in YAML for each model in
|
||||||
|
`examples/megatron/configs <https://github.com/AMD-AGI/Primus/tree/927a71702784347a311ca48fd45f0f308c6ef6dd/examples/megatron/configs>`__.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-megatron-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
To update training parameters for {{ model.model }}, you can update ``examples/megatron/configs/{{ model.config_name }}``.
|
||||||
|
Note that training configuration YAML files for other models follow this naming convention.
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
See :ref:`Key options <amd-primus-megatron-lm-benchmark-test-vars>` for more information on configuration options.
|
||||||
|
|
||||||
|
Dataset options
|
||||||
|
---------------
|
||||||
|
|
||||||
|
You can use either mock data or real data for training.
|
||||||
|
|
||||||
|
* Mock data can be useful for testing and validation. Use the ``mock_data`` field to toggle between mock and real data. The default
|
||||||
|
value is ``true`` for enabled.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
mock_data: true
|
||||||
|
|
||||||
|
* If you're using a real dataset, update the ``train_data_path`` field to point to the location of your dataset.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mock_data: false
|
||||||
|
train_data_path: /path/to/your/dataset
|
||||||
|
|
||||||
|
Ensure that the files are accessible inside the Docker container.
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-tokenizer:
|
||||||
|
|
||||||
|
Tokenizer
|
||||||
|
---------
|
||||||
|
|
||||||
|
Set the ``HF_TOKEN`` environment variable with
|
||||||
|
right permissions to access the tokenizer for each model.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Export your HF_TOKEN in the workspace
|
||||||
|
export HF_TOKEN=<your_hftoken>
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
In Primus, each model uses a tokenizer from Hugging Face. For example, Llama
|
||||||
|
3.1 8B model uses ``tokenizer_model: meta-llama/Llama-3.1-8B`` and
|
||||||
|
``tokenizer_type: Llama3Tokenizer`` defined in the `llama3.1-8B model
|
||||||
|
<https://github.com/AMD-AGI/Primus/blob/927a71702784347a311ca48fd45f0f308c6ef6dd/examples/megatron/configs/llama3.1_8B-pretrain.yaml>`__
|
||||||
|
definition.
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-run-training:
|
||||||
|
|
||||||
|
Run training
|
||||||
|
============
|
||||||
|
|
||||||
|
Use the following example commands to set up the environment, configure
|
||||||
|
:ref:`key options <amd-primus-megatron-lm-benchmark-test-vars>`, and run training on
|
||||||
|
MI300X series GPUs with the AMD Megatron-LM environment.
|
||||||
|
|
||||||
|
Single node training
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
To run training on a single node, navigate to ``/workspace/Primus`` and use the following setup command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
pip install -r requirements.txt
|
||||||
|
export HSA_NO_SCRATCH_RECLAIM=1
|
||||||
|
export NVTE_CK_USES_BWD_V3=1
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.3-70b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Llama 3.3 70B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run pre-training for Llama 3.3 70B BF16, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama3.3_70B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh \
|
||||||
|
--micro_batch_size 2 \
|
||||||
|
--global_batch_size 16 \
|
||||||
|
--train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.1-8b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Llama 3.1 8B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run pre-training for Llama 3.1 8B FP8, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama3.1_8B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh \
|
||||||
|
--train_iters 50 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
For Llama 3.1 8B BF16, use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama3.1_8B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.1-70b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Llama 3.1 70B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run pre-training for Llama 3.1 70B BF16, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama3.1_70B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh \
|
||||||
|
--train_iters 50
|
||||||
|
|
||||||
|
To run the training on a single node for Llama 3.1 70B FP8 with proxy, use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama3.1_70B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh \
|
||||||
|
--train_iters 50 \
|
||||||
|
--num_layers 40 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Use two or more nodes to run the *full* Llama 70B model with FP8 precision.
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-2-7b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Llama 2 7B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run pre-training for Llama 2 7B FP8, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama2_7B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh \
|
||||||
|
--train_iters 50 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
To run pre-training for Llama 2 7B BF16, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama2_7B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-2-70b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Llama 2 70B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run pre-training for Llama 2 70B BF16, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/llama2_70B-pretrain.yaml \
|
||||||
|
bash ./examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_deepseek-v3-proxy
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to DeepSeek-V3.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run training on a single node for DeepSeek-V3 (MoE with expert parallel) with 3-layer proxy,
|
||||||
|
use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/deepseek_v3-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh \
|
||||||
|
--num_layers 3 \
|
||||||
|
--moe_layer_freq 1 \
|
||||||
|
--train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_deepseek-v2-lite-16b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to DeepSeek-V2-Lite.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run training on a single node for DeepSeek-V2-Lite (MoE with expert parallel),
|
||||||
|
use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/deepseek_v2_lite-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_mixtral-8x7b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Mixtral 8x7B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run training on a single node for Mixtral 8x7B (MoE with expert parallel),
|
||||||
|
use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/mixtral_8x7B_v0.1-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_mixtral-8x22b-proxy
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Mixtral 8x22B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run training on a single node for Mixtral 8x22B (MoE with expert parallel) with 4-layer proxy,
|
||||||
|
use the following command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/mixtral_8x22B_v0.1-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh \
|
||||||
|
--num_layers 4 \
|
||||||
|
--pipeline_model_parallel_size 1 \
|
||||||
|
--micro_batch_size 1 \
|
||||||
|
--global_batch_size 16 \
|
||||||
|
--train_iters 50
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_qwen2.5-7b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Qwen 2.5 7B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run training on a single node for Qwen 2.5 7B BF16, use the following
|
||||||
|
command:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/qwen2.5_7B-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
For FP8, use the following command.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/qwen2.5_7B-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh \
|
||||||
|
--train_iters 50 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_qwen2.5-72b
|
||||||
|
|
||||||
|
Once setup is complete, run the appropriate training command.
|
||||||
|
The following run commands are tailored to Qwen 2.5 72B.
|
||||||
|
See :ref:`amd-primus-megatron-lm-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
To run the training on a single node for Qwen 2.5 72B BF16, use the following command.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
EXP=examples/megatron/configs/qwen2.5_72B-pretrain.yaml \
|
||||||
|
bash examples/run_pretrain.sh --train_iters 50
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-multi-node-examples:
|
||||||
|
|
||||||
|
Multi-node training examples
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Refer to :doc:`/how-to/rocm-for-ai/system-setup/multi-node-setup` to configure your environment for multi-node
|
||||||
|
training.
|
||||||
|
|
||||||
|
To run training on multiple nodes, you can use the
|
||||||
|
`run_slurm_pretrain.sh <https://github.com/AMD-AGI/Primus/blob/927a71702784347a311ca48fd45f0f308c6ef6dd/examples/run_slurm_pretrain.sh>`__
|
||||||
|
to launch the multi-node workload. Use the following steps to setup your environment:
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-megatron-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set docker = dockers[0] %}
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
cd /workspace/Primus/
|
||||||
|
export DOCKER_IMAGE={{ docker.pull_tag }}
|
||||||
|
export HF_TOKEN=<your_HF_token>
|
||||||
|
export HSA_NO_SCRATCH_RECLAIM=1
|
||||||
|
export NVTE_CK_USES_BWD_V3=1
|
||||||
|
export NCCL_IB_HCA=<your_NCCL_IB_HCA> # specify which RDMA interfaces to use for communication
|
||||||
|
export NCCL_SOCKET_IFNAME=<your_NCCL_SOCKET_IFNAME> # your Network Interface
|
||||||
|
export GLOO_SOCKET_IFNAME=<your_GLOO_SOCKET_IFNAME> # your Network Interface
|
||||||
|
export NCCL_IB_GID_INDEX=3 # Set InfiniBand GID index for NCCL communication. Default is 3 for ROCE
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
* Make sure correct network drivers are installed on the nodes. If inside a Docker, either install the drivers inside the Docker container or pass the network drivers from the host while creating Docker container.
|
||||||
|
* If ``NCCL_IB_HCA`` and ``NCCL_SOCKET_IFNAME`` are not set, Primus will try to auto-detect. However, since NICs can vary accross different cluster, it is encouraged to explicitly export your NCCL parameters for the cluster.
|
||||||
|
* To find your network interface, you can use ``ip a``.
|
||||||
|
* To find RDMA interfaces, you can use ``ibv_devices`` to get the list of all the RDMA/IB devices.
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.3-70b
|
||||||
|
|
||||||
|
To train Llama 3.3 70B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama3.3_70B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 1 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 80 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
To train Llama 3.3 70B BF16 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama3.3_70B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 1 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 12
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.1-8b
|
||||||
|
|
||||||
|
To train Llama 3.1 8B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
# Adjust the training parameters. For e.g., `global_batch_size: 8 * #single_node_bs` for 8 nodes in this case
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama3.1_8B-pretrain.yaml \
|
||||||
|
bash ./examples/run_slurm_pretrain.sh \
|
||||||
|
--global_batch_size 1024 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-3.1-70b
|
||||||
|
|
||||||
|
To train Llama 3.1 70B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama3.1_70B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 1 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 80 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
To train Llama 3.1 70B BF16 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama3.1_70B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 1 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 12
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-2-7b
|
||||||
|
|
||||||
|
To train Llama 2 8B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
# Adjust the training parameters. For e.g., `global_batch_size: 8 * #single_node_bs` for 8 nodes in this case
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama2_7B-pretrain.yaml bash ./examples/run_slurm_pretrain.sh --global_batch_size 2048 --fp8 hybrid
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_llama-2-70b
|
||||||
|
|
||||||
|
To train Llama 2 70B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama2_70B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 2 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 80 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
To train Llama 2 70B BF16 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/llama2_70B-pretrain.yaml \
|
||||||
|
bash ./examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 2 \
|
||||||
|
--global_batch_size 1536 \
|
||||||
|
--recompute_num_layers 12
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_mixtral-8x7b
|
||||||
|
|
||||||
|
To train Mixtral 8x7B BF16 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/mixtral_8x7B_v0.1-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 2 \
|
||||||
|
--global_batch_size 256
|
||||||
|
|
||||||
|
.. container:: model-doc primus_pyt_megatron_lm_train_qwen2.5-72b
|
||||||
|
|
||||||
|
To train Qwen2.5 72B FP8 on 8 nodes, run:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
NNODES=8 EXP=examples/megatron/configs/qwen2.5_72B-pretrain.yaml \
|
||||||
|
bash examples/run_slurm_pretrain.sh \
|
||||||
|
--micro_batch_size 4 \
|
||||||
|
--global_batch_size 256 \
|
||||||
|
--recompute_num_layers 80 \
|
||||||
|
--fp8 hybrid
|
||||||
|
|
||||||
|
.. _amd-primus-megatron-lm-benchmark-test-vars:
|
||||||
|
|
||||||
|
Key options
|
||||||
|
-----------
|
||||||
|
|
||||||
|
The following are key options to take note of
|
||||||
|
|
||||||
|
fp8
|
||||||
|
``hybrid`` enables FP8 GEMMs.
|
||||||
|
|
||||||
|
use_torch_fsdp2
|
||||||
|
``use_torch_fsdp2: 1`` enables torch fsdp-v2. If FSDP is enabled,
|
||||||
|
set ``use_distributed_optimizer`` and ``overlap_param_gather`` to ``false``.
|
||||||
|
|
||||||
|
profile
|
||||||
|
To enable PyTorch profiling, set these parameters:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
profile: true
|
||||||
|
use_pytorch_profiler: true
|
||||||
|
profile_step_end: 7
|
||||||
|
profile_step_start: 6
|
||||||
|
|
||||||
|
train_iters
|
||||||
|
The total number of iterations (default: 50).
|
||||||
|
|
||||||
|
mock_data
|
||||||
|
True by default.
|
||||||
|
|
||||||
|
micro_batch_size
|
||||||
|
Micro batch size.
|
||||||
|
|
||||||
|
global_batch_size
|
||||||
|
Global batch size.
|
||||||
|
|
||||||
|
recompute_granularity
|
||||||
|
For activation checkpointing.
|
||||||
|
|
||||||
|
num_layers
|
||||||
|
For using a reduced number of layers as with proxy models.
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
===============
|
||||||
|
|
||||||
|
- For an introduction to Primus, see `Primus: A Lightweight, Unified Training
|
||||||
|
Framework for Large Models on AMD GPUs <https://rocm.blogs.amd.com/software-tools-optimization/primus/README.html>`__.
|
||||||
|
|
||||||
|
- To learn more about system settings and management practices to configure your system for
|
||||||
|
AMD Instinct MI300X series GPUs, see `AMD Instinct MI300X system optimization <https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300x.html>`_.
|
||||||
|
|
||||||
|
- For a list of other ready-made Docker images for AI with ROCm, see
|
||||||
|
`AMD Infinity Hub <https://www.amd.com/en/developer/resources/infinity-hub.html#f-amd_hub_category=AI%20%26%20ML%20Models>`_.
|
||||||
|
|
||||||
|
Previous versions
|
||||||
|
=================
|
||||||
|
|
||||||
|
See :doc:`megatron-lm-history` to find documentation for previous releases
|
||||||
|
of the ``ROCm/megatron-lm`` Docker image.
|
||||||
|
|
||||||
|
This training environment now uses Primus with Megatron as the primary
|
||||||
|
configuration. Limited support for the legacy ROCm Megatron-LM is still
|
||||||
|
available; see the :doc:`../megatron-lm` documentation.
|
||||||
@@ -0,0 +1,312 @@
|
|||||||
|
:orphan:
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:description: How to train a model using PyTorch for ROCm.
|
||||||
|
:keywords: ROCm, AI, LLM, train, PyTorch, torch, Llama, flux, tutorial, docker
|
||||||
|
|
||||||
|
****************************************
|
||||||
|
Training a model with Primus and PyTorch
|
||||||
|
****************************************
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
|
||||||
|
This documentation does not reflect the latest version of ROCm Primus PyTorch training
|
||||||
|
performance benchmark documentation. See :doc:`../primus-pytorch` for the latest version.
|
||||||
|
|
||||||
|
`Primus <https://github.com/AMD-AGI/Primus>`__ is a unified and flexible
|
||||||
|
LLM training framework designed to streamline training. It streamlines LLM
|
||||||
|
training on AMD Instinct GPUs using a modular, reproducible configuration paradigm.
|
||||||
|
Primus now supports the PyTorch torchtitan backend.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Primus with the PyTorch torchtitan backend is designed to replace the :doc:`ROCm PyTorch training <../pytorch-training>` workflow.
|
||||||
|
See :doc:`../pytorch-training` to see steps to run workloads without Primus.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-pytorch-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set docker = dockers[0] %}
|
||||||
|
For ease of use, AMD provides a ready-to-use Docker image -- ``{{
|
||||||
|
docker.pull_tag }}`` -- for MI300X series GPUs containing essential
|
||||||
|
components for Primus and PyTorch training with
|
||||||
|
Primus Turbo optimizations.
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Software component
|
||||||
|
- Version
|
||||||
|
|
||||||
|
{% for component_name, component_version in docker.components.items() %}
|
||||||
|
* - {{ component_name }}
|
||||||
|
- {{ component_version }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. _amd-primus-pytorch-model-support-v258:
|
||||||
|
|
||||||
|
Supported models
|
||||||
|
================
|
||||||
|
|
||||||
|
The following models are pre-optimized for performance on the AMD Instinct MI325X and MI300X GPUs.
|
||||||
|
Some instructions, commands, and training recommendations in this documentation might
|
||||||
|
vary by model -- select one to get started.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-pytorch-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set unified_docker = data.dockers[0] %}
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<div id="vllm-benchmark-ud-params-picker" class="container-fluid">
|
||||||
|
<div class="row gx-0" style="display: none;">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Model</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
<div class="col-3 px-2 model-param" data-param-k="model-group" data-param-v="{{ model_group.tag }}" tabindex="0">{{ model_group.group }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row gx-0 pt-1">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Model</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% set models = model_group.models %}
|
||||||
|
{% for model in models %}
|
||||||
|
{% if models|length % 3 == 0 %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-6 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
For additional workloads, including Llama 3.3, Llama 3.2, Llama 2, GPT OSS, Qwen, and Flux models,
|
||||||
|
see the documentation :doc:`../pytorch-training` (without Primus)
|
||||||
|
|
||||||
|
.. _amd-primus-pytorch-performance-measurements-v258:
|
||||||
|
|
||||||
|
System validation
|
||||||
|
=================
|
||||||
|
|
||||||
|
Before running AI workloads, it's important to validate that your AMD hardware is configured
|
||||||
|
correctly and performing optimally.
|
||||||
|
|
||||||
|
If you have already validated your system settings, including aspects like NUMA auto-balancing, you
|
||||||
|
can skip this step. Otherwise, complete the procedures in the :ref:`System validation and
|
||||||
|
optimization <rocm-for-ai-system-optimization>` guide to properly configure your system settings
|
||||||
|
before starting training.
|
||||||
|
|
||||||
|
To test for optimal performance, consult the recommended :ref:`System health benchmarks
|
||||||
|
<rocm-for-ai-system-health-bench>`. This suite of tests will help you verify and fine-tune your
|
||||||
|
system's configuration.
|
||||||
|
|
||||||
|
This Docker image is optimized for specific model configurations outlined
|
||||||
|
below. Performance can vary for other training workloads, as AMD
|
||||||
|
doesn’t test configurations and run conditions outside those described.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/primus-pytorch-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set unified_docker = data.dockers[0] %}
|
||||||
|
|
||||||
|
Pull the Docker image
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Use the following command to pull the `Docker image <{{ unified_docker.docker_hub_url }}>`_ from Docker Hub.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ unified_docker.pull_tag }}
|
||||||
|
|
||||||
|
Run training
|
||||||
|
============
|
||||||
|
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
|
||||||
|
Once the setup is complete, choose between the following two workflows to start benchmarking training.
|
||||||
|
For fine-tuning workloads and multi-node training examples, see :doc:`../pytorch-training` (without Primus).
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: MAD-integrated benchmarking
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
The following run command is tailored to {{ model.model }}.
|
||||||
|
See :ref:`amd-primus-pytorch-model-support-v258` to switch to another available model.
|
||||||
|
|
||||||
|
1. Clone the ROCm Model Automation and Dashboarding (`<https://github.com/ROCm/MAD>`__) repository to a local
|
||||||
|
directory and install the required packages on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
2. For example, use this command to run the performance benchmark test on the {{ model.model }} model
|
||||||
|
using one node with the {{ model.precision }} data type on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export MAD_SECRETS_HFTOKEN="your personal Hugging Face token to access gated models"
|
||||||
|
madengine run \
|
||||||
|
--tags {{ model.mad_tag }} \
|
||||||
|
--keep-model-dir \
|
||||||
|
--live-output \
|
||||||
|
--timeout 28800
|
||||||
|
|
||||||
|
MAD launches a Docker container with the name
|
||||||
|
``container_ci-{{ model.mad_tag }}``. The latency and throughput reports of the
|
||||||
|
model are collected in ``~/MAD/perf.csv``.
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. tab-item:: Standalone benchmarking
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
The following run commands are tailored to {{ model.model }}.
|
||||||
|
See :ref:`amd-primus-pytorch-model-support-v258` to switch to another available model.
|
||||||
|
|
||||||
|
.. rubric:: Download the Docker image and required packages
|
||||||
|
|
||||||
|
1. Use the following command to pull the Docker image from Docker Hub.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ unified_docker.pull_tag }}
|
||||||
|
|
||||||
|
2. Run the Docker container.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
--device /dev/dri \
|
||||||
|
--device /dev/kfd \
|
||||||
|
--network host \
|
||||||
|
--ipc host \
|
||||||
|
--group-add video \
|
||||||
|
--cap-add SYS_PTRACE \
|
||||||
|
--security-opt seccomp=unconfined \
|
||||||
|
--privileged \
|
||||||
|
-v $HOME:$HOME \
|
||||||
|
-v $HOME/.ssh:/root/.ssh \
|
||||||
|
--shm-size 64G \
|
||||||
|
--name training_env \
|
||||||
|
{{ unified_docker.pull_tag }}
|
||||||
|
|
||||||
|
Use these commands if you exit the ``training_env`` container and need to return to it.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker start training_env
|
||||||
|
docker exec -it training_env bash
|
||||||
|
|
||||||
|
3. In the Docker container, clone the `<https://github.com/ROCm/MAD>`__
|
||||||
|
repository and navigate to the benchmark scripts directory
|
||||||
|
``/workspace/MAD/scripts/pytorch_train``.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD/scripts/pytorch_train
|
||||||
|
|
||||||
|
.. rubric:: Prepare training datasets and dependencies
|
||||||
|
|
||||||
|
1. The following benchmarking examples require downloading models and datasets
|
||||||
|
from Hugging Face. To ensure successful access to gated repos, set your
|
||||||
|
``HF_TOKEN``.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export HF_TOKEN=$your_personal_hugging_face_access_token
|
||||||
|
|
||||||
|
2. Run the setup script to install libraries and datasets needed for benchmarking.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_setup.sh
|
||||||
|
|
||||||
|
.. rubric:: Pretraining
|
||||||
|
|
||||||
|
To start the pretraining benchmark, use the following command with the
|
||||||
|
appropriate options. See the following list of options and their descriptions.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_report.sh -t pretrain \
|
||||||
|
-m {{ model.model_repo }} \
|
||||||
|
-p $datatype \
|
||||||
|
-s $sequence_length
|
||||||
|
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Name
|
||||||
|
- Options
|
||||||
|
- Description
|
||||||
|
|
||||||
|
{% for mode in available_modes %}
|
||||||
|
* - {% if loop.first %}``$training_mode``{% endif %}
|
||||||
|
- ``{{ mode }}``
|
||||||
|
- {{ training_mode_descs[mode] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
* - ``$datatype``
|
||||||
|
- ``BF16``{% if model.mad_tag == "primus_pyt_train_llama-3.1-8b" %} or ``FP8``{% endif %}
|
||||||
|
- Currently, only Llama 3.1 8B supports FP8 precision.
|
||||||
|
|
||||||
|
* - ``$sequence_length``
|
||||||
|
- Sequence length for the language model.
|
||||||
|
- Between 2048 and 8192. 8192 by default.
|
||||||
|
|
||||||
|
.. rubric:: Benchmarking examples
|
||||||
|
|
||||||
|
Use the following command to run train {{ model.model }} with BF16 precision using Primus torchtitan.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_report.sh -m {{ model.model_repo }}
|
||||||
|
|
||||||
|
To train {{ model.model }} with FP8 precision, use the following command.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_report.sh -m {{ model.model_repo }} -p FP8
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
===============
|
||||||
|
|
||||||
|
- For an introduction to Primus, see `Primus: A Lightweight, Unified Training
|
||||||
|
Framework for Large Models on AMD GPUs <https://rocm.blogs.amd.com/software-tools-optimization/primus/README.html>`__.
|
||||||
|
|
||||||
|
- To learn more about MAD and the ``madengine`` CLI, see the `MAD usage guide <https://github.com/ROCm/MAD?tab=readme-ov-file#usage-guide>`__.
|
||||||
|
|
||||||
|
- To learn more about system settings and management practices to configure your system for
|
||||||
|
AMD Instinct MI300X series GPUs, see `AMD Instinct MI300X system optimization <https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300x.html>`_.
|
||||||
|
|
||||||
|
- For a list of other ready-made Docker images for AI with ROCm, see
|
||||||
|
`AMD Infinity Hub <https://www.amd.com/en/developer/resources/infinity-hub.html#f-amd_hub_category=AI%20%26%20ML%20Models>`_.
|
||||||
|
|
||||||
|
Previous versions
|
||||||
|
=================
|
||||||
|
|
||||||
|
See :doc:`pytorch-training-history` to find documentation for previous releases
|
||||||
|
of the ``ROCm/pytorch-training`` Docker image.
|
||||||
@@ -0,0 +1,588 @@
|
|||||||
|
:orphan:
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:description: How to train a model using PyTorch for ROCm.
|
||||||
|
:keywords: ROCm, AI, LLM, train, PyTorch, torch, Llama, flux, tutorial, docker
|
||||||
|
|
||||||
|
**************************************
|
||||||
|
Training a model with PyTorch on ROCm
|
||||||
|
**************************************
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
|
||||||
|
This documentation does not reflect the latest version of ROCm PyTorch training
|
||||||
|
performance benchmark documentation. See :doc:`../pytorch-training` for the latest version.
|
||||||
|
|
||||||
|
PyTorch is an open-source machine learning framework that is widely used for
|
||||||
|
model training with GPU-optimized components for transformer-based models.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/pytorch-training-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set dockers = data.dockers %}
|
||||||
|
{% set docker = dockers[0] %}
|
||||||
|
The `PyTorch for ROCm training Docker <{{ docker.docker_hub_url }}>`__
|
||||||
|
(``{{ docker.pull_tag }}``) image provides a prebuilt optimized environment for fine-tuning and pretraining a
|
||||||
|
model on AMD Instinct MI325X and MI300X GPUs. It includes the following software components to accelerate
|
||||||
|
training workloads:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Software component
|
||||||
|
- Version
|
||||||
|
|
||||||
|
{% for component_name, component_version in docker.components.items() %}
|
||||||
|
* - {{ component_name }}
|
||||||
|
- {{ component_version }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. _amd-pytorch-training-model-support:
|
||||||
|
|
||||||
|
Supported models
|
||||||
|
================
|
||||||
|
|
||||||
|
The following models are pre-optimized for performance on the AMD Instinct MI325X and MI300X GPUs.
|
||||||
|
Some instructions, commands, and training recommendations in this documentation might
|
||||||
|
vary by model -- select one to get started.
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/pytorch-training-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set unified_docker = data.dockers[0] %}
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<div id="vllm-benchmark-ud-params-picker" class="container-fluid">
|
||||||
|
<div class="row gx-0">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Model</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model-group" data-param-v="{{ model_group.tag }}" tabindex="0">{{ model_group.group }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row gx-0 pt-1">
|
||||||
|
<div class="col-2 me-1 px-2 model-param-head">Variant</div>
|
||||||
|
<div class="row col-10 pe-0">
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% set models = model_group.models %}
|
||||||
|
{% for model in models %}
|
||||||
|
{% if models|length % 3 == 0 %}
|
||||||
|
<div class="col-4 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-6 px-2 model-param" data-param-k="model" data-param-v="{{ model.mad_tag }}" data-param-group="{{ model_group.tag }}" tabindex="0">{{ model.model }}</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
.. _amd-pytorch-training-supported-training-modes:
|
||||||
|
|
||||||
|
The following table lists supported training modes per model.
|
||||||
|
|
||||||
|
.. dropdown:: Supported training modes
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Model
|
||||||
|
- Supported training modes
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% set models = model_group.models %}
|
||||||
|
{% for model in models %}
|
||||||
|
{% if model.training_modes %}
|
||||||
|
* - {{ model.model }}
|
||||||
|
- ``{{ model.training_modes | join('``, ``') }}``
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some model and fine-tuning combinations are not listed. This is
|
||||||
|
because the `upstream torchtune repository <https://github.com/pytorch/torchtune>`__
|
||||||
|
doesn't provide default YAML configurations for them.
|
||||||
|
For advanced usage, you can create a custom configuration to enable
|
||||||
|
unlisted fine-tuning methods by using an existing file in the
|
||||||
|
``/workspace/torchtune/recipes/configs`` directory as a template.
|
||||||
|
|
||||||
|
.. _amd-pytorch-training-performance-measurements:
|
||||||
|
|
||||||
|
Performance measurements
|
||||||
|
========================
|
||||||
|
|
||||||
|
To evaluate performance, the
|
||||||
|
`Performance results with AMD ROCm software <https://www.amd.com/en/developer/resources/rocm-hub/dev-ai/performance-results.html#tabs-a8deaeb413-item-21cea50186-tab>`_
|
||||||
|
page provides reference throughput and latency measurements for training
|
||||||
|
popular AI models.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The performance data presented in
|
||||||
|
`Performance results with AMD ROCm software <https://www.amd.com/en/developer/resources/rocm-hub/dev-ai/performance-results.html#tabs-a8deaeb413-item-21cea50186-tab>`_
|
||||||
|
should not be interpreted as the peak performance achievable by AMD
|
||||||
|
Instinct MI325X and MI300X GPUs or ROCm software.
|
||||||
|
|
||||||
|
System validation
|
||||||
|
=================
|
||||||
|
|
||||||
|
Before running AI workloads, it's important to validate that your AMD hardware is configured
|
||||||
|
correctly and performing optimally.
|
||||||
|
|
||||||
|
If you have already validated your system settings, including aspects like NUMA auto-balancing, you
|
||||||
|
can skip this step. Otherwise, complete the procedures in the :ref:`System validation and
|
||||||
|
optimization <rocm-for-ai-system-optimization>` guide to properly configure your system settings
|
||||||
|
before starting training.
|
||||||
|
|
||||||
|
To test for optimal performance, consult the recommended :ref:`System health benchmarks
|
||||||
|
<rocm-for-ai-system-health-bench>`. This suite of tests will help you verify and fine-tune your
|
||||||
|
system's configuration.
|
||||||
|
|
||||||
|
This Docker image is optimized for specific model configurations outlined
|
||||||
|
below. Performance can vary for other training workloads, as AMD
|
||||||
|
doesn’t test configurations and run conditions outside those described.
|
||||||
|
|
||||||
|
Run training
|
||||||
|
============
|
||||||
|
|
||||||
|
.. datatemplate:yaml:: /data/how-to/rocm-for-ai/training/previous-versions/pytorch-training-v25.8-benchmark-models.yaml
|
||||||
|
|
||||||
|
{% set unified_docker = data.dockers[0] %}
|
||||||
|
{% set model_groups = data.model_groups %}
|
||||||
|
|
||||||
|
Once the setup is complete, choose between two options to start benchmarking training:
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: MAD-integrated benchmarking
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
The following run command is tailored to {{ model.model }}.
|
||||||
|
See :ref:`amd-pytorch-training-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
1. Clone the ROCm Model Automation and Dashboarding (`<https://github.com/ROCm/MAD>`__) repository to a local
|
||||||
|
directory and install the required packages on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
2. For example, use this command to run the performance benchmark test on the {{ model.model }} model
|
||||||
|
using one node with the {{ model.precision }} data type on the host machine.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export MAD_SECRETS_HFTOKEN="your personal Hugging Face token to access gated models"
|
||||||
|
madengine run \
|
||||||
|
--tags {{ model.mad_tag }} \
|
||||||
|
--keep-model-dir \
|
||||||
|
--live-output \
|
||||||
|
--timeout 28800
|
||||||
|
|
||||||
|
MAD launches a Docker container with the name
|
||||||
|
``container_ci-{{ model.mad_tag }}``. The latency and throughput reports of the
|
||||||
|
model are collected in ``~/MAD/perf.csv``.
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. tab-item:: Standalone benchmarking
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
The following commands are tailored to {{ model.model }}.
|
||||||
|
See :ref:`amd-pytorch-training-model-support` to switch to another available model.
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. rubric:: Download the Docker image and required packages
|
||||||
|
|
||||||
|
1. Use the following command to pull the Docker image from Docker Hub.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker pull {{ unified_docker.pull_tag }}
|
||||||
|
|
||||||
|
2. Run the Docker container.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
--device /dev/dri \
|
||||||
|
--device /dev/kfd \
|
||||||
|
--network host \
|
||||||
|
--ipc host \
|
||||||
|
--group-add video \
|
||||||
|
--cap-add SYS_PTRACE \
|
||||||
|
--security-opt seccomp=unconfined \
|
||||||
|
--privileged \
|
||||||
|
-v $HOME:$HOME \
|
||||||
|
-v $HOME/.ssh:/root/.ssh \
|
||||||
|
--shm-size 64G \
|
||||||
|
--name training_env \
|
||||||
|
{{ unified_docker.pull_tag }}
|
||||||
|
|
||||||
|
Use these commands if you exit the ``training_env`` container and need to return to it.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
docker start training_env
|
||||||
|
docker exec -it training_env bash
|
||||||
|
|
||||||
|
3. In the Docker container, clone the `<https://github.com/ROCm/MAD>`__
|
||||||
|
repository and navigate to the benchmark scripts directory
|
||||||
|
``/workspace/MAD/scripts/pytorch_train``.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/ROCm/MAD
|
||||||
|
cd MAD/scripts/pytorch_train
|
||||||
|
|
||||||
|
.. rubric:: Prepare training datasets and dependencies
|
||||||
|
|
||||||
|
1. The following benchmarking examples require downloading models and datasets
|
||||||
|
from Hugging Face. To ensure successful access to gated repos, set your
|
||||||
|
``HF_TOKEN``.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export HF_TOKEN=$your_personal_hugging_face_access_token
|
||||||
|
|
||||||
|
2. Run the setup script to install libraries and datasets needed for benchmarking.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_setup.sh
|
||||||
|
|
||||||
|
.. container:: model-doc pyt_train_llama-3.1-8b
|
||||||
|
|
||||||
|
``pytorch_benchmark_setup.sh`` installs the following libraries for Llama 3.1 8B:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Library
|
||||||
|
- Reference
|
||||||
|
|
||||||
|
* - ``accelerate``
|
||||||
|
- `Hugging Face Accelerate <https://huggingface.co/docs/accelerate/en/index>`_
|
||||||
|
|
||||||
|
* - ``datasets``
|
||||||
|
- `Hugging Face Datasets <https://huggingface.co/docs/datasets/v3.2.0/en/index>`_ 3.2.0
|
||||||
|
|
||||||
|
.. container:: model-doc pyt_train_llama-3.1-70b
|
||||||
|
|
||||||
|
``pytorch_benchmark_setup.sh`` installs the following libraries for Llama 3.1 70B:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Library
|
||||||
|
- Reference
|
||||||
|
|
||||||
|
* - ``datasets``
|
||||||
|
- `Hugging Face Datasets <https://huggingface.co/docs/datasets/v3.2.0/en/index>`_ 3.2.0
|
||||||
|
|
||||||
|
* - ``torchdata``
|
||||||
|
- `TorchData <https://meta-pytorch.org/data/beta/index.html#torchdata>`__
|
||||||
|
|
||||||
|
* - ``tomli``
|
||||||
|
- `Tomli <https://pypi.org/project/tomli/>`__
|
||||||
|
|
||||||
|
* - ``tiktoken``
|
||||||
|
- `tiktoken <https://github.com/openai/tiktoken>`__
|
||||||
|
|
||||||
|
* - ``blobfile``
|
||||||
|
- `blobfile <https://pypi.org/project/blobfile/>`__
|
||||||
|
|
||||||
|
* - ``tabulate``
|
||||||
|
- `tabulate <https://pypi.org/project/tabulate/>`__
|
||||||
|
|
||||||
|
* - ``wandb``
|
||||||
|
- `Weights & Biases <https://github.com/wandb/wandb>`__
|
||||||
|
|
||||||
|
* - ``sentencepiece``
|
||||||
|
- `SentencePiece <https://github.com/google/sentencepiece>`__ 0.2.0
|
||||||
|
|
||||||
|
* - ``tensorboard``
|
||||||
|
- `TensorBoard <https://www.tensorflow.org/tensorboard>`__ 2.18.0
|
||||||
|
|
||||||
|
.. container:: model-doc pyt_train_flux
|
||||||
|
|
||||||
|
``pytorch_benchmark_setup.sh`` installs the following libraries for FLUX:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Library
|
||||||
|
- Reference
|
||||||
|
|
||||||
|
* - ``accelerate``
|
||||||
|
- `Hugging Face Accelerate <https://huggingface.co/docs/accelerate/en/index>`_
|
||||||
|
|
||||||
|
* - ``datasets``
|
||||||
|
- `Hugging Face Datasets <https://huggingface.co/docs/datasets/v3.2.0/en/index>`__ 3.2.0
|
||||||
|
|
||||||
|
* - ``sentencepiece``
|
||||||
|
- `SentencePiece <https://github.com/google/sentencepiece>`__ 0.2.0
|
||||||
|
|
||||||
|
* - ``tensorboard``
|
||||||
|
- `TensorBoard <https://www.tensorflow.org/tensorboard>`__ 2.18.0
|
||||||
|
|
||||||
|
* - ``csvkit``
|
||||||
|
- `csvkit <https://csvkit.readthedocs.io/en/latest/>`__ 2.0.1
|
||||||
|
|
||||||
|
* - ``deepspeed``
|
||||||
|
- `DeepSpeed <https://github.com/deepspeedai/DeepSpeed>`__ 0.16.2
|
||||||
|
|
||||||
|
* - ``diffusers``
|
||||||
|
- `Hugging Face Diffusers <https://huggingface.co/docs/diffusers/en/index>`__ 0.31.0
|
||||||
|
|
||||||
|
* - ``GitPython``
|
||||||
|
- `GitPython <https://github.com/gitpython-developers/GitPython>`__ 3.1.44
|
||||||
|
|
||||||
|
* - ``opencv-python-headless``
|
||||||
|
- `opencv-python-headless <https://pypi.org/project/opencv-python-headless/>`__ 4.10.0.84
|
||||||
|
|
||||||
|
* - ``peft``
|
||||||
|
- `PEFT <https://huggingface.co/docs/peft/en/index>`__ 0.14.0
|
||||||
|
|
||||||
|
* - ``protobuf``
|
||||||
|
- `Protocol Buffers <https://github.com/protocolbuffers/protobuf>`__ 5.29.2
|
||||||
|
|
||||||
|
* - ``pytest``
|
||||||
|
- `PyTest <https://docs.pytest.org/en/stable/>`__ 8.3.4
|
||||||
|
|
||||||
|
* - ``python-dotenv``
|
||||||
|
- `python-dotenv <https://pypi.org/project/python-dotenv/>`__ 1.0.1
|
||||||
|
|
||||||
|
* - ``seaborn``
|
||||||
|
- `Seaborn <https://seaborn.pydata.org/>`__ 0.13.2
|
||||||
|
|
||||||
|
* - ``transformers``
|
||||||
|
- `Transformers <https://huggingface.co/docs/transformers/en/index>`__ 4.47.0
|
||||||
|
|
||||||
|
``pytorch_benchmark_setup.sh`` downloads the following datasets from Hugging Face:
|
||||||
|
|
||||||
|
* `bghira/pseudo-camera-10k <https://huggingface.co/datasets/bghira/pseudo-camera-10k>`__
|
||||||
|
|
||||||
|
{% for model_group in model_groups %}
|
||||||
|
{% for model in model_group.models %}
|
||||||
|
{% set training_modes = model.training_modes %}
|
||||||
|
{% set training_mode_descs = {
|
||||||
|
"pretrain": "Benchmark pre-training.",
|
||||||
|
"HF_pretrain": "Llama 3.1 8B pre-training with FP8 precision."
|
||||||
|
} %}
|
||||||
|
{% set available_modes = training_modes | select("in", ["pretrain", "HF_pretrain"]) | list %}
|
||||||
|
{% if available_modes %}
|
||||||
|
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
.. rubric:: Pre-training
|
||||||
|
|
||||||
|
To start the pre-training benchmark, use the following command with the
|
||||||
|
appropriate options. See the following list of options and their descriptions.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_report.sh -t {% if available_modes | length == 1 %}{{ available_modes[0] }}{% else %}$training_mode{% endif %} \
|
||||||
|
-m {{ model.model_repo }} \
|
||||||
|
-p $datatype \
|
||||||
|
-s $sequence_length
|
||||||
|
|
||||||
|
{% if model.mad_tag == "pyt_train_flux" %}
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Currently, FLUX models are not supported out-of-the-box on {{ unified_docker.pull_tag }}.
|
||||||
|
To use FLUX, refer to ``rocm/pytorch-training`` Docker: :doc:`pytorch-training-v25.6`
|
||||||
|
|
||||||
|
Occasionally, downloading the Flux dataset might fail. In the event of this
|
||||||
|
error, manually download it from Hugging Face at
|
||||||
|
`black-forest-labs/FLUX.1-dev <https://huggingface.co/black-forest-labs/FLUX.1-dev>`_
|
||||||
|
and save it to `/workspace/FluxBenchmark`. This ensures that the test script can access
|
||||||
|
the required dataset.
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Name
|
||||||
|
- Options
|
||||||
|
- Description
|
||||||
|
|
||||||
|
{% for mode in available_modes %}
|
||||||
|
* - {% if loop.first %}``$training_mode``{% endif %}
|
||||||
|
- ``{{ mode }}``
|
||||||
|
- {{ training_mode_descs[mode] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
* - ``$datatype``
|
||||||
|
- ``BF16``{% if model.mad_tag == "pyt_train_llama-3.1-8b" %} or ``FP8``{% endif %}
|
||||||
|
- Only Llama 3.1 8B supports FP8 precision.
|
||||||
|
|
||||||
|
* - ``$sequence_length``
|
||||||
|
- Sequence length for the language model.
|
||||||
|
- Between 2048 and 8192. 8192 by default.
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% set training_mode_descs = {
|
||||||
|
"finetune_fw": "Full weight fine-tuning (BF16 and FP8 supported).",
|
||||||
|
"finetune_lora": "LoRA fine-tuning (BF16 supported).",
|
||||||
|
"finetune_qlora": "QLoRA fine-tuning (BF16 supported).",
|
||||||
|
"HF_finetune_lora": "LoRA fine-tuning with Hugging Face PEFT.",
|
||||||
|
} %}
|
||||||
|
{% set available_modes = training_modes | select("in", ["finetune_fw", "finetune_lora", "finetune_qlora", "HF_finetune_lora"]) | list %}
|
||||||
|
{% if available_modes %}
|
||||||
|
.. container:: model-doc {{ model.mad_tag }}
|
||||||
|
|
||||||
|
.. rubric:: Fine-tuning
|
||||||
|
|
||||||
|
To start the fine-tuning benchmark, use the following command with the
|
||||||
|
appropriate options. See the following list of options and their descriptions.
|
||||||
|
See :ref:`supported training modes <amd-pytorch-training-supported-training-modes>`.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
./pytorch_benchmark_report.sh -t $training_mode \
|
||||||
|
-m {{ model.model_repo }} \
|
||||||
|
-p $datatype \
|
||||||
|
-s $sequence_length
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Name
|
||||||
|
- Options
|
||||||
|
- Description
|
||||||
|
|
||||||
|
{% for mode in available_modes %}
|
||||||
|
* - {% if loop.first %}``$training_mode``{% endif %}
|
||||||
|
- ``{{ mode }}``
|
||||||
|
- {{ training_mode_descs[mode] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
* - ``$datatype``
|
||||||
|
- ``BF16``{% if "finetune_fw" in available_modes %} or ``FP8``{% endif %}
|
||||||
|
- All models support BF16.{% if "finetune_fw" in available_modes %} FP8 is only available for full weight fine-tuning.{% endif %}
|
||||||
|
|
||||||
|
* - ``$sequence_length``
|
||||||
|
- Between 2048 and 16384.
|
||||||
|
- Sequence length for the language model.
|
||||||
|
|
||||||
|
{% if model.mad_tag in ["pyt_train_llama3.2-vision-11b", "pyt_train_llama-3.2-vision-90b"] %}
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
For LoRA and QLoRA support with vision models (Llama 3.2 11B and 90B),
|
||||||
|
use the following torchtune commit for compatibility:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git checkout 48192e23188b1fc524dd6d127725ceb2348e7f0e
|
||||||
|
|
||||||
|
{% elif model.mad_tag in ["pyt_train_llama-2-7b", "pyt_train_llama-2-13b", "pyt_train_llama-2-70b"] %}
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
You might encounter the following error with Llama 2: ``ValueError: seq_len (16384) of
|
||||||
|
input tensor should be smaller than max_seq_len (4096)``.
|
||||||
|
This error indicates that an input sequence is longer than the model's maximum context window.
|
||||||
|
|
||||||
|
Ensure your tokenized input does not exceed the model's ``max_seq_len`` (4096
|
||||||
|
tokens in this case). You can resolve this by truncating the input or splitting
|
||||||
|
it into smaller chunks before passing it to the model.
|
||||||
|
|
||||||
|
Note on reproducibility: The results in this guide are based on
|
||||||
|
commit ``b4c98ac`` from the upstream
|
||||||
|
`<https://github.com/pytorch/torchtune>`__ repository. For the
|
||||||
|
latest updates, you can use the main branch.
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
.. rubric:: Benchmarking examples
|
||||||
|
|
||||||
|
For examples of benchmarking commands, see `<https://github.com/ROCm/MAD/tree/develop/benchmark/pytorch_train#benchmarking-examples>`__.
|
||||||
|
|
||||||
|
.. _amd-pytorch-training-multinode-examples:
|
||||||
|
|
||||||
|
Multi-node training
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Refer to :doc:`/how-to/rocm-for-ai/system-setup/multi-node-setup` to configure your environment for multi-node
|
||||||
|
training. See :ref:`rocm-for-ai-multi-node-setup-pyt-train-example` for example Slurm run commands.
|
||||||
|
|
||||||
|
Pre-training
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Multi-node training with torchtitan is supported. The provided SLURM script is pre-configured for Llama 3 70B.
|
||||||
|
|
||||||
|
To launch the training job on a SLURM cluster for Llama 3 70B, run the following commands from the MAD repository.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
# In the MAD repository
|
||||||
|
cd scripts/pytorch_train
|
||||||
|
sbatch run_slurm_train.sh
|
||||||
|
|
||||||
|
Fine-tuning
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
Multi-node training with torchtune is supported. The provided SLURM script is pre-configured for Llama 3.3 70B.
|
||||||
|
|
||||||
|
To launch the training job on a SLURM cluster for Llama 3.3 70B, run the following commands from the MAD repository.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
huggingface-cli login # Get access to HF Llama model space
|
||||||
|
huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir ./models/Llama-3.3-70B-Instruct # Download the Llama 3.3 model locally
|
||||||
|
# In the MAD repository
|
||||||
|
cd scripts/pytorch_train
|
||||||
|
sbatch Torchtune_Multinode.sh
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Information regarding benchmark setup:
|
||||||
|
|
||||||
|
* By default, Llama 3.3 70B is fine-tuned using ``alpaca_dataset``.
|
||||||
|
* You can adjust the torchtune `YAML configuration file
|
||||||
|
<https://github.com/pytorch/torchtune/blob/main/recipes/configs/llama3_3/70B_full_multinode.yaml>`__
|
||||||
|
if you're using a different model.
|
||||||
|
* The number of nodes and other parameters can be tuned in the SLURM script ``Torchtune_Multinode.sh``.
|
||||||
|
* Set the ``mounting_paths`` inside the SLURM script.
|
||||||
|
|
||||||
|
Once the run is finished, you can find the log files in the ``result_torchtune/`` directory.
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
===============
|
||||||
|
|
||||||
|
- To learn more about MAD and the ``madengine`` CLI, see the `MAD usage guide <https://github.com/ROCm/MAD?tab=readme-ov-file#usage-guide>`__.
|
||||||
|
|
||||||
|
- To learn more about system settings and management practices to configure your system for
|
||||||
|
AMD Instinct MI300X series GPUs, see `AMD Instinct MI300X system optimization <https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300x.html>`_.
|
||||||
|
|
||||||
|
- For a list of other ready-made Docker images for AI with ROCm, see
|
||||||
|
`AMD Infinity Hub <https://www.amd.com/en/developer/resources/infinity-hub.html#f-amd_hub_category=AI%20%26%20ML%20Models>`_.
|
||||||
|
|
||||||
|
Previous versions
|
||||||
|
=================
|
||||||
|
|
||||||
|
See :doc:`pytorch-training-history` to find documentation for previous releases
|
||||||
|
of the ``ROCm/pytorch-training`` Docker image.
|
||||||
@@ -2,16 +2,16 @@
|
|||||||
:description: Learn what ROCm is – AMD's open software stack for GPU programming, including runtimes, compilers, libraries, and tools for Linux and Windows.
|
:description: Learn what ROCm is – AMD's open software stack for GPU programming, including runtimes, compilers, libraries, and tools for Linux and Windows.
|
||||||
:keywords: ROCm, AMD, GPU computing, ROCm Core SDK, ROCm components, TheRock, ROCm architecture, HPC, AI, machine learning, ROCm runtime
|
:keywords: ROCm, AMD, GPU computing, ROCm Core SDK, ROCm components, TheRock, ROCm architecture, HPC, AI, machine learning, ROCm runtime
|
||||||
|
|
||||||
*******************************
|
**********************
|
||||||
AMD ROCm |ROCM_VERSION| preview
|
AMD ROCm 7.9.0 preview
|
||||||
*******************************
|
**********************
|
||||||
|
|
||||||
AMD ROCm is an open, modular, and high‑performance GPU software ecosystem
|
AMD ROCm is an open, modular, and high‑performance GPU software ecosystem —
|
||||||
— built collaboratively with the community, maintained transparently, and
|
built collaboratively with the community, maintained transparently, and
|
||||||
optimized for consistent, scalable performance across data centers,
|
optimized for consistent, scalable performance across data centers, desktops,
|
||||||
workstations, and edge devices.
|
and edge devices.
|
||||||
|
|
||||||
ROCm |ROCM_VERSION| is a technology preview release built with
|
ROCm 7.9.0 is a technology preview release built with
|
||||||
`TheRock <https://github.com/ROCm/TheRock>`__, AMD’s new open build and release
|
`TheRock <https://github.com/ROCm/TheRock>`__, AMD’s new open build and release
|
||||||
system.
|
system.
|
||||||
This preview introduces a new modular build workflow that will become standard
|
This preview introduces a new modular build workflow that will become standard
|
||||||
@@ -34,13 +34,14 @@ frameworks such as PyTorch.
|
|||||||
* **Open source** -- Transparent development driven by community feedback
|
* **Open source** -- Transparent development driven by community feedback
|
||||||
* **Cross‑platform** -- Supports Linux and Windows environments
|
* **Cross‑platform** -- Supports Linux and Windows environments
|
||||||
* **Comprehensive** -- End‑to‑end toolchain from compilers to libraries
|
* **Comprehensive** -- End‑to‑end toolchain from compilers to libraries
|
||||||
* **Performance‑focused** -- Tuned for AMD Instinct™, AMD Radeon™, and AMD Ryzen™ devices
|
* **Performance‑focused** -- Tuned for AMD Instinct™, AMD Radeon™, and AMD Ryzen™ architectures
|
||||||
|
|
||||||
.. raw:: html
|
.. image:: data/rocm-ontology.png
|
||||||
:file: data/rocm-ontology.html
|
:align: center
|
||||||
|
:alt: ROCm software ecosystem and components illustration
|
||||||
|
|
||||||
ROCm supports AMD GPU architectures spanning data center, workstation, and APU
|
ROCm supports AMD GPU architectures spanning data center, workstation, and APU
|
||||||
product lines. TheRock enables a unified ROCm user‑space experience across
|
categories. TheRock enables a unified ROCm user‑space experience across
|
||||||
devices.
|
devices.
|
||||||
|
|
||||||
* **AMD Instinct GPUs** -- Purpose‑built for large‑scale compute, AI training, and HPC workloads.
|
* **AMD Instinct GPUs** -- Purpose‑built for large‑scale compute, AI training, and HPC workloads.
|
||||||
@@ -72,8 +73,9 @@ The ROCm Core SDK provides the foundational components that power the ROCm
|
|||||||
ecosystem — runtimes, compilers, math libraries, and system utilities for GPGPU
|
ecosystem — runtimes, compilers, math libraries, and system utilities for GPGPU
|
||||||
computing.
|
computing.
|
||||||
|
|
||||||
.. raw:: html
|
.. image:: data/rocm-sdk-arch.png
|
||||||
:file: data/rocm-sdk-arch.html
|
:align: center
|
||||||
|
:alt: ROCm Core SDK internal architecture illustration
|
||||||
|
|
||||||
The TheRock infrastructure keeps these components modular, consistent, and easy
|
The TheRock infrastructure keeps these components modular, consistent, and easy
|
||||||
to integrate across configurations.
|
to integrate across configurations.
|
||||||
|
|||||||
@@ -1,118 +0,0 @@
|
|||||||
.. meta::
|
|
||||||
:description: Learn how to build the ROCm Core SDK from source using TheRock. Includes references to environment setup guides for Ubuntu 24.04 and Windows 11, plus links to official instructions and compatibility guidance.
|
|
||||||
:keywords: AMD ROCm Core SDK, build ROCm from source, TheRock, ROCm SDK, Ubuntu 24.04, Windows 11, ROCm environment setup, AMD GPU compute, ROCm compatibility, ROCm build guide
|
|
||||||
|
|
||||||
***********************************
|
|
||||||
Build the ROCm Core SDK from source
|
|
||||||
***********************************
|
|
||||||
|
|
||||||
You can build the ROCm Core SDK from source using the open-source unified build
|
|
||||||
system `TheRock <https://github.com/ROCm/TheRock>`__. To learn more about the
|
|
||||||
motivation and architecture behind this system, see `ROCm Technology Preview:
|
|
||||||
ROCm Core SDK and TheRock Build System
|
|
||||||
<https://rocm.blogs.amd.com/software-tools-optimization/therock/README.html>`__.
|
|
||||||
|
|
||||||
This page consists mainly of key references to `TheRock's README
|
|
||||||
<https://github.com/ROCm/TheRock?tab=readme-ov-file#building-from-source>`__
|
|
||||||
and `supporting development manuals
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/README.md#development-manuals>`__
|
|
||||||
which provide up-to-date build instructions and guidance for supported
|
|
||||||
platforms. See `TheRock Development Guide
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/development/development_guide.md#therock-development-guide>`__
|
|
||||||
to learn about the overall build architecture.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
|
|
||||||
Building from source is recommended only if you need custom builds or are
|
|
||||||
contributing to ROCm development.
|
|
||||||
For most users, installing from official AMD releases is faster and easier.
|
|
||||||
See :doc:`/install/rocm` for installation instructions.
|
|
||||||
|
|
||||||
Prerequisites
|
|
||||||
=============
|
|
||||||
|
|
||||||
A successful build depends on a correctly configured environment. Before you
|
|
||||||
begin, ensure your system meets all hardware and software requirements. Review the
|
|
||||||
following resources:
|
|
||||||
|
|
||||||
* `Environment setup guide
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/environment_setup_guide.md>`__
|
|
||||||
|
|
||||||
* :doc:`/compatibility/compatibility-matrix`
|
|
||||||
|
|
||||||
High-level build process
|
|
||||||
========================
|
|
||||||
|
|
||||||
For an overview of the build architecture, start with TheRock's `development guide
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/development/development_guide.md>`__.
|
|
||||||
While specific commands vary by platform, the general workflow for building
|
|
||||||
from source involves these stages:
|
|
||||||
|
|
||||||
1. Clone the repository and install build dependencies. See :ref:`build-from-src-plat-setup`.
|
|
||||||
|
|
||||||
2. Configure the build: Use CMake feature flags to configure the build. This
|
|
||||||
step allows you to target specific platforms, build subsets of ROCm Core SDK
|
|
||||||
components, and toggle component features. See `Build configuration
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/README.md#build-configuration>`__
|
|
||||||
for optional and required build flags.
|
|
||||||
|
|
||||||
3. Execute the build: Run the build command to compile the source code. This
|
|
||||||
can be a time- and resource-intensive process. See `CMake build usage
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/README.md#cmake-build-usage>`__.
|
|
||||||
|
|
||||||
4. After a successful build, the outputs are available for use in downstream
|
|
||||||
tasks. To learn more about build outputs, see the relevant `TheRock
|
|
||||||
documentation <https://github.com/ROCm/TheRock/blob/main/docs/development/artifacts.md>`__.
|
|
||||||
Common post-build tasks include:
|
|
||||||
|
|
||||||
* Using ``build/dist/rocm``: When the build completes, you should have a
|
|
||||||
build of ROCm in the ``build/dist/rocm/`` directory. See `Using installed
|
|
||||||
tarballs <https://github.com/ROCm/TheRock/blob/main/RELEASES.md#using-installed-tarballs>`__
|
|
||||||
for more information.
|
|
||||||
|
|
||||||
* Building Python packages: Prepare the build artifacts for distribution as
|
|
||||||
Python packages. See `Building Python packages
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/packaging/python_packaging.md#building-packages>`__.
|
|
||||||
|
|
||||||
* Building PyTorch: Build a compatible PyTorch version against ROCm wheels.
|
|
||||||
See the `PyTorch build instructions
|
|
||||||
<https://github.com/ROCm/TheRock/tree/main/external-builds/pytorch#build-instructions>`__.
|
|
||||||
|
|
||||||
.. _build-from-src-plat-setup:
|
|
||||||
|
|
||||||
Platform-specific setup
|
|
||||||
=======================
|
|
||||||
|
|
||||||
ManyLinux
|
|
||||||
---------
|
|
||||||
|
|
||||||
On Linux, it's recommended to build with ManyLinux to produce binaries that are
|
|
||||||
portable across Ubuntu and other Linux distributions. To learn more about what
|
|
||||||
a ROCm ManyLinux build entails, see `ManyLinux builds
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/design/manylinux_builds.md>`__.
|
|
||||||
Refer to `ManyLinux x86_84
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/environment_setup_guide.md#manylinux-x84-64>`__
|
|
||||||
in the environment setup guide.
|
|
||||||
|
|
||||||
Ubuntu 24.04
|
|
||||||
------------
|
|
||||||
|
|
||||||
TheRock provides detailed instructions and scripts for preparing an Ubuntu
|
|
||||||
24.04 system, including installing necessary packages via apt.
|
|
||||||
Refer to `Setup — Ubuntu 24.04 <https://github.com/ROCm/TheRock?tab=readme-ov-file#setup---ubuntu-2404>`__
|
|
||||||
in the TheRock repository for guidance.
|
|
||||||
|
|
||||||
Windows 11
|
|
||||||
----------
|
|
||||||
|
|
||||||
For setup instructions on Windows 11 using Visual Studio 2022, see
|
|
||||||
`Setup — Windows 11
|
|
||||||
<https://github.com/ROCm/TheRock?tab=readme-ov-file#setup---windows-11-vs-2022>`__
|
|
||||||
in the TheRock repository.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
|
|
||||||
For details on supported configurations, known issues, and other
|
|
||||||
Windows-specific considerations, review the `Windows support
|
|
||||||
<https://github.com/ROCm/TheRock/blob/main/docs/development/windows_support.md>`__
|
|
||||||
documentation.
|
|
||||||
1054
docs/install/compatibility-matrix.md
Normal file
21
docs/install/includes/1_rhel-10.0-tar-prerequisites.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
1. Register your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Update your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf update --releasever=10.0 --exclude=\*release\*
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
27
docs/install/includes/1_rhel-10.0-wheel-prerequisites.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
1. Register your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Update your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf update --releasever=10.0 --exclude=\*release\*
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Install Python 3.12 or 3.13.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf install python3.12 python3.12-pip
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
22
docs/install/includes/1_rhel-9.6-tar-prerequisites.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
1. Register your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
sudo subscription-manager attach --auto
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Update your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf update --releasever=9.6 --exclude=\*release\*
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
28
docs/install/includes/1_rhel-9.6-wheel-prerequisites.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
1. Register your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
sudo subscription-manager attach --auto
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Update your Enterprise Linux.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf update --releasever=9.6 --exclude=\*release\*
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Install Python 3.11, 3.12 or 3.13.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf install python3.11 python3.11-pip
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
15
docs/install/includes/1_ubuntu-22.04-wheel-prerequisites.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
1. Install Python 3.11.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install python3.11 python3.11-venv
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
15
docs/install/includes/1_ubuntu-24.04-wheel-prerequisites.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
1. Install Python 3.12 or 3.13.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install python3.12 python3.12-venv
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
9
docs/install/includes/1_ubuntu-tar-prerequisites.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Configure permissions for GPU access.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
```
|
||||||
6
docs/install/includes/1_windows-tar-prerequisites.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
1. Remove any existing HIP SDK installations and other
|
||||||
|
conflicting AMD graphics software.
|
||||||
|
|
||||||
|
2. Install the [Adrenalin Driver version
|
||||||
|
25.9.2](https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-25-9-2.html).
|
||||||
|
For instructions, see [Install AMD Software: Adrenalin Edition](https://www.amd.com/en/resources/support-articles/faqs/RSX2-INSTALL.html).
|
||||||
8
docs/install/includes/1_windows-wheel-prerequisites.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
1. Remove any existing HIP SDK installations and other
|
||||||
|
conflicting AMD graphics software.
|
||||||
|
|
||||||
|
2. Install the [Adrenalin Driver version
|
||||||
|
25.9.2](https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-25-9-2.html).
|
||||||
|
For instructions, see [Install AMD Software: Adrenalin Edition](https://www.amd.com/en/resources/support-articles/faqs/RSX2-INSTALL.html).
|
||||||
|
|
||||||
|
3. Install a supported Python version: 3.11, 3.12, or 3.13.
|
||||||
6
docs/install/includes/2_rhel-instinct-install-kmd.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
For information about driver compatibility, see the {doc}`compatibility-matrix`.
|
||||||
|
|
||||||
|
For information about the AMD GPU driver installation, see the
|
||||||
|
[RHEL native
|
||||||
|
installation](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/install/detailed-install/package-manager/package-manager-rhel.html)
|
||||||
|
in the AMD Instinct Data Center GPU Documentation.
|
||||||
6
docs/install/includes/2_ubuntu-instinct-install-kmd.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
For information about driver compatibility, see the {doc}`compatibility-matrix`.
|
||||||
|
|
||||||
|
For information about the AMD GPU driver installation, see the
|
||||||
|
[Ubuntu native
|
||||||
|
installation](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/install/detailed-install/package-manager/package-manager-ubuntu.html)
|
||||||
|
in the AMD Instinct Data Center GPU Documentation.
|
||||||
20
docs/install/includes/3_tar-gfx1151-install-rocm.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
1. Create the installation directory. For example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir therock-tarball && cd therock-tarball
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
Subsequent commands assume you're working with the
|
||||||
|
`therock-tarball` directory.
|
||||||
|
If you choose a different directory name, adjust the
|
||||||
|
subsequent commands accordingly.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Download and unpack the tarball.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://repo.amd.com/rocm/tarball/therock-dist-linux-gfx1151-7.9.0rc1.tar.gz
|
||||||
|
mkdir install
|
||||||
|
tar -xf *.tar.gz -C install
|
||||||
|
```
|
||||||
20
docs/install/includes/3_tar-gfx942-install-rocm.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
1. Create the installation directory. For example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir therock-tarball && cd therock-tarball
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
Subsequent commands assume you're working with the
|
||||||
|
`therock-tarball` directory.
|
||||||
|
If you choose a different directory name, adjust the
|
||||||
|
subsequent commands accordingly.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Download and unpack the tarball.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://repo.amd.com/rocm/tarball/therock-dist-linux-gfx94X-dcgpu-7.9.0rc1.tar.gz
|
||||||
|
mkdir install
|
||||||
|
tar -xf *.tar.gz -C install
|
||||||
|
```
|
||||||
20
docs/install/includes/3_tar-gfx950-install-rocm.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
1. Create the installation directory. For example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir therock-tarball && cd therock-tarball
|
||||||
|
```
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
Subsequent commands assume you're working with the
|
||||||
|
`therock-tarball` directory.
|
||||||
|
If you choose a different directory name, adjust the
|
||||||
|
subsequent commands accordingly.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Download and unpack the tarball.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://repo.amd.com/rocm/tarball/therock-dist-linux-gfx950-dcgpu-7.9.0rc1.tar.gz
|
||||||
|
mkdir install
|
||||||
|
tar -xf *.tar.gz -C install
|
||||||
|
```
|
||||||
12
docs/install/includes/3_wheel-gfx1151-install-rocm.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1151/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
12
docs/install/includes/3_wheel-gfx942-install-rocm-py311.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.11 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx94X-dcgpu/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
12
docs/install/includes/3_wheel-gfx942-install-rocm.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx94X-dcgpu/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
12
docs/install/includes/3_wheel-gfx950-install-rocm-py311.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.11 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx950-dcgpu/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
12
docs/install/includes/3_wheel-gfx950-install-rocm.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx950-dcgpu/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
47
docs/install/includes/3_windows-tar-install-rocm.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
```{important}
|
||||||
|
- Do not copy/replace the ROCm-SDK compiler and runtime DLLs to
|
||||||
|
`System32` as this can cause conflicts.
|
||||||
|
|
||||||
|
- Disable the following Windows security features as they
|
||||||
|
can interfere with ROCm functionality:
|
||||||
|
|
||||||
|
- Turn off WDAG (Windows Defender Application Guard)
|
||||||
|
- Control Panel > Programs > Programs and Features > Turn Windows features on or off > **Deselect** "Microsoft Defender Application Guard"
|
||||||
|
- Turn off SAC (Smart App Control)
|
||||||
|
- Settings > Privacy & security > Windows Security > App & browser control > Smart App Control settings > **Off**
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Create the installation directory in `C:\TheRock\build`.
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
Subsequent commands assume you're working with the
|
||||||
|
`C:\TheRock\build` directory.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Download the tarball and extract the contents to
|
||||||
|
`C:\TheRock\build`.
|
||||||
|
|
||||||
|
- Download link: [https://repo.amd.com/rocm/tarball/therock-dist-windows-gfx1151-7.9.0rc1.tar.gz](https://repo.amd.com/rocm/tarball/therock-dist-windows-gfx1151-7.9.0rc1.tar.gz)
|
||||||
|
|
||||||
|
3. Set the following environment variables using the command
|
||||||
|
prompt as an administrator:
|
||||||
|
|
||||||
|
```bat
|
||||||
|
setx HIP_DEVICE_LIB_PATH “C:\TheRock\build\lib\llvm\amdgcn\bitcode” /M
|
||||||
|
setx HIP_PATH “C:\TheRock\build” /M
|
||||||
|
setx HIP_PLATFORM “amd” /M
|
||||||
|
setx LLVM_PATH “C:\TheRock\build\lib\llvm” /M
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Add the following paths into PATH environment variable using your system settings GUI.
|
||||||
|
|
||||||
|
- `C:\TheRock\build\bin`
|
||||||
|
|
||||||
|
- `C:\TheRock\build\lib\llvm\bin`
|
||||||
|
|
||||||
|
5. Open a new command prompt window for the environment variables to take effect. Run `set`
|
||||||
|
to see the list of active variables.
|
||||||
|
|
||||||
|
```bat
|
||||||
|
set
|
||||||
|
````
|
||||||
12
docs/install/includes/3_windows-wheel-install-rocm.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1. Set up your Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
.venv\Scripts\activate
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install ROCm wheels packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1151/ "rocm[libraries,devel]"
|
||||||
|
```
|
||||||
53
docs/install/includes/4_linux-tar-post-install.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
1. Configure ROCm PATH. Make sure you're in the `therock-tarball` directory before proceeding.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export ROCM_PATH=$PWD
|
||||||
|
export PATH=$PATH:$ROCM_PATH/install/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Configure `LD_LIBRARY_PATH`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export LD_LIBRARY_PATH=$ROCM_PATH/install/lib
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Verify the ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocminfo
|
||||||
|
amd-smi
|
||||||
|
```
|
||||||
|
|
||||||
|
```{eval-rst}
|
||||||
|
.. dropdown:: Example output of ``rocminfo``
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
ROCk module is loaded
|
||||||
|
=====================
|
||||||
|
HSA System Attributes
|
||||||
|
=====================
|
||||||
|
Runtime Version: 1.18
|
||||||
|
Runtime Ext Version: 1.14
|
||||||
|
System Timestamp Freq.: 1000.000000MHz
|
||||||
|
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
|
||||||
|
Machine Model: LARGE
|
||||||
|
System Endianness: LITTLE
|
||||||
|
Mwaitx: DISABLED
|
||||||
|
XNACK enabled: NO
|
||||||
|
DMAbuf Support: YES
|
||||||
|
VMM Support: YES
|
||||||
|
|
||||||
|
==========
|
||||||
|
HSA Agents
|
||||||
|
==========
|
||||||
|
*******
|
||||||
|
Agent 1
|
||||||
|
*******
|
||||||
|
Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Uuid: CPU-XX
|
||||||
|
Marketing Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Vendor Name: CPU
|
||||||
|
|
||||||
|
[output truncated]
|
||||||
|
```
|
||||||
72
docs/install/includes/4_rhel-wheel-post-install.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
1. Verify the ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocminfo
|
||||||
|
amd-smi
|
||||||
|
```
|
||||||
|
|
||||||
|
```{eval-rst}
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``rocminfo``
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
ROCk module is loaded
|
||||||
|
=====================
|
||||||
|
HSA System Attributes
|
||||||
|
=====================
|
||||||
|
Runtime Version: 1.18
|
||||||
|
Runtime Ext Version: 1.14
|
||||||
|
System Timestamp Freq.: 1000.000000MHz
|
||||||
|
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
|
||||||
|
Machine Model: LARGE
|
||||||
|
System Endianness: LITTLE
|
||||||
|
Mwaitx: DISABLED
|
||||||
|
XNACK enabled: NO
|
||||||
|
DMAbuf Support: YES
|
||||||
|
VMM Support: YES
|
||||||
|
|
||||||
|
==========
|
||||||
|
HSA Agents
|
||||||
|
==========
|
||||||
|
*******
|
||||||
|
Agent 1
|
||||||
|
*******
|
||||||
|
Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Uuid: CPU-XX
|
||||||
|
Marketing Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Vendor Name: CPU
|
||||||
|
|
||||||
|
[output truncated]
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Inspect your ROCm installation in your Python environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip freeze | grep rocm
|
||||||
|
which rocm-sdk
|
||||||
|
ls .venv/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Test your ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocm-sdk targets
|
||||||
|
rocm-sdk path --cmake
|
||||||
|
rocm-sdk path --bin
|
||||||
|
rocm-sdk path --root
|
||||||
|
rocm-sdk test
|
||||||
|
```
|
||||||
|
|
||||||
|
To learn more about the `rocm-sdk` tool and to see example expected outputs,
|
||||||
|
see [Using ROCm Python packages
|
||||||
|
(TheRock)](https://github.com/ROCm/TheRock/blob/main/RELEASES.md#using-rocm-python-packages).
|
||||||
|
|
||||||
|
````{tip}
|
||||||
|
If you need to deactivate your Python virtual environment when finished,
|
||||||
|
run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
deactivate
|
||||||
|
```
|
||||||
|
````
|
||||||
72
docs/install/includes/4_ubuntu-wheel-post-install.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
1. Verify the ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocminfo
|
||||||
|
amd-smi
|
||||||
|
```
|
||||||
|
|
||||||
|
```{eval-rst}
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``rocminfo``
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
ROCk module is loaded
|
||||||
|
=====================
|
||||||
|
HSA System Attributes
|
||||||
|
=====================
|
||||||
|
Runtime Version: 1.18
|
||||||
|
Runtime Ext Version: 1.14
|
||||||
|
System Timestamp Freq.: 1000.000000MHz
|
||||||
|
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
|
||||||
|
Machine Model: LARGE
|
||||||
|
System Endianness: LITTLE
|
||||||
|
Mwaitx: DISABLED
|
||||||
|
XNACK enabled: NO
|
||||||
|
DMAbuf Support: YES
|
||||||
|
VMM Support: YES
|
||||||
|
|
||||||
|
==========
|
||||||
|
HSA Agents
|
||||||
|
==========
|
||||||
|
*******
|
||||||
|
Agent 1
|
||||||
|
*******
|
||||||
|
Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Uuid: CPU-XX
|
||||||
|
Marketing Name: AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
|
||||||
|
Vendor Name: CPU
|
||||||
|
|
||||||
|
[output truncated]
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Inspect your ROCm installation in your Python environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip freeze | grep rocm
|
||||||
|
which rocm-sdk
|
||||||
|
ls .venv/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Test your ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocm-sdk targets
|
||||||
|
rocm-sdk path --cmake
|
||||||
|
rocm-sdk path --bin
|
||||||
|
rocm-sdk path --root
|
||||||
|
rocm-sdk test
|
||||||
|
```
|
||||||
|
|
||||||
|
To learn more about the `rocm-sdk` tool and to see example expected outputs,
|
||||||
|
see [Using ROCm Python packages
|
||||||
|
(TheRock)](https://github.com/ROCm/TheRock/blob/main/RELEASES.md#using-rocm-python-packages).
|
||||||
|
|
||||||
|
````{tip}
|
||||||
|
If you need to deactivate your Python virtual environment when finished,
|
||||||
|
run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
deactivate
|
||||||
|
```
|
||||||
|
````
|
||||||
21
docs/install/includes/4_windows-tar-post-install.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
Verify the ROCm installation.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
hipinfo
|
||||||
|
```
|
||||||
|
|
||||||
|
```{eval-rst}
|
||||||
|
.. dropdown:: Example output of ``hipinfo``
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
device# 0
|
||||||
|
Name: AMD Radeon(TM) 8060S Graphics
|
||||||
|
pciBusID: 197
|
||||||
|
pciDeviceID: 0
|
||||||
|
pciDomainID: 0
|
||||||
|
multiProcessorCount: 20
|
||||||
|
|
||||||
|
[output truncated]
|
||||||
|
```
|
||||||
48
docs/install/includes/4_windows-wheel-post-install.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
1. Verify the ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hipinfo
|
||||||
|
```
|
||||||
|
|
||||||
|
```{eval-rst}
|
||||||
|
.. dropdown:: Example output of ``hipinfo``
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
device# 0
|
||||||
|
Name: AMD Radeon(TM) 8060S Graphics
|
||||||
|
pciBusID: 197
|
||||||
|
pciDeviceID: 0
|
||||||
|
pciDomainID: 0
|
||||||
|
multiProcessorCount: 20
|
||||||
|
|
||||||
|
[output truncated]
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Inspect your ROCm installation in your Python environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip freeze
|
||||||
|
where rocm-sdk
|
||||||
|
dir .venv\Scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Test your ROCm installation.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rocm-sdk test
|
||||||
|
```
|
||||||
|
|
||||||
|
To learn more about the `rocm-sdk` tool and to see example expected outputs,
|
||||||
|
see [Using ROCm Python packages
|
||||||
|
(TheRock)](https://github.com/ROCm/TheRock/blob/main/RELEASES.md#using-rocm-python-packages).
|
||||||
|
|
||||||
|
````{tip}
|
||||||
|
If you need to deactivate your Python virtual environment when finished,
|
||||||
|
run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
deactivate
|
||||||
|
```
|
||||||
|
````
|
||||||
5
docs/install/includes/5_tar-uninstall.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
To uninstall ROCm, remove your installation directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo rm -rf therock-tarball
|
||||||
|
```
|
||||||
11
docs/install/includes/5_wheel-linux-uninstall.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
1. Clear the pip cache.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo rm -rf ~/.cache/pip
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Remove your local Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo rm -rf .venv
|
||||||
|
```
|
||||||
11
docs/install/includes/5_wheel-windows-uninstall.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
1. Clear the pip cache.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip cache purge
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Remove your local Python virtual environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rmdir /s /q .venv
|
||||||
|
```
|
||||||
18
docs/install/includes/5_windows-tar-uninstall.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
1. Delete the `C:\TheRock\build` and its contents.
|
||||||
|
|
||||||
|
2. Delete the environment variables. For example, using PowerShell as an administrator:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
[Environment]::SetEnvironmentVariable("HIP_PATH", $null, "Machine")
|
||||||
|
[Environment]::SetEnvironmentVariable("HIP_DEVICE_LIB_PATH", $null, "Machine")
|
||||||
|
[Environment]::SetEnvironmentVariable("HIP_PLATFORM", $null, "Machine")
|
||||||
|
[Environment]::SetEnvironmentVariable("LLVM_PATH", $null, "Machine")
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Remove the following paths from your PATH environment variable using your system settings GUI.
|
||||||
|
|
||||||
|
- `C:\TheRock\build\bin`
|
||||||
|
|
||||||
|
- `C:\TheRock\build\lib\llvm\bin`
|
||||||
|
|
||||||
|
4. If you want to uninstall the Adrenalin driver, see [Uninstall AMD Software](https://www.amd.com/en/resources/support-articles/faqs/RSX2-UNINSTALL.html).
|
||||||
8
docs/install/includes/6_rhel-troubleshooting.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Docker images often only include a minimal set of installations, meaning some
|
||||||
|
essential packages might be missing. When installing ROCm within a Docker
|
||||||
|
container, you might need to install additional packages for a successful
|
||||||
|
installation. Use the following commands to install the prerequisite packages.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dnf install sudo libatomic
|
||||||
|
```
|
||||||