mirror of
https://github.com/ROCm/ROCm.git
synced 2026-02-12 07:25:22 -05:00
Compare commits
12 Commits
docs/7.9.0
...
docs/7.11.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0785293530 | ||
|
|
e3e924cf00 | ||
|
|
60ebec8c07 | ||
|
|
5ac64b9f6b | ||
|
|
ffa6360979 | ||
|
|
b22c24b949 | ||
|
|
2563bd2a22 | ||
|
|
a04bb5b714 | ||
|
|
4c1f7d402f | ||
|
|
e88e961519 | ||
|
|
5f6018027b | ||
|
|
2e614775ab |
211
.wordlist.txt
211
.wordlist.txt
@@ -3,11 +3,8 @@ ABI
|
|||||||
ACE
|
ACE
|
||||||
ACEs
|
ACEs
|
||||||
ACS
|
ACS
|
||||||
AccVGPR
|
|
||||||
AccVGPRs
|
|
||||||
AITER
|
AITER
|
||||||
ALU
|
ALU
|
||||||
AllReduce
|
|
||||||
AMD
|
AMD
|
||||||
AMDGPU
|
AMDGPU
|
||||||
AMDGPUs
|
AMDGPUs
|
||||||
@@ -22,28 +19,32 @@ APIC
|
|||||||
APIs
|
APIs
|
||||||
APU
|
APU
|
||||||
APUs
|
APUs
|
||||||
|
ASAN
|
||||||
ASIC
|
ASIC
|
||||||
ASICs
|
ASICs
|
||||||
ASan
|
ASan
|
||||||
ASAN
|
|
||||||
ASm
|
ASm
|
||||||
ATI
|
ATI
|
||||||
atomicRMW
|
AccVGPR
|
||||||
|
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
|
||||||
@@ -62,7 +63,6 @@ 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
|
||||||
CXX
|
|
||||||
CX
|
CX
|
||||||
|
CXX
|
||||||
Cavium
|
Cavium
|
||||||
CentOS
|
CentOS
|
||||||
ChatGPT
|
ChatGPT
|
||||||
@@ -87,35 +87,32 @@ 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
|
||||||
@@ -123,24 +120,20 @@ 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
|
||||||
@@ -149,8 +142,8 @@ Filesystem
|
|||||||
FindDb
|
FindDb
|
||||||
Flang
|
Flang
|
||||||
FlashAttention
|
FlashAttention
|
||||||
FlashInfer’s
|
|
||||||
FlashInfer
|
FlashInfer
|
||||||
|
FlashInfer’s
|
||||||
FluxBenchmark
|
FluxBenchmark
|
||||||
Fortran
|
Fortran
|
||||||
Fuyu
|
Fuyu
|
||||||
@@ -167,16 +160,12 @@ GDS
|
|||||||
GEMM
|
GEMM
|
||||||
GEMMs
|
GEMMs
|
||||||
GFLOPS
|
GFLOPS
|
||||||
GFortran
|
|
||||||
GFXIP
|
GFXIP
|
||||||
|
GFortran
|
||||||
GGUF
|
GGUF
|
||||||
Gemma
|
|
||||||
GiB
|
|
||||||
GIM
|
GIM
|
||||||
GL
|
GL
|
||||||
Glibc
|
|
||||||
GLXT
|
GLXT
|
||||||
Gloo
|
|
||||||
GMI
|
GMI
|
||||||
GPG
|
GPG
|
||||||
GPGPU
|
GPGPU
|
||||||
@@ -185,23 +174,25 @@ 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
|
||||||
@@ -211,12 +202,12 @@ HSA
|
|||||||
HW
|
HW
|
||||||
HWE
|
HWE
|
||||||
HWS
|
HWS
|
||||||
|
HX
|
||||||
Haswell
|
Haswell
|
||||||
Higgs
|
Higgs
|
||||||
href
|
|
||||||
Hyperparameters
|
|
||||||
Huggingface
|
Huggingface
|
||||||
HunyuanVideo
|
HunyuanVideo
|
||||||
|
Hyperparameters
|
||||||
IB
|
IB
|
||||||
ICD
|
ICD
|
||||||
ICT
|
ICT
|
||||||
@@ -225,13 +216,10 @@ IDE
|
|||||||
IDEs
|
IDEs
|
||||||
IFWI
|
IFWI
|
||||||
IMDb
|
IMDb
|
||||||
IncDec
|
|
||||||
instrSize
|
|
||||||
interpolators
|
|
||||||
IOMMU
|
IOMMU
|
||||||
IOP
|
IOP
|
||||||
IOPS
|
|
||||||
IOPM
|
IOPM
|
||||||
|
IOPS
|
||||||
IOV
|
IOV
|
||||||
IRQ
|
IRQ
|
||||||
ISA
|
ISA
|
||||||
@@ -239,6 +227,7 @@ ISV
|
|||||||
ISVs
|
ISVs
|
||||||
ITL
|
ITL
|
||||||
ImageNet
|
ImageNet
|
||||||
|
IncDec
|
||||||
InfiniBand
|
InfiniBand
|
||||||
Inlines
|
Inlines
|
||||||
IntelliSense
|
IntelliSense
|
||||||
@@ -247,8 +236,8 @@ Intersphinx
|
|||||||
Intra
|
Intra
|
||||||
Ioffe
|
Ioffe
|
||||||
JAX's
|
JAX's
|
||||||
Jinja
|
|
||||||
JSON
|
JSON
|
||||||
|
Jinja
|
||||||
Jupyter
|
Jupyter
|
||||||
KFD
|
KFD
|
||||||
KFDTest
|
KFDTest
|
||||||
@@ -256,10 +245,10 @@ KMD
|
|||||||
KV
|
KV
|
||||||
KVM
|
KVM
|
||||||
Karpathy's
|
Karpathy's
|
||||||
KiB
|
|
||||||
Kineto
|
|
||||||
Keras
|
Keras
|
||||||
Khronos
|
Khronos
|
||||||
|
KiB
|
||||||
|
Kineto
|
||||||
LAPACK
|
LAPACK
|
||||||
LCLK
|
LCLK
|
||||||
LDS
|
LDS
|
||||||
@@ -269,21 +258,20 @@ 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
|
||||||
MIOpenGEMM
|
|
||||||
MIOpen's
|
MIOpen's
|
||||||
|
MIOpenGEMM
|
||||||
MIVisionX
|
MIVisionX
|
||||||
MLM
|
MLM
|
||||||
MMA
|
MMA
|
||||||
@@ -294,9 +282,9 @@ MNIST
|
|||||||
MPI
|
MPI
|
||||||
MPT
|
MPT
|
||||||
MSVC
|
MSVC
|
||||||
mul
|
|
||||||
MVAPICH
|
MVAPICH
|
||||||
MVFFR
|
MVFFR
|
||||||
|
MXFP
|
||||||
Makefile
|
Makefile
|
||||||
Makefiles
|
Makefiles
|
||||||
ManyLinux
|
ManyLinux
|
||||||
@@ -309,16 +297,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
|
||||||
@@ -326,24 +314,27 @@ 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
|
||||||
Noncoherently
|
|
||||||
NoReturn
|
NoReturn
|
||||||
|
Noncoherently
|
||||||
NousResearch's
|
NousResearch's
|
||||||
NumPy
|
NumPy
|
||||||
OAM
|
OAM
|
||||||
@@ -370,13 +361,10 @@ OpenVX
|
|||||||
OpenXLA
|
OpenXLA
|
||||||
Optim
|
Optim
|
||||||
Oversubscription
|
Oversubscription
|
||||||
PagedAttention
|
|
||||||
Pallas
|
|
||||||
PCC
|
PCC
|
||||||
PCI
|
PCI
|
||||||
PCIe
|
PCIe
|
||||||
PEFT
|
PEFT
|
||||||
perf
|
|
||||||
PEQT
|
PEQT
|
||||||
PIL
|
PIL
|
||||||
PILImage
|
PILImage
|
||||||
@@ -386,6 +374,8 @@ PRNG
|
|||||||
PRs
|
PRs
|
||||||
PaLM
|
PaLM
|
||||||
Pageable
|
Pageable
|
||||||
|
PagedAttention
|
||||||
|
Pallas
|
||||||
PeerDirect
|
PeerDirect
|
||||||
PerfDb
|
PerfDb
|
||||||
Perfetto
|
Perfetto
|
||||||
@@ -398,8 +388,8 @@ Pretraining
|
|||||||
Primus
|
Primus
|
||||||
Profiler's
|
Profiler's
|
||||||
PyPi
|
PyPi
|
||||||
Pytest
|
|
||||||
PyTorch
|
PyTorch
|
||||||
|
Pytest
|
||||||
Qcycles
|
Qcycles
|
||||||
Qwen
|
Qwen
|
||||||
RAII
|
RAII
|
||||||
@@ -410,16 +400,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
|
||||||
ROCTx
|
|
||||||
ROCTracer
|
ROCTracer
|
||||||
|
ROCTx
|
||||||
ROCclr
|
ROCclr
|
||||||
ROCdbgapi
|
ROCdbgapi
|
||||||
ROCgdb
|
ROCgdb
|
||||||
@@ -434,8 +424,10 @@ RPP
|
|||||||
RST
|
RST
|
||||||
RW
|
RW
|
||||||
Radeon
|
Radeon
|
||||||
|
Recomputation
|
||||||
RelWithDebInfo
|
RelWithDebInfo
|
||||||
Req
|
Req
|
||||||
|
ResNet
|
||||||
Rickle
|
Rickle
|
||||||
RoCE
|
RoCE
|
||||||
Runfile
|
Runfile
|
||||||
@@ -443,7 +435,6 @@ Ryzen
|
|||||||
SALU
|
SALU
|
||||||
SBIOS
|
SBIOS
|
||||||
SCA
|
SCA
|
||||||
ScaledGEMM
|
|
||||||
SDK
|
SDK
|
||||||
SDKs
|
SDKs
|
||||||
SDMA
|
SDMA
|
||||||
@@ -462,7 +453,6 @@ SKU
|
|||||||
SKUs
|
SKUs
|
||||||
SLES
|
SLES
|
||||||
SLURM
|
SLURM
|
||||||
Slurm
|
|
||||||
SMEM
|
SMEM
|
||||||
SMFMA
|
SMFMA
|
||||||
SMI
|
SMI
|
||||||
@@ -473,17 +463,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
|
||||||
@@ -491,36 +481,33 @@ 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
|
||||||
@@ -532,17 +519,18 @@ UE
|
|||||||
UIF
|
UIF
|
||||||
UMC
|
UMC
|
||||||
USM
|
USM
|
||||||
|
USM
|
||||||
UTCL
|
UTCL
|
||||||
|
UTCL
|
||||||
|
UTIL
|
||||||
UTIL
|
UTIL
|
||||||
UltraChat
|
UltraChat
|
||||||
Uncached
|
Uncached
|
||||||
Unittests
|
|
||||||
Unhandled
|
Unhandled
|
||||||
unwindowed
|
Unittests
|
||||||
VALU
|
VALU
|
||||||
VBIOS
|
VBIOS
|
||||||
VCN
|
VCN
|
||||||
verl's
|
|
||||||
VGPR
|
VGPR
|
||||||
VGPRs
|
VGPRs
|
||||||
VM
|
VM
|
||||||
@@ -553,6 +541,7 @@ VSIX
|
|||||||
VSkipped
|
VSkipped
|
||||||
Vanhoucke
|
Vanhoucke
|
||||||
Vulkan
|
Vulkan
|
||||||
|
WDAG
|
||||||
WGP
|
WGP
|
||||||
WGPs
|
WGPs
|
||||||
WR
|
WR
|
||||||
@@ -561,7 +550,6 @@ WikiText
|
|||||||
Wojna
|
Wojna
|
||||||
Workgroups
|
Workgroups
|
||||||
Writebacks
|
Writebacks
|
||||||
xcc
|
|
||||||
XCD
|
XCD
|
||||||
XCDs
|
XCDs
|
||||||
XGBoost
|
XGBoost
|
||||||
@@ -581,8 +569,8 @@ ZeRO
|
|||||||
ZenDNN
|
ZenDNN
|
||||||
accuracies
|
accuracies
|
||||||
activations
|
activations
|
||||||
addr
|
|
||||||
addEventListener
|
addEventListener
|
||||||
|
addr
|
||||||
ade
|
ade
|
||||||
ai
|
ai
|
||||||
alloc
|
alloc
|
||||||
@@ -593,6 +581,7 @@ amdgpu
|
|||||||
api
|
api
|
||||||
aten
|
aten
|
||||||
atmi
|
atmi
|
||||||
|
atomicRMW
|
||||||
atomics
|
atomics
|
||||||
autogenerated
|
autogenerated
|
||||||
autotune
|
autotune
|
||||||
@@ -609,17 +598,16 @@ 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
|
||||||
@@ -634,6 +622,7 @@ cmd
|
|||||||
coalescable
|
coalescable
|
||||||
codename
|
codename
|
||||||
collater
|
collater
|
||||||
|
comfyui
|
||||||
comgr
|
comgr
|
||||||
compat
|
compat
|
||||||
completers
|
completers
|
||||||
@@ -650,16 +639,18 @@ 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
|
||||||
cTDP
|
dGPU
|
||||||
|
dGPUs
|
||||||
|
da
|
||||||
dataset
|
dataset
|
||||||
datasets
|
datasets
|
||||||
dataspace
|
dataspace
|
||||||
@@ -669,8 +660,9 @@ datatypes
|
|||||||
dbgapi
|
dbgapi
|
||||||
de
|
de
|
||||||
deallocation
|
deallocation
|
||||||
debuggability
|
|
||||||
debian
|
debian
|
||||||
|
debuggability
|
||||||
|
decompositions
|
||||||
deepseek
|
deepseek
|
||||||
denoise
|
denoise
|
||||||
denoised
|
denoised
|
||||||
@@ -685,10 +677,13 @@ devicelibs
|
|||||||
devsel
|
devsel
|
||||||
dgl
|
dgl
|
||||||
dimensionality
|
dimensionality
|
||||||
|
disaggregated
|
||||||
disambiguates
|
disambiguates
|
||||||
distro
|
distro
|
||||||
distros
|
distros
|
||||||
dkms
|
dkms
|
||||||
|
dnf
|
||||||
|
dropless
|
||||||
dtype
|
dtype
|
||||||
eb
|
eb
|
||||||
el
|
el
|
||||||
@@ -701,10 +696,14 @@ 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
|
||||||
@@ -713,6 +712,7 @@ fp
|
|||||||
framebuffer
|
framebuffer
|
||||||
gRPC
|
gRPC
|
||||||
galb
|
galb
|
||||||
|
gb
|
||||||
gcc
|
gcc
|
||||||
gdb
|
gdb
|
||||||
gemm
|
gemm
|
||||||
@@ -725,14 +725,15 @@ 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
|
||||||
@@ -743,10 +744,12 @@ hipSPARSELt
|
|||||||
hipTensor
|
hipTensor
|
||||||
hipamd
|
hipamd
|
||||||
hipblas
|
hipblas
|
||||||
|
hipblaslt
|
||||||
hipcc
|
hipcc
|
||||||
hipcub
|
hipcub
|
||||||
hipfft
|
hipfft
|
||||||
hipfort
|
hipfort
|
||||||
|
hipification
|
||||||
hipify
|
hipify
|
||||||
hipsolver
|
hipsolver
|
||||||
hipsparse
|
hipsparse
|
||||||
@@ -755,8 +758,10 @@ hostname
|
|||||||
hotspotting
|
hotspotting
|
||||||
hpc
|
hpc
|
||||||
hpp
|
hpp
|
||||||
|
href
|
||||||
hsa
|
hsa
|
||||||
hsakmt
|
hsakmt
|
||||||
|
hx
|
||||||
hyperparameter
|
hyperparameter
|
||||||
hyperparameters
|
hyperparameters
|
||||||
iDRAC
|
iDRAC
|
||||||
@@ -770,7 +775,9 @@ init
|
|||||||
initializer
|
initializer
|
||||||
inlining
|
inlining
|
||||||
installable
|
installable
|
||||||
|
instrSize
|
||||||
interop
|
interop
|
||||||
|
interpolators
|
||||||
interprocedural
|
interprocedural
|
||||||
intra
|
intra
|
||||||
intrinsics
|
intrinsics
|
||||||
@@ -797,6 +804,7 @@ lm
|
|||||||
localscratch
|
localscratch
|
||||||
logits
|
logits
|
||||||
lossy
|
lossy
|
||||||
|
lp
|
||||||
macOS
|
macOS
|
||||||
matchers
|
matchers
|
||||||
maxtext
|
maxtext
|
||||||
@@ -813,23 +821,21 @@ 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
|
||||||
@@ -840,9 +846,11 @@ param
|
|||||||
parameterization
|
parameterization
|
||||||
passthrough
|
passthrough
|
||||||
pe
|
pe
|
||||||
|
perf
|
||||||
perfcounter
|
perfcounter
|
||||||
performant
|
performant
|
||||||
perl
|
perl
|
||||||
|
pkgman
|
||||||
pragma
|
pragma
|
||||||
pre
|
pre
|
||||||
prebuild
|
prebuild
|
||||||
@@ -872,8 +880,6 @@ pseudorandom
|
|||||||
px
|
px
|
||||||
py
|
py
|
||||||
pytorch
|
pytorch
|
||||||
recommender
|
|
||||||
recommenders
|
|
||||||
quantile
|
quantile
|
||||||
quantizer
|
quantizer
|
||||||
quasirandom
|
quasirandom
|
||||||
@@ -885,8 +891,10 @@ radeon
|
|||||||
rccl
|
rccl
|
||||||
rdc
|
rdc
|
||||||
rdma
|
rdma
|
||||||
redhat
|
|
||||||
reStructuredText
|
reStructuredText
|
||||||
|
recommender
|
||||||
|
recommenders
|
||||||
|
redhat
|
||||||
redirections
|
redirections
|
||||||
refactorization
|
refactorization
|
||||||
reformats
|
reformats
|
||||||
@@ -900,7 +908,6 @@ rescaling
|
|||||||
reusability
|
reusability
|
||||||
rhel
|
rhel
|
||||||
rl
|
rl
|
||||||
RLHF
|
|
||||||
roadmap
|
roadmap
|
||||||
roc
|
roc
|
||||||
rocAL
|
rocAL
|
||||||
@@ -927,8 +934,8 @@ rocm
|
|||||||
rocminfo
|
rocminfo
|
||||||
rocprim
|
rocprim
|
||||||
rocprof
|
rocprof
|
||||||
rocprofv
|
|
||||||
rocprofiler
|
rocprofiler
|
||||||
|
rocprofv
|
||||||
rocr
|
rocr
|
||||||
rocrand
|
rocrand
|
||||||
rocsolver
|
rocsolver
|
||||||
@@ -938,8 +945,8 @@ roctracer
|
|||||||
rst
|
rst
|
||||||
runtime
|
runtime
|
||||||
runtimes
|
runtimes
|
||||||
|
rx
|
||||||
ryzen
|
ryzen
|
||||||
ResNet
|
|
||||||
sL
|
sL
|
||||||
scalability
|
scalability
|
||||||
scalable
|
scalable
|
||||||
@@ -954,6 +961,7 @@ sglang
|
|||||||
shader
|
shader
|
||||||
sharding
|
sharding
|
||||||
sigmoid
|
sigmoid
|
||||||
|
simd
|
||||||
sles
|
sles
|
||||||
sm
|
sm
|
||||||
smi
|
smi
|
||||||
@@ -974,6 +982,7 @@ submodule
|
|||||||
submodules
|
submodules
|
||||||
subnet
|
subnet
|
||||||
supercomputing
|
supercomputing
|
||||||
|
suse
|
||||||
symlink
|
symlink
|
||||||
symlinks
|
symlinks
|
||||||
sys
|
sys
|
||||||
@@ -983,6 +992,7 @@ td
|
|||||||
tensorfloat
|
tensorfloat
|
||||||
tf
|
tf
|
||||||
th
|
th
|
||||||
|
threadgroups
|
||||||
tokenization
|
tokenization
|
||||||
tokenize
|
tokenize
|
||||||
tokenized
|
tokenized
|
||||||
@@ -992,17 +1002,21 @@ 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
|
||||||
uncached
|
udev
|
||||||
uncacheable
|
uncacheable
|
||||||
|
uncached
|
||||||
uncorrectable
|
uncorrectable
|
||||||
underoptimized
|
underoptimized
|
||||||
unhandled
|
unhandled
|
||||||
@@ -1011,12 +1025,11 @@ unmapped
|
|||||||
unsqueeze
|
unsqueeze
|
||||||
unstacking
|
unstacking
|
||||||
unswitching
|
unswitching
|
||||||
|
untar
|
||||||
untrusted
|
untrusted
|
||||||
untuned
|
untuned
|
||||||
|
unwindowed
|
||||||
upvote
|
upvote
|
||||||
USM
|
|
||||||
UTCL
|
|
||||||
UTIL
|
|
||||||
utils
|
utils
|
||||||
vL
|
vL
|
||||||
variational
|
variational
|
||||||
@@ -1028,6 +1041,7 @@ vectorized
|
|||||||
vectorizer
|
vectorizer
|
||||||
vectorizes
|
vectorizes
|
||||||
verl
|
verl
|
||||||
|
verl's
|
||||||
virtualize
|
virtualize
|
||||||
virtualized
|
virtualized
|
||||||
vjxb
|
vjxb
|
||||||
@@ -1046,11 +1060,14 @@ writeback
|
|||||||
writebacks
|
writebacks
|
||||||
wrreq
|
wrreq
|
||||||
wzo
|
wzo
|
||||||
xargs
|
|
||||||
xDiT
|
xDiT
|
||||||
xdit
|
|
||||||
xGMI
|
xGMI
|
||||||
xPacked
|
xPacked
|
||||||
|
xargs
|
||||||
|
xcc
|
||||||
|
xdit
|
||||||
|
xt
|
||||||
|
xtx
|
||||||
xz
|
xz
|
||||||
yaml
|
yaml
|
||||||
ysvmadyb
|
ysvmadyb
|
||||||
|
|||||||
1899
RELEASE.md
1899
RELEASE.md
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
115
docs/compatibility/compatibility-matrix.rst
Normal file
115
docs/compatibility/compatibility-matrix.rst
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
****************************************
|
||||||
|
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
|
||||||
263
docs/compatibility/includes/core-sdk-components-linux.rst
Normal file
263
docs/compatibility/includes/core-sdk-components-linux.rst
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
.. 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>`__
|
||||||
151
docs/compatibility/includes/core-sdk-components-windows.rst
Normal file
151
docs/compatibility/includes/core-sdk-components-windows.rst
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
.. 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
|
||||||
357
docs/compatibility/includes/selector.rst
Normal file
357
docs/compatibility/includes/selector.rst
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
.. =========================================================== 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
|
||||||
209
docs/compatibility/includes/system-instinct.rst
Normal file
209
docs/compatibility/includes/system-instinct.rst
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
.. 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)
|
||||||
123
docs/compatibility/includes/system-radeon-pro.rst
Normal file
123
docs/compatibility/includes/system-radeon-pro.rst
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
.. 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>`__
|
||||||
113
docs/compatibility/includes/system-radeon.rst
Normal file
113
docs/compatibility/includes/system-radeon.rst
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
.. 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>`__
|
||||||
100
docs/compatibility/includes/system-ryzen.rst
Normal file
100
docs/compatibility/includes/system-ryzen.rst
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
.. 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>`__
|
||||||
113
docs/compatibility/includes/virtualization-instinct.rst
Normal file
113
docs/compatibility/includes/virtualization-instinct.rst
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
.. 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.
|
||||||
|
|
||||||
56
docs/conf.py
56
docs/conf.py
@@ -9,8 +9,8 @@ import shutil
|
|||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
ROCM_VERSION = "7.9.0"
|
ROCM_VERSION = "7.11.0"
|
||||||
GA_DATE = "2025-10-20"
|
GA_DATE = "2026-02-11"
|
||||||
|
|
||||||
DOCS_DIR = Path(__file__).parent.resolve()
|
DOCS_DIR = Path(__file__).parent.resolve()
|
||||||
ROOT_DIR = DOCS_DIR.parent
|
ROOT_DIR = DOCS_DIR.parent
|
||||||
@@ -102,47 +102,40 @@ 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 = True
|
setting_all_article_info = False
|
||||||
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},
|
{"file": "about/release-notes", "date": GA_DATE, "os": ["linux", "windows"]},
|
||||||
{"file": "rocm-for-ai/xdit-diffusion-inference", "os": ["linux"]},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
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"))
|
||||||
|
|
||||||
# "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.table",
|
"rocm_docs_custom.matrix",
|
||||||
"rocm_docs_custom.icon",
|
"rocm_docs_custom.icon",
|
||||||
"sphinxcontrib.datatemplates",
|
# "sphinxcontrib.datatemplates",
|
||||||
# "sphinx_reredirects",
|
# "sphinx_reredirects",
|
||||||
# "sphinx_sitemap",
|
# "sphinx_sitemap",
|
||||||
# "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"
|
||||||
@@ -151,31 +144,34 @@ extensions = [
|
|||||||
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": "This is ROCm 7.9.0 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>.",
|
"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": "generic",
|
"flavor": "generic",
|
||||||
"header_title": "ROCm™ 7.9.0 Preview",
|
"header_title": f"ROCm™ {ROCM_VERSION} Preview",
|
||||||
"header_link": "https://rocm.docs.amd.com/en/7.9.0-preview/index.html",
|
"header_link": f"https://rocm.docs.amd.com/en/{ROCM_VERSION}-preview/index.html",
|
||||||
"version_list_link": "https://rocm.docs.amd.com/en/7.11.0-preview/release/versions.html",
|
"version_list_link": f"https://rocm.docs.amd.com/en/{ROCM_VERSION}-preview/release/versions.html",
|
||||||
"nav_secondary_items": {
|
"nav_secondary_items": {
|
||||||
"GitHub": "https://github.com/ROCm/ROCm",
|
"GitHub": "https://github.com/ROCm/ROCm",
|
||||||
"Community": "https://github.com/ROCm/ROCm/discussions",
|
"Community": "https://github.com/ROCm/ROCm/discussions",
|
||||||
"Blogs": "https://rocm.blogs.amd.com/",
|
"Blogs": "https://rocm.blogs.amd.com/",
|
||||||
"Instinct™ Docs": "https://instinct.docs.amd.com/",
|
"System and Infra Docs": "https://instinct.docs.amd.com/",
|
||||||
"Support": "https://github.com/ROCm/ROCm/issues/new/choose",
|
"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"],
|
||||||
"install/rocm": ["selector-toc2"],
|
|
||||||
"compatibility/compatibility-matrix": ["selector-toc2"],
|
"compatibility/compatibility-matrix": ["selector-toc2"],
|
||||||
}
|
"install/rocm": ["selector-toc2"],
|
||||||
|
"rocm-for-ai/pytorch-comfyui": ["selector-toc2"],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
html_title = f"AMD ROCm {ROCM_VERSION} preview"
|
html_title = f"AMD ROCm {ROCM_VERSION} preview"
|
||||||
html_static_path = ["sphinx/static/css", "sphinx/static/js"]
|
|
||||||
html_css_files = ["vllm-benchmark.css"]
|
|
||||||
html_js_files = ["vllm-benchmark.js"]
|
|
||||||
|
|
||||||
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/")
|
||||||
@@ -201,7 +197,3 @@ 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
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
xdit_diffusion_inference:
|
|
||||||
docker:
|
|
||||||
pull_tag: rocm/pytorch-xdit:v25.10
|
|
||||||
docker_hub_url: https://hub.docker.com/r/rocm/pytorch-xdit
|
|
||||||
ROCm: 7.9.0
|
|
||||||
components:
|
|
||||||
TheRock: 7afbe45
|
|
||||||
rccl: 9b04b2a
|
|
||||||
composable_kernel: b7a806f
|
|
||||||
rocm-libraries: f104555
|
|
||||||
rocm-systems: 25922d0
|
|
||||||
torch: 2.10.0a0+gite9c9017
|
|
||||||
torchvision: 0.22.0a0+966da7e
|
|
||||||
triton: 3.5.0+git52e49c12
|
|
||||||
accelerate: 1.11.0.dev0
|
|
||||||
aiter: 0.1.5.post4.dev20+ga25e55e79
|
|
||||||
diffusers: 0.36.0.dev0
|
|
||||||
xfuser: 0.4.4
|
|
||||||
yunchang: 0.6.3.post1
|
|
||||||
|
|
||||||
model_groups:
|
|
||||||
- group: Hunyuan Video
|
|
||||||
tag: hunyuan
|
|
||||||
models:
|
|
||||||
- model: Hunyuan Video
|
|
||||||
model_name: hunyuanvideo
|
|
||||||
model_repo: tencent/HunyuanVideo
|
|
||||||
revision: refs/pr/18
|
|
||||||
url: https://huggingface.co/tencent/HunyuanVideo
|
|
||||||
github: https://github.com/Tencent-Hunyuan/HunyuanVideo
|
|
||||||
mad_tag: pyt_xdit_hunyuanvideo
|
|
||||||
- group: Wan-AI
|
|
||||||
tag: wan
|
|
||||||
models:
|
|
||||||
- model: Wan2.1
|
|
||||||
model_name: wan2_1-i2v-14b-720p
|
|
||||||
model_repo: Wan-AI/Wan2.1-I2V-14B-720P
|
|
||||||
url: https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-720P
|
|
||||||
github: https://github.com/Wan-Video/Wan2.1
|
|
||||||
mad_tag: pyt_xdit_wan_2_1
|
|
||||||
- model: Wan2.2
|
|
||||||
model_name: wan2_2-i2v-a14b
|
|
||||||
model_repo: Wan-AI/Wan2.2-I2V-A14B
|
|
||||||
url: https://huggingface.co/Wan-AI/Wan2.2-I2V-A14B
|
|
||||||
github: https://github.com/Wan-Video/Wan2.2
|
|
||||||
mad_tag: pyt_xdit_wan_2_2
|
|
||||||
- group: FLUX
|
|
||||||
tag: flux
|
|
||||||
models:
|
|
||||||
- model: FLUX.1
|
|
||||||
model_name: FLUX.1-dev
|
|
||||||
model_repo: black-forest-labs/FLUX.1-dev
|
|
||||||
url: https://huggingface.co/black-forest-labs/FLUX.1-dev
|
|
||||||
github: https://github.com/black-forest-labs/flux
|
|
||||||
mad_tag: pyt_xdit_flux
|
|
||||||
562
docs/data/rocm-ontology.html
Normal file
562
docs/data/rocm-ontology.html
Normal file
@@ -0,0 +1,562 @@
|
|||||||
|
<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>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 108 KiB |
211
docs/data/rocm-sdk-arch.html
Normal file
211
docs/data/rocm-sdk-arch.html
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
<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>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 46 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 340 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 346 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 350 KiB |
289
docs/extension/rocm_docs_custom/matrix.py
Normal file
289
docs/extension/rocm_docs_custom/matrix.py
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
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,20 +1,10 @@
|
|||||||
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
|
from .utils import kv_to_data_attr, normalize_key, logger
|
||||||
import random
|
|
||||||
import string
|
|
||||||
|
|
||||||
|
|
||||||
class SelectorGroup(nodes.General, nodes.Element):
|
class SelectorGroup(nodes.General, nodes.Element):
|
||||||
"""
|
"""
|
||||||
A row within a selector container.
|
A row or dropdown 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
|
||||||
@@ -23,32 +13,46 @@ 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"]
|
||||||
icon = node["icon"]
|
list_mode = node.get("list", False)
|
||||||
|
|
||||||
icon_html = ""
|
# Standard tile mode
|
||||||
if icon:
|
info_nodes = list(node.findall(SelectorInfo))
|
||||||
icon_html = f'<i class="rocm-docs-selector-icon {icon}"></i>'
|
info_link = info_nodes[0]["link"] if info_nodes else None
|
||||||
|
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)}" class="rocm-docs-selector-group row gx-0 pt-2"
|
<div id="{nodes.make_id(label)}"
|
||||||
|
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"
|
{'role="radiogroup"' if list_mode else ""}
|
||||||
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}{icon_html}</span>
|
<span class="rocm-docs-selector-group-heading-text">{label}{info_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, _):
|
def depart_html(translator, node):
|
||||||
|
list_mode = node.get("list", False)
|
||||||
|
|
||||||
translator.body.append(
|
translator.body.append(
|
||||||
"""
|
f"""
|
||||||
|
{"</select>" if list_mode else ""}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
@@ -57,81 +61,146 @@ class SelectorGroup(nodes.General, nodes.Element):
|
|||||||
|
|
||||||
|
|
||||||
class SelectorGroupDirective(SphinxDirective):
|
class SelectorGroupDirective(SphinxDirective):
|
||||||
required_arguments = 1 # tile text
|
required_arguments = 1 # title 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,
|
||||||
"icon": directives.unchanged,
|
"list": directives.flag,
|
||||||
}
|
}
|
||||||
|
|
||||||
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["icon"] = self.options.get("icon")
|
node["list"] = "list" in self.options
|
||||||
|
|
||||||
# Parse nested content
|
# Parse nested content (selector-info + selector-option)
|
||||||
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"]
|
||||||
|
|
||||||
# Find all options marked as default
|
# Default marking
|
||||||
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 within a selector group.
|
A selectable tile or list-item option within a selector group.
|
||||||
|
|
||||||
rST usage:
|
|
||||||
|
|
||||||
.. selector-option::
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def visit_html(translator, node):
|
def visit_html(translator, node):
|
||||||
label = node["label"]
|
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"]
|
||||||
group_key = node.get("group_key", "")
|
list_mode = node.get("list", False)
|
||||||
|
|
||||||
|
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} col-{width} px-2"
|
<div class="rocm-docs-selector-option {default_class} {width_class} px-2"
|
||||||
data-selector-key="{group_key}"
|
data-selector-key="{node.get('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>
|
<span>{label}</span>
|
||||||
""".strip()
|
""".strip()
|
||||||
@@ -139,10 +208,13 @@ class SelectorOption(nodes.General, nodes.Element):
|
|||||||
|
|
||||||
@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):
|
||||||
@@ -150,9 +222,10 @@ 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.nonnegative_int,
|
"width": directives.unchanged,
|
||||||
"icon": directives.unchanged,
|
"icon": directives.unchanged,
|
||||||
}
|
}
|
||||||
has_content = True
|
has_content = True
|
||||||
@@ -162,22 +235,52 @@ 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")
|
||||||
|
|
||||||
# Content replaces label if provided
|
parent = getattr(self.state, "parent", None)
|
||||||
# if self.content:
|
if not parent or not any(isinstance(p, SelectorGroup) for p in parent.traverse(include_self=True)):
|
||||||
# self.state.nested_parse(self.content, self.content_offset, node)
|
logger.warning(
|
||||||
# else:
|
f"'.. selector-option::' at line {self.lineno} should be nested under a '.. selector::' directive",
|
||||||
# node += nodes.Text(label)
|
location=(self.env.docname, self.lineno),
|
||||||
|
)
|
||||||
|
|
||||||
return [node]
|
return [node]
|
||||||
|
|
||||||
|
|
||||||
class SelectedContent(nodes.General, nodes.Element):
|
class SelectedContent(nodes.General, nodes.Element):
|
||||||
"""
|
"""
|
||||||
A container to hold conditional content.
|
A container to hold documentation content to be shown conditionally.
|
||||||
|
|
||||||
rST usage::
|
rST usage::
|
||||||
|
|
||||||
@@ -187,20 +290,21 @@ class SelectedContent(nodes.General, nodes.Element):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def visit_html(translator, node):
|
def visit_html(translator, node):
|
||||||
show_when_attr = kv_to_data_attr("show-when", node["show-when"])
|
show_when = node.get("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", "")
|
||||||
heading_level = node.get("heading-level") or (SelectedContent._get_depth(node) + 1)
|
# default to <h2>
|
||||||
heading_level = min(heading_level, 6)
|
heading_level = min(node.get("heading-level") or 2, 6) # maximum depth is <h6>
|
||||||
|
|
||||||
|
id_attr = ""
|
||||||
heading_elem = ""
|
heading_elem = ""
|
||||||
|
combined_show_when = node.get("combined-show-when", show_when)
|
||||||
if heading:
|
if heading:
|
||||||
# HACK to fix secondary sidebar observer
|
id_attr = nodes.make_id(f"{heading}-{combined_show_when}")
|
||||||
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} id="{id_attr}" class="rocm-docs-custom-heading">'
|
f'<h{heading_level} 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}>'
|
||||||
)
|
)
|
||||||
@@ -208,24 +312,22 @@ class SelectedContent(nodes.General, nodes.Element):
|
|||||||
translator.body.append(
|
translator.body.append(
|
||||||
f"""
|
f"""
|
||||||
<!-- start selected-content -->
|
<!-- start selected-content -->
|
||||||
<div class="rocm-docs-selected-content {classes}" {show_when_attr} aria-hidden="true">
|
<{"section" if heading else "div"}
|
||||||
|
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, _):
|
def depart_html(translator, node):
|
||||||
translator.body.append("</div><!-- end selected-content -->")
|
heading = node.get("heading", "")
|
||||||
|
|
||||||
@staticmethod
|
translator.body.append(f"""
|
||||||
def _get_depth(node):
|
</{"section" if heading else "div"}>
|
||||||
depth = 1
|
<!-- end selected-content -->""")
|
||||||
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):
|
||||||
@@ -244,9 +346,20 @@ 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", "") # empty string if none
|
node["heading"] = self.options.get("heading", "")
|
||||||
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]
|
||||||
@@ -257,6 +370,10 @@ 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),
|
||||||
@@ -267,13 +384,9 @@ 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)
|
||||||
|
|
||||||
static_assets_dir = Path(__file__).parent / "static"
|
return {"version": "1.2", "parallel_read_safe": True}
|
||||||
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}
|
|
||||||
|
|||||||
@@ -1,305 +0,0 @@
|
|||||||
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}`);
|
|
||||||
let optionText = "(none selected)";
|
|
||||||
if (selectedOption) {
|
|
||||||
const clone = selectedOption.cloneNode(true);
|
|
||||||
// Remove all <i> elements
|
|
||||||
clone.querySelectorAll("i, svg").forEach((el) => el.remove());
|
|
||||||
optionText = clone.innerHTML.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
180
docs/extension/rocm_docs_custom/static/selector/selector-toc.js
Normal file
180
docs/extension/rocm_docs_custom/static/selector/selector-toc.js
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
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";
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -7,6 +7,11 @@ 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"] {
|
||||||
@@ -21,16 +26,38 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector container */
|
/* Avoid odd sizing interactions with Bootstrap width utilities */
|
||||||
.rocm-docs-selector-container {
|
.rocm-docs-selector-group,
|
||||||
padding: 0 0 1rem 0;
|
.rocm-docs-selector-group * {
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector group heading when one of its options is hovered */
|
/* Hide selectors during initialization to prevent FOUC */
|
||||||
|
.rocm-docs-selector-group:not(.rocm-docs-selector-initialized) {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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:has(.rocm-docs-selector-option:hover)
|
||||||
.rocm-docs-selector-group-heading {
|
.rocm-docs-selector-group-heading {
|
||||||
border-right-color: var(--rocm-docs-selector-option-hover-color);
|
border-right-color: var(--rocm-docs-selector-option-hover-color);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Selector group heading box */
|
/* Selector group heading box */
|
||||||
.rocm-docs-selector-group-heading {
|
.rocm-docs-selector-group-heading {
|
||||||
@@ -39,7 +66,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-right-color 0.25s ease;
|
transition: border-color 0.25s ease;
|
||||||
box-shadow: var(--rocm-docs-selector-shadow);
|
box-shadow: var(--rocm-docs-selector-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,16 +84,25 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector option when hovered */
|
/* Hover (not disabled) */
|
||||||
.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);
|
||||||
@@ -74,30 +110,94 @@ html[data-theme="dark"] {
|
|||||||
box-shadow: var(--rocm-docs-selector-shadow-hover);
|
box-shadow: var(--rocm-docs-selector-shadow-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
.rocm-docs-selector-option:focus:not(.rocm-docs-disabled) {
|
/* Accessible keyboard focus */
|
||||||
z-index: 69;
|
.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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector option when selected */
|
/* Keep it above neighbors if it gets an outline/box-shadow */
|
||||||
|
.rocm-docs-selector-option:focus:not(.rocm-docs-disabled) {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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 effect on selected */
|
/* Prevent hover lift on selected (keeps it steady) */
|
||||||
.rocm-docs-selector-option.rocm-docs-selected:hover {
|
.rocm-docs-selector-option.rocm-docs-selected:hover {
|
||||||
transform: none;
|
transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selector option when disabled */
|
/* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
441
docs/extension/rocm_docs_custom/static/selector/selector.js
Normal file
441
docs/extension/rocm_docs_custom/static/selector/selector.js
Normal file
@@ -0,0 +1,441 @@
|
|||||||
|
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");
|
||||||
|
});
|
||||||
|
});
|
||||||
14
docs/extension/rocm_docs_custom/static/selector/utils.js
Normal file
14
docs/extension/rocm_docs_custom/static/selector/utils.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
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,7 +29,12 @@ 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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
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,6 +1,7 @@
|
|||||||
|
<!-- Summary of selected options in secondary TOC -->
|
||||||
<div class="tocsection onthispage">
|
<div class="tocsection onthispage">
|
||||||
<i class="fa-solid fa-filter"></i>
|
<i class="fa-solid fa-computer"></i>
|
||||||
Options
|
Installation environment
|
||||||
</div>
|
</div>
|
||||||
<nav class="page-toc rocm-docs-selector-toc2">
|
<nav class="page-toc rocm-docs-selector-toc2">
|
||||||
<ul
|
<ul
|
||||||
@@ -8,6 +9,7 @@
|
|||||||
>
|
>
|
||||||
</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,5 +1,6 @@
|
|||||||
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()
|
||||||
@@ -28,3 +29,6 @@ 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__)
|
||||||
|
|
||||||
|
|||||||
@@ -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 7.9.0 preview
|
AMD ROCm |ROCM_VERSION| 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, desktops,
|
optimized for consistent, scalable performance across data centers,
|
||||||
and edge devices.
|
workstations, and edge devices.
|
||||||
|
|
||||||
ROCm 7.9.0 is a technology preview release built with
|
ROCm |ROCM_VERSION| 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,14 +34,13 @@ 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™ architectures
|
* **Performance‑focused** -- Tuned for AMD Instinct™, AMD Radeon™, and AMD Ryzen™ devices
|
||||||
|
|
||||||
.. image:: data/rocm-ontology.png
|
.. raw:: html
|
||||||
:align: center
|
:file: data/rocm-ontology.html
|
||||||
: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
|
||||||
categories. TheRock enables a unified ROCm user‑space experience across
|
product lines. 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.
|
||||||
@@ -73,9 +72,8 @@ 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.
|
||||||
|
|
||||||
.. image:: data/rocm-sdk-arch.png
|
.. raw:: html
|
||||||
:align: center
|
:file: data/rocm-sdk-arch.html
|
||||||
: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.
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ Build the ROCm Core SDK from source
|
|||||||
|
|
||||||
You can build the ROCm Core SDK from source using the open-source unified build
|
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
|
system `TheRock <https://github.com/ROCm/TheRock>`__. To learn more about the
|
||||||
motivation and architecture behind this system, see `ROCm 7.9 Technology
|
motivation and architecture behind this system, see `ROCm Technology Preview:
|
||||||
Preview: ROCm Core SDK and TheRock Build System
|
ROCm Core SDK and TheRock Build System
|
||||||
<https://rocm.blogs.amd.com/software-tools-optimization/therock/README.html>`__.
|
<https://rocm.blogs.amd.com/software-tools-optimization/therock/README.html>`__.
|
||||||
|
|
||||||
This page consists mostly of key references to `TheRock's README
|
This page consists mainly of key references to `TheRock's README
|
||||||
<https://github.com/ROCm/TheRock?tab=readme-ov-file#building-from-source>`__
|
<https://github.com/ROCm/TheRock?tab=readme-ov-file#building-from-source>`__
|
||||||
and `supporting development manuals
|
and `supporting development manuals
|
||||||
<https://github.com/ROCm/TheRock/blob/main/README.md#development-manuals>`__
|
<https://github.com/ROCm/TheRock/blob/main/README.md#development-manuals>`__
|
||||||
@@ -26,7 +26,7 @@ to learn about the overall build architecture.
|
|||||||
Building from source is recommended only if you need custom builds or are
|
Building from source is recommended only if you need custom builds or are
|
||||||
contributing to ROCm development.
|
contributing to ROCm development.
|
||||||
For most users, installing from official AMD releases is faster and easier.
|
For most users, installing from official AMD releases is faster and easier.
|
||||||
See :doc:`rocm` for installation instructions.
|
See :doc:`/install/rocm` for installation instructions.
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
=============
|
=============
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
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.
|
|
||||||
```
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
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).
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
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.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
For information about driver compatibility, see the {doc}`/compatibility/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.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
For information about driver compatibility, see the {doc}`/compatibility/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.
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
```{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
|
|
||||||
````
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
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]"
|
|
||||||
```
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
1. Configure ROCm PATH. Make sure you're in the `therock-tarball` directory before proceeding.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export ROCM_PATH=$PWD/install
|
|
||||||
export PATH=$PATH:$ROCM_PATH/bin
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Configure `LD_LIBRARY_PATH`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export LD_LIBRARY_PATH=$ROCM_PATH/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]
|
|
||||||
```
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
````
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
````
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
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]
|
|
||||||
```
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
````
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
To uninstall ROCm, remove your installation directory.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo rm -rf therock-tarball
|
|
||||||
```
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
1. Clear the pip cache.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo rm -rf ~/.cache/pip
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Remove your local Python virtual environment.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo rm -rf .venv
|
|
||||||
```
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
1. Clear the pip cache.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip cache purge
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Remove your local Python virtual environment.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
rmdir /s /q .venv
|
|
||||||
```
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
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).
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
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
|
|
||||||
```
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
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
|
|
||||||
apt update
|
|
||||||
apt install sudo wget
|
|
||||||
```
|
|
||||||
1041
docs/install/includes/install.rst
Normal file
1041
docs/install/includes/install.rst
Normal file
File diff suppressed because it is too large
Load Diff
317
docs/install/includes/post-install.rst
Normal file
317
docs/install/includes/post-install.rst
Normal file
@@ -0,0 +1,317 @@
|
|||||||
|
Post-installation
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. dropdown:: Installation environment
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:icon: desktop-download
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. include:: ./includes/selector.rst
|
||||||
|
|
||||||
|
After installing the ROCm Core SDK |ROCM_VERSION|, complete these
|
||||||
|
post-installation steps to complete your system configuration and validate the
|
||||||
|
installation.
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
:heading: Configure your environment
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Configure environment variables so that ROCm libraries and tools are
|
||||||
|
available either to all users on the system or only to your user account.
|
||||||
|
|
||||||
|
.. _rocm-post-install-system-wide:
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: System-wide setup
|
||||||
|
|
||||||
|
Create a profile script so that all users inherit the ROCm
|
||||||
|
environment variables when they start a shell session. Make sure
|
||||||
|
you're in the ``therock-tarball`` directory before proceeding.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Configure ROCm PATH. Make sure you're in the therock-tarball directory before proceeding.
|
||||||
|
ROCM_INSTALL_PATH=$(pwd)/install
|
||||||
|
sudo tee /etc/profile.d/set-rocm-env.sh << EOF
|
||||||
|
export ROCM_PATH=$ROCM_INSTALL_PATH
|
||||||
|
export PATH=\$PATH:\$ROCM_PATH/bin
|
||||||
|
export LD_LIBRARY_PATH=\$ROCM_PATH/lib
|
||||||
|
EOF
|
||||||
|
sudo chmod +x /etc/profile.d/set-rocm-env.sh
|
||||||
|
source /etc/profile.d/set-rocm-env.sh
|
||||||
|
|
||||||
|
.. tab-item:: User setup
|
||||||
|
|
||||||
|
Configure the ROCm environment for your user by updating your shell
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
1. Add the following to your shell configuration file
|
||||||
|
(``~/.bashrc``, ``~/.profile``). Make sure you're in the
|
||||||
|
``therock-tarball`` directory before proceeding.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Configure ROCm PATH. Make sure you're in the therock-tarball directory before proceeding.
|
||||||
|
export ROCM_PATH=$PWD/install
|
||||||
|
export PATH=$PATH:$ROCM_PATH/bin
|
||||||
|
export LD_LIBRARY_PATH=$ROCM_PATH/lib
|
||||||
|
|
||||||
|
2. After modifying your shell configuration, apply the change to
|
||||||
|
your current session by sourcing your updated shell
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: .bashrc
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
.. tab-item:: .profile
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
source ~/.profile
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
:heading: Configure your environment
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Configure environment variables so that ROCm libraries and tools are
|
||||||
|
available on your Windows system.
|
||||||
|
|
||||||
|
1. **Run command prompt as an administrator** and set the following environment variables.
|
||||||
|
|
||||||
|
.. code-block:: cmd
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
2. Add the following paths into the PATH environment variable.
|
||||||
|
|
||||||
|
.. code-block:: cmd
|
||||||
|
|
||||||
|
setx PATH "%PATH%;C:\TheRock\build\bin" /M
|
||||||
|
setx PATH "%PATH%;C:\TheRock\build\lib\llvm\bin" /M
|
||||||
|
|
||||||
|
3. Open a new command prompt window for the environment variables to take effect. Run ``set``
|
||||||
|
to see the list of active variables.
|
||||||
|
|
||||||
|
.. code-block:: bat
|
||||||
|
|
||||||
|
set
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
:heading: Verify your installation
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Use the following ROCm tools to verify that the ROCm Core SDK is correctly
|
||||||
|
installed and that your AMD devices are visible to the system.
|
||||||
|
|
||||||
|
1. Use ``rocminfo`` to list detected AMD GPUs and confirm that the ROCm
|
||||||
|
runtimes and drivers are correctly installed and loaded.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
rocminfo
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``rocminfo``
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:color: success
|
||||||
|
:icon: note
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
ROCk module version 6.18.4 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. Use the AMD SMI CLI ``amd-smi`` to validate system information.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
amd-smi version
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``amd-smi version``
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:color: success
|
||||||
|
:icon: note
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
AMDSMI Tool: 26.2.1+7b886380f9 | AMDSMI Library version: 26.2.1 | ROCm version: 7.11.0 | amdgpu version: 6.18.4 | hsmp version: N/A
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
3. Inspect your installation in your Python environment and confirm that
|
||||||
|
ROCm packages, including the ``rocm-sdk`` CLI, are available.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip freeze | grep rocm
|
||||||
|
which rocm-sdk
|
||||||
|
ls .venv/bin
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
:heading: Verify your installation
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Use the following ROCm tools to verify that the ROCm Core SDK is correctly
|
||||||
|
installed and that your AMD devices are visible to the system.
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
1. Use ``hipinfo`` to list detected AMD GPUs and confirm that the ROCm
|
||||||
|
runtimes and drivers are correctly installed and loaded.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
hipinfo
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``hipinfo``
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:color: success
|
||||||
|
:icon: note
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. 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 installation in your Python environment and confirm that
|
||||||
|
ROCm packages, including the ``rocm-sdk`` CLI, are available.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip freeze
|
||||||
|
where rocm-sdk
|
||||||
|
dir .venv\Scripts
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
|
||||||
|
Use ``hipinfo`` to list detected AMD GPUs and confirm that the ROCm
|
||||||
|
runtimes and drivers are correctly installed and loaded.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
hipinfo
|
||||||
|
|
||||||
|
.. dropdown:: Example output of ``hipinfo``
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:color: success
|
||||||
|
:icon: note
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. code-block:: shell-session
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
device# 0
|
||||||
|
Name: AMD Radeon(TM) 8060S Graphics
|
||||||
|
pciBusID: 197
|
||||||
|
pciDeviceID: 0
|
||||||
|
pciDomainID: 0
|
||||||
|
multiProcessorCount: 20
|
||||||
|
|
||||||
|
... [output truncated]
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
:heading: Test your installation
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Run the following commands from your Python virtual environment to confirm
|
||||||
|
that the ROCm SDK is correctly configured and that basic checks complete
|
||||||
|
successfully.
|
||||||
|
|
||||||
|
.. code-block:: 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>`__.
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
:heading: Test your installation
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Run the ``test_hip_api`` tool to verify that the HIP runtime can access
|
||||||
|
your GPU and execute a simple workload.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
test_hip_api
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
:heading: Test your installation
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Run the following commands from your Python virtual environment to confirm
|
||||||
|
that the ROCm SDK is correctly configured and that basic checks complete
|
||||||
|
successfully.
|
||||||
|
|
||||||
|
.. code-block:: 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>`__.
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
|
||||||
|
If you need to deactivate your Python virtual environment when finished, run:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
deactivate
|
||||||
|
|
||||||
486
docs/install/includes/prerequisites.rst
Normal file
486
docs/install/includes/prerequisites.rst
Normal file
@@ -0,0 +1,486 @@
|
|||||||
|
Prerequisites
|
||||||
|
=============
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
Before installing the ROCm Core SDK |ROCM_VERSION|, ensure your system meets
|
||||||
|
all prerequisites. This includes installing the required dependencies and
|
||||||
|
configuring permissions for GPU access. To confirm that your system is
|
||||||
|
supported, see the :doc:`Compatibility matrix
|
||||||
|
</compatibility/compatibility-matrix>`.
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
Before installing the ROCm Core SDK |ROCM_VERSION|, ensure your system meets
|
||||||
|
all prerequisites. To confirm that your system is supported, see the
|
||||||
|
:doc:`Compatibility matrix </compatibility/compatibility-matrix>`.
|
||||||
|
|
||||||
|
.. ====================================================== DOCKER REQUIREMENTS ==
|
||||||
|
|
||||||
|
.. selected:: i=pip i=tar i=pkgman
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=rocky-linux os=oracle-linux os=sles
|
||||||
|
|
||||||
|
.. dropdown:: Install essential packages for Docker containers
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:color: info
|
||||||
|
:icon: tools
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
Docker images often include only a minimal set of installations, so some
|
||||||
|
essential packages might be missing. When installing ROCm within a Docker
|
||||||
|
container, you might need to install additional packages for a successful
|
||||||
|
installation.
|
||||||
|
|
||||||
|
If applicable, run the following command to install essential packages:
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian
|
||||||
|
|
||||||
|
.. selected:: i=pkgman
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install sudo wget
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install sudo cmake libgfortran5
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install sudo wget python3
|
||||||
|
|
||||||
|
.. selected:: os=rhel os=rocky-linux os=oracle-linux
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
dnf install sudo wget
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
|
||||||
|
.. selected:: i=pkgman
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
zypper install sudo wget SUSEConnect
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
zypper install sudo wget cmake libgfortran5
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
zypper install sudo wget
|
||||||
|
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
1. Remove any existing HIP SDK for Windows installations and other
|
||||||
|
conflicting AMD graphics software. To uninstall the HIP SDK using the
|
||||||
|
GUI, navigate to the following screen:
|
||||||
|
|
||||||
|
* Control Panel > Programs > Uninstall a program
|
||||||
|
|
||||||
|
2. Install AMD Software: Adrenalin Edition for Windows. For details and the
|
||||||
|
download link, see `AMD Software: Adrenalin Edition 26.1.1
|
||||||
|
<https://www.amd.com/en/resources/support-articles/release-notes/RN-RAD-WIN-26-1-1.html#Downloads>`__.
|
||||||
|
|
||||||
|
3. 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 > **Clear** “Microsoft Defender Application
|
||||||
|
Guard”
|
||||||
|
|
||||||
|
* Turn off SAC (Smart App Control)
|
||||||
|
|
||||||
|
* Settings > Privacy & security > Windows Security > App & browser
|
||||||
|
control > Smart App Control settings > **Off**
|
||||||
|
|
||||||
|
.. =============================================================== OEM KERNEL ==
|
||||||
|
|
||||||
|
.. selected:: fam=ryzen
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu
|
||||||
|
:heading: Install the OEM kernel
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Ryzen APUs require the OEM kernel 6.14 for Ubuntu 24.04. Use the
|
||||||
|
following command to install it using ``apt``.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt update && sudo apt install linux-image-6.14.0-1018-oem
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Reboot your system after installing the OEM kernel.
|
||||||
|
|
||||||
|
.. ================================================ REGISTER ENTERPRISE LINUX ==
|
||||||
|
|
||||||
|
.. selected:: os=rhel
|
||||||
|
:heading: Register your Red Hat Enterprise Linux system
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Register your Red Hat Enterprise Linux (RHEL) system to enable access to Red
|
||||||
|
Hat repositories and ensure you’re able to download and install packages.
|
||||||
|
|
||||||
|
Run the following command to register your system:
|
||||||
|
|
||||||
|
.. selected:: os-version=10.1 os-version=10.0
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
|
||||||
|
.. selected:: os-version=9.7 os-version=9.6 os-version=9.4 os-version=8.10
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
subscription-manager register --username <username> --password <password>
|
||||||
|
subscription-manager attach --auto
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
:heading: Register your SUSE Linux Enterprise Server system
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Register your SUSE Linux Enterprise Server (SLES) system to enable access to
|
||||||
|
SUSE repositories and ensure you’re able to download and install packages.
|
||||||
|
|
||||||
|
Run the following command to register your system:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo SUSEConnect -r <REGCODE>
|
||||||
|
|
||||||
|
.. ========================================== ADDITIONAL PACKAGE REPOSITORIES ==
|
||||||
|
|
||||||
|
.. selected:: os=rhel
|
||||||
|
:heading: Update your system
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
After registering your system, update RHEL to the latest packages. This is
|
||||||
|
particularly important for newer hardware on older versions of RHEL.
|
||||||
|
|
||||||
|
Run the following command to update your system:
|
||||||
|
|
||||||
|
.. selected:: os-version=10.1
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=10.1 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os-version=10.0
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=10.0 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os-version=9.7
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=9.7 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os-version=9.6
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=9.6 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os-version=9.4
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=9.4 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os-version=8.10
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update --releasever=8.10 --exclude=\*release\*
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
:heading: Update your system
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
After registering your system, update SLES to the latest available packages.
|
||||||
|
This is particularly important for newer hardware on older versions of SLES.
|
||||||
|
|
||||||
|
Run the following command to update your system:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo zypper update
|
||||||
|
|
||||||
|
.. selected:: i=pkgman
|
||||||
|
|
||||||
|
.. selected:: os=oracle-linux
|
||||||
|
:heading: Update your system
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Update Oracle Linux to the latest available packages.
|
||||||
|
|
||||||
|
Run the following command to update your system:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf update
|
||||||
|
|
||||||
|
.. selected:: os=rhel
|
||||||
|
:heading: Add additional package repositories
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
ROCm installation packages depend on packages that aren’t included in
|
||||||
|
the default package repositories. Use the following command to add the
|
||||||
|
necessary repositories.
|
||||||
|
|
||||||
|
.. selected:: os-version=10.1 os-version=10.0
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-10.noarch.rpm
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf config-manager --enable codeready-builder-for-rhel-10-x86_64-rpms
|
||||||
|
|
||||||
|
.. selected:: os-version=9.7 os-version=9.6 os-version=9.4
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-9.noarch.rpm
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf config-manager --enable codeready-builder-for-rhel-9-x86_64-rpms
|
||||||
|
|
||||||
|
.. selected:: os-version=8.10
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-8.noarch.rpm
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf config-manager --enable codeready-builder-for-rhel-8-x86_64-rpms
|
||||||
|
|
||||||
|
.. selected:: os=oracle-linux os=rocky-linux
|
||||||
|
:heading: Add additional package repositories
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
ROCm installation packages depend on packages that aren’t included in
|
||||||
|
the default package repositories. Use the following command to add the
|
||||||
|
necessary repositories.
|
||||||
|
|
||||||
|
.. selected:: os-version=10.1 os-version=10.0
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-10.noarch.rpm
|
||||||
|
|
||||||
|
.. selected:: os-version=9.7 os-version=9.6 os-version=9.4
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-9.noarch.rpm
|
||||||
|
|
||||||
|
.. selected:: os-version=8.10
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||||
|
sudo rpm -ivh epel-release-latest-8.noarch.rpm
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo crb enable
|
||||||
|
|
||||||
|
.. ============================================== INSTALL ADDITIONAL PACKAGES ==
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
.. selected:: i=pkgman i=pip i=tar
|
||||||
|
:heading: Install additional packages
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Some ROCm tools require the ``libatomic`` library to run correctly. Install
|
||||||
|
it using your distribution's package manager.
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install libatomic1
|
||||||
|
|
||||||
|
.. selected:: os=rhel os=oracle-linux os=rocky-linux
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf install libatomic
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo zypper install libatomic1
|
||||||
|
|
||||||
|
|
||||||
|
.. =========================================================== INSTALL PYTHON ==
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu
|
||||||
|
|
||||||
|
.. selected:: os-version=24.04
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python
|
||||||
|
3.12, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install python3.12 python3.12-venv
|
||||||
|
|
||||||
|
.. selected:: os-version=22.04
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python
|
||||||
|
3.11, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install python3.11 python3.11-venv
|
||||||
|
|
||||||
|
.. selected:: os=debian
|
||||||
|
|
||||||
|
.. selected:: os-version=13
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python
|
||||||
|
3.13, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install python3.13 python3.13-venv
|
||||||
|
|
||||||
|
.. selected:: os=rhel os=oracle-linux os=rocky-linux
|
||||||
|
|
||||||
|
.. selected:: os-version=10.1 os-version=10.0
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python
|
||||||
|
3.12, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf install python3.12 python3.12-pip
|
||||||
|
|
||||||
|
.. selected:: os-version=9.7 os-version=9.6 os-version=8
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python
|
||||||
|
3.11, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf install python3.11 python3.11-pip
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
.. selected:: os-version=16.0
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python 3.13,
|
||||||
|
run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo zypper install -y python313 python313-pip
|
||||||
|
|
||||||
|
.. selected:: os-version=15.7
|
||||||
|
|
||||||
|
Install a supported Python version. For example, to install Python 3.11,
|
||||||
|
run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo zypper install -y python311 python311-pip
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
:heading: Install Python
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
Install a supported Python version: 3.11, 3.12, or 3.13. See `Python
|
||||||
|
Releases for Windows <https://www.python.org/downloads/windows/>`__ for
|
||||||
|
installation details.
|
||||||
|
|
||||||
|
.. =================================================== GPU ACCESS PERMISSIONS ==
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
:heading: Configure permissions for GPU access
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
There are two primary methods of configuring GPU access for ROCm: group
|
||||||
|
membership or udev rules. Each method has its own advantages. The choice
|
||||||
|
depends on your specific requirements and system management preferences.
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: Group membership
|
||||||
|
|
||||||
|
By default, GPU access is controlled by membership in the ``video`` and
|
||||||
|
``render`` Linux system groups. The ``video`` group traditionally handles
|
||||||
|
video device access, while the ``render`` group manages GPU rendering
|
||||||
|
through DRM render nodes.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Add the current user to the render and video groups
|
||||||
|
sudo usermod -a -G render,video $LOGNAME
|
||||||
|
|
||||||
|
.. tab-item:: udev rules
|
||||||
|
|
||||||
|
udev rules are a flexible, system-wide approach for managing device
|
||||||
|
permissions, eliminating the need for user group management while
|
||||||
|
allowing granular GPU access. To enable them and grant GPU access to
|
||||||
|
all users, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo tee /etc/udev/rules.d/70-amdgpu.rules << EOF
|
||||||
|
KERNEL=="kfd", GROUP="render", MODE="0666"
|
||||||
|
SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="render", MODE="0666"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
To apply all settings, reboot your system.
|
||||||
|
|
||||||
231
docs/install/includes/selector.rst
Normal file
231
docs/install/includes/selector.rst
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
.. include:: /compatibility/includes/selector.rst
|
||||||
|
|
||||||
|
|
||||||
|
.. =========================================================== UBUNTU VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu
|
||||||
|
|
||||||
|
.. selector:: Ubuntu version
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 24.04.3
|
||||||
|
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
||||||
|
:value: 24.04
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
.. selector-option:: 22.04.5
|
||||||
|
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
||||||
|
:value: 22.04
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
.. selector-option:: 24.04.3
|
||||||
|
:show-when: fam=ryzen
|
||||||
|
:value: 24.04
|
||||||
|
:width: 12
|
||||||
|
|
||||||
|
|
||||||
|
.. =========================================================== DEBIAN VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=debian
|
||||||
|
|
||||||
|
.. selector:: Debian version
|
||||||
|
:show-when: gpu=mi355x gpu=mi325x gpu=mi350x gpu=mi300x
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 13
|
||||||
|
:width: 12
|
||||||
|
|
||||||
|
|
||||||
|
.. ============================================================= RHEL VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=rhel
|
||||||
|
|
||||||
|
.. selector:: RHEL version
|
||||||
|
:key: os-version
|
||||||
|
:show-when: fam=instinct fam=radeon-pro fam=radeon
|
||||||
|
|
||||||
|
.. selector-option:: 10.1
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 10.0
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 9.7
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 9.6
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 9.4
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 8.10
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi300x gpu=mi300a gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
:width: 2
|
||||||
|
|
||||||
|
.. selector-option:: 10.1
|
||||||
|
:show-when: gpu=mi325x
|
||||||
|
:width: 20%
|
||||||
|
|
||||||
|
.. selector-option:: 10.0
|
||||||
|
:show-when: gpu=mi325x
|
||||||
|
:width: 20%
|
||||||
|
|
||||||
|
.. selector-option:: 9.7
|
||||||
|
:show-when: gpu=mi325x
|
||||||
|
:width: 20%
|
||||||
|
|
||||||
|
.. selector-option:: 9.6
|
||||||
|
:show-when: gpu=mi325x
|
||||||
|
:width: 20%
|
||||||
|
|
||||||
|
.. selector-option:: 9.4
|
||||||
|
:show-when: gpu=mi325x
|
||||||
|
:width: 20%
|
||||||
|
|
||||||
|
.. selector-option:: 10.1
|
||||||
|
:show-when: fam=radeon-pro fam=radeon
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
.. selector-option:: 9.7
|
||||||
|
:show-when: fam=radeon-pro fam=radeon
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
|
||||||
|
.. ===================================================== ORACLE LINUX VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=oracle-linux
|
||||||
|
|
||||||
|
.. selector:: Oracle Linux version
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x gpu=mi300x
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 10
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x
|
||||||
|
:width: 6
|
||||||
|
:value: 10.1
|
||||||
|
|
||||||
|
.. selector-option:: 9
|
||||||
|
:show-when: gpu=mi355x gpu=mi350x gpu=mi325x
|
||||||
|
:width: 6
|
||||||
|
:value: 9.6
|
||||||
|
|
||||||
|
.. selector-option:: 10
|
||||||
|
:show-when: gpu=mi300x
|
||||||
|
:width: 4
|
||||||
|
:value: 10.1
|
||||||
|
|
||||||
|
.. selector-option:: 9
|
||||||
|
:show-when: gpu=mi300x
|
||||||
|
:width: 4
|
||||||
|
:value: 9.6
|
||||||
|
|
||||||
|
.. selector-option:: 8
|
||||||
|
:show-when: gpu=mi300x
|
||||||
|
:width: 4
|
||||||
|
:value: 8.10
|
||||||
|
|
||||||
|
|
||||||
|
.. ====================================================== ROCKY LINUX VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=rocky-linux
|
||||||
|
|
||||||
|
.. selector:: Rocky Linux version
|
||||||
|
:show-when: gpu=mi300x gpu=mi300a
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 9
|
||||||
|
:width: 12
|
||||||
|
:value: 9.7
|
||||||
|
|
||||||
|
|
||||||
|
.. ============================================================= SLES VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
|
||||||
|
.. selector:: SLES version
|
||||||
|
:show-when: fam=instinct
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 16.0
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
.. selector-option:: 15.7
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
|
||||||
|
.. ========================================================== WINDOWS VERSION ==
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. selector:: Windows version
|
||||||
|
:key: os-version
|
||||||
|
|
||||||
|
.. selector-option:: 11 25H2
|
||||||
|
:width: 12
|
||||||
|
|
||||||
|
|
||||||
|
.. ====================================================== INSTALLATION METHOD ==
|
||||||
|
|
||||||
|
.. selector:: Installation method
|
||||||
|
:show-when: os=ubuntu os=debian
|
||||||
|
:key: i
|
||||||
|
|
||||||
|
.. selector-option:: apt
|
||||||
|
:value: pkgman
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: pip
|
||||||
|
:value: pip
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: Tarball
|
||||||
|
:value: tar
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector:: Installation method
|
||||||
|
:show-when: os=rhel os=oracle-linux os=rocky-linux
|
||||||
|
:key: i
|
||||||
|
|
||||||
|
.. selector-option:: dnf
|
||||||
|
:value: pkgman
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: pip
|
||||||
|
:value: pip
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: Tarball
|
||||||
|
:value: tar
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector:: Installation method
|
||||||
|
:show-when: os=sles
|
||||||
|
:key: i
|
||||||
|
|
||||||
|
.. selector-option:: zypper
|
||||||
|
:value: pkgman
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: pip
|
||||||
|
:value: pip
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector-option:: Tarball
|
||||||
|
:value: tar
|
||||||
|
:width: 4
|
||||||
|
|
||||||
|
.. selector:: Installation method
|
||||||
|
:show-when: os=windows
|
||||||
|
:key: i
|
||||||
|
|
||||||
|
.. selector-option:: pip
|
||||||
|
:value: pip
|
||||||
|
|
||||||
|
.. selector-option:: Tarball
|
||||||
|
:value: tar
|
||||||
249
docs/install/includes/uninstall.rst
Normal file
249
docs/install/includes/uninstall.rst
Normal file
@@ -0,0 +1,249 @@
|
|||||||
|
Uninstalling
|
||||||
|
============
|
||||||
|
|
||||||
|
.. dropdown:: Installation environment
|
||||||
|
:animate: fade-in-slide-down
|
||||||
|
:icon: desktop-download
|
||||||
|
:chevron: down-up
|
||||||
|
|
||||||
|
.. include:: ./includes/selector.rst
|
||||||
|
|
||||||
|
.. ========================================================== PACKAGE MANAGER ==
|
||||||
|
|
||||||
|
.. selected:: i=pkgman
|
||||||
|
:heading: Uninstall ROCm packages
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
1. Use your package manager to remove :ref:`ROCm meta packages <rocm-install-meta-packages>` installed on your system.
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian
|
||||||
|
|
||||||
|
.. selected:: gpu=mi355x gpu=mi350x
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx950
|
||||||
|
|
||||||
|
.. selected:: gpu=mi325x gpu=mi300x gpu=mi300a
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx94x
|
||||||
|
|
||||||
|
.. selected:: gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx90x
|
||||||
|
|
||||||
|
.. selected:: gpu=ai-r9700 gpu=ai-r9600d gpu=rx-9070-xt gpu=rx-9070-gre gpu=rx-9070 gpu=rx-9060-xt-lp gpu=rx-9060-xt gpu=rx-9060
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx120x
|
||||||
|
|
||||||
|
.. selected:: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=v710 gpu=v620
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx110x
|
||||||
|
|
||||||
|
.. selected:: gpu=w6800 gpu=v620
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt autoremove amdrocm7.11-gfx103x
|
||||||
|
|
||||||
|
.. selected:: 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
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install amdrocm7.11-gfx1151
|
||||||
|
|
||||||
|
.. selected:: gpu=9-hx-375 gpu=9-hx-370 gpu=9-365
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install amdrocm7.11-gfx1150
|
||||||
|
|
||||||
|
.. selected:: os=rhel os=oracle-linux os=rocky-linux
|
||||||
|
|
||||||
|
.. selected:: gpu=mi355x gpu=mi350x
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx950
|
||||||
|
|
||||||
|
.. selected:: gpu=mi325x gpu=mi300x gpu=mi300a
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx94x
|
||||||
|
|
||||||
|
.. selected:: gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx90x
|
||||||
|
|
||||||
|
.. selected:: gpu=ai-r9700 gpu=ai-r9600d gpu=rx-9070-xt gpu=rx-9070-gre gpu=rx-9070 gpu=rx-9060-xt-lp gpu=rx-9060-xt gpu=rx-9060
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx120x
|
||||||
|
|
||||||
|
.. selected:: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=v710 gpu=v620
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx110x
|
||||||
|
|
||||||
|
.. selected:: gpu=w6800 gpu=v620
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove amdrocm7.11-gfx103x
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo zypper remove amdrocm*
|
||||||
|
|
||||||
|
2. Remove ROCm repositories.
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Remove ROCm repositories
|
||||||
|
sudo rm /etc/apt/sources.list.d/rocm.list
|
||||||
|
|
||||||
|
# Clear the cache and clean the system
|
||||||
|
sudo rm -rf /var/cache/apt/*
|
||||||
|
sudo apt clean all
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
.. selected:: os=rhel os=oracle-linux os=rocky-linux
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Remove ROCm repositories
|
||||||
|
sudo rm /etc/yum.repos.d/rocm.repo*
|
||||||
|
|
||||||
|
# Clear the cache and clean the system
|
||||||
|
sudo rm -rf /var/cache/dnf
|
||||||
|
sudo dnf clean all
|
||||||
|
|
||||||
|
.. selected:: os=sles
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Remove ROCm repositories
|
||||||
|
sudo zypper removerepo "rocm"
|
||||||
|
|
||||||
|
# Clear the cache and clean the system
|
||||||
|
sudo zypper clean --all
|
||||||
|
sudo zypper refresh
|
||||||
|
|
||||||
|
.. ====================================================================== PIP ==
|
||||||
|
|
||||||
|
.. selected:: i=pip
|
||||||
|
:heading: Remove your Python virtual environment
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
1. Clear the pip cache.
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo rm -rf ~/.cache/pip
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. code-block:: bat
|
||||||
|
|
||||||
|
pip cache purge
|
||||||
|
|
||||||
|
2. Remove your local Python virtual environment.
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo rm -rf .venv
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. code-block:: bat
|
||||||
|
|
||||||
|
rmdir /s /q .venv
|
||||||
|
|
||||||
|
.. ================================================================== TARBALL ==
|
||||||
|
|
||||||
|
.. selected:: i=tar
|
||||||
|
:heading: Remove your installation directory
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
.. selected:: os=ubuntu os=debian os=rhel os=oracle-linux os=rocky-linux os=sles
|
||||||
|
|
||||||
|
1. To uninstall ROCm, remove your installation directory.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
The following command assumes you’re working with the
|
||||||
|
``therock-tarball`` directory. If you chose a different directory
|
||||||
|
name when :ref:`installing ROCm <rocm-install>`, adjust the command
|
||||||
|
accordingly.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo rm -rf therock-tarball
|
||||||
|
|
||||||
|
2. If you opted for a :ref:`system-wide setup
|
||||||
|
<rocm-post-install-system-wide>` during the installation process,
|
||||||
|
remove the ROCm environment variables.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo rm -f /etc/profile.d/set-rocm-env.sh
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
1. To uninstall ROCm, remove your installation directory.
|
||||||
|
|
||||||
|
.. code-block:: cmd
|
||||||
|
|
||||||
|
rmdir /s /q C:\TheRock
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
This step assumes you’re working with the ``C:\TheRock\build``
|
||||||
|
directory. If you chose a different directory name when
|
||||||
|
:ref:`installing ROCm <rocm-install>`, adjust this step
|
||||||
|
accordingly.
|
||||||
|
|
||||||
|
2. **Run command prompt as an administrator** and delete the following environment variables.
|
||||||
|
|
||||||
|
.. code-block:: cmd
|
||||||
|
|
||||||
|
setx HIP_DEVICE_LIB_PATH "" /M
|
||||||
|
setx HIP_PATH "" /M
|
||||||
|
setx HIP_PLATFORM "" /M
|
||||||
|
setx LLVM_PATH "" /M
|
||||||
|
|
||||||
|
Remove the following paths from your PATH environment variable using your system settings GUI.
|
||||||
|
Navigate to the following screen:
|
||||||
|
|
||||||
|
* Control Panel > System and Security > Edit environment variables
|
||||||
|
|
||||||
|
Edit the PATH variable and delete the following paths:
|
||||||
|
|
||||||
|
* ``C:\TheRock\build\bin``
|
||||||
|
|
||||||
|
* ``C:\TheRock\build\lib\llvm\bin``
|
||||||
|
|
||||||
|
3. To uninstall the Adrenalin Driver, see `Uninstall AMD Software
|
||||||
|
<https://www.amd.com/en/resources/support-articles/faqs/RSX2-UNINSTALL.html>`__.
|
||||||
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
.. meta::
|
|
||||||
:description: Step-by-step guide to installing PyTorch with AMD ROCm 7.9.0 and setting up ComfyUI for AI image generation on Ryzen AI (gfx1151) APUs. Covers Linux and Windows installation, environment setup, and troubleshooting.
|
|
||||||
:keywords: PyTorch ROCm, ComfyUI, ROCm 7.9.0, AMD GPU, Ryzen AI APU, install PyTorch ROCm, ROCm PyTorch Windows, ROCm PyTorch Linux, ROCm AI image generation, ROCm gfx1151, ComfyUI ROCm setup, PyTorch 2.9.0 ROCm
|
|
||||||
|
|
||||||
*****************************************
|
|
||||||
Install PyTorch and ComfyUI on ROCm 7.9.0
|
|
||||||
*****************************************
|
|
||||||
|
|
||||||
This guide walks you through installing PyTorch with ROCm support on AMD
|
|
||||||
hardware. It applies to :ref:`supported AMD GPUs and platforms
|
|
||||||
<790-supported-hw>`. It also includes additional setup steps for ComfyUI on
|
|
||||||
Windows using Ryzen AI (gfx1151) APUs, showcasing AI-powered image generation.
|
|
||||||
|
|
||||||
Prerequisites
|
|
||||||
=============
|
|
||||||
|
|
||||||
Before beginning, ensure your system meets these requirements:
|
|
||||||
|
|
||||||
- Python version: 3.11, 3.12, or 3.13 installed and accessible
|
|
||||||
|
|
||||||
- ROCm 7.9.0: A working ROCm installation (if not already installed via pip, this guide covers the setup)
|
|
||||||
|
|
||||||
Review the :doc:`ROCm 7.9.0 compatibility </compatibility/compatibility-matrix>` information.
|
|
||||||
|
|
||||||
.. _790-install-pyt:
|
|
||||||
|
|
||||||
Install PyTorch
|
|
||||||
===============
|
|
||||||
|
|
||||||
For prerequisite steps and post-installation recommendations, see :doc:`rocm`.
|
|
||||||
|
|
||||||
1. Set up your Python virtual environment. If you already have a successful
|
|
||||||
:doc:`ROCm 7.9.0 installation via pip <rocm>`, skip this step.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
python3.12 -m venv .venv
|
|
||||||
|
|
||||||
2. Activate your Python virtual environment.
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: Linux
|
|
||||||
:sync: linux
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
source .venv/bin/activate
|
|
||||||
|
|
||||||
.. tab-item:: Windows
|
|
||||||
:sync: windows
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
.venv\Scripts\activate
|
|
||||||
|
|
||||||
3. Install the appropriate ROCm-enabled PyTorch build for your operating system
|
|
||||||
and AMD hardware architecture.
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: Linux (PyTorch 2.7.1)
|
|
||||||
:sync: linux
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: Instinct MI350 Series
|
|
||||||
:sync: gfx950
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx950-dcgpu/ torch torchvision torchaudio
|
|
||||||
|
|
||||||
.. tab-item:: Instinct MI300 Series
|
|
||||||
:sync: gfx942
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx94X-dcgpu/ torch torchvision torchaudio
|
|
||||||
|
|
||||||
.. tab-item:: Ryzen AI Max APU
|
|
||||||
:sync: gfx1151
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1151/ torch torchvision torchaudio
|
|
||||||
|
|
||||||
.. tab-item:: Windows (PyTorch 2.9.0)
|
|
||||||
:sync: windows
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: Ryzen AI Max APU
|
|
||||||
:sync: gfx1151
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1151/ torch torchvision torchaudio
|
|
||||||
|
|
||||||
4. Check your PyTorch installation.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
python -c "import torch; print(torch.cuda.is_available())"
|
|
||||||
|
|
||||||
This prints ``True`` if PyTorch and ROCm are installed properly.
|
|
||||||
|
|
||||||
Optionally, if you're running Windows on a supported Ryzen AI APU, try
|
|
||||||
:ref:`ComfyUI on Windows <790-install-comfyui>`.
|
|
||||||
|
|
||||||
.. _790-install-comfyui:
|
|
||||||
|
|
||||||
Install ComfyUI on Windows
|
|
||||||
==========================
|
|
||||||
|
|
||||||
ComfyUI is tested for support only on Ryzen AI (gfx1151) APUs on
|
|
||||||
Windows.
|
|
||||||
|
|
||||||
1. Ensure your working environment is running ROCm-enabled PyTorch 2.9.0 on Windows.
|
|
||||||
See :ref:`Install PyTorch <790-install-pyt>`.
|
|
||||||
|
|
||||||
2. Clone the ComfyUI repository.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
git clone https://github.com/comfyanonymous/ComfyUI.git
|
|
||||||
|
|
||||||
3. Install Python dependencies.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
pip install -r ComfyUI\requirements.txt
|
|
||||||
|
|
||||||
4. Run ComfyUI.
|
|
||||||
|
|
||||||
a. Start the ComfyUI server from the command line.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
python ComfyUI\main.py
|
|
||||||
|
|
||||||
This will start the server and display a prompt like:
|
|
||||||
|
|
||||||
.. code-block:: text
|
|
||||||
|
|
||||||
To see the GUI go to: http://127.0.0.1:8188
|
|
||||||
|
|
||||||
b. Navigate to ``http://127.0.0.1:8188`` in your web browser. You might need to
|
|
||||||
replace `8188` with the appropriate port number.
|
|
||||||
|
|
||||||
.. image:: /data/comfyui/comfyui-main.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
c. Search for one of the following templates and download any missing
|
|
||||||
models.
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: SD3.5 Simple
|
|
||||||
|
|
||||||
Select **Template** → **Model Filter** → **SD3.5** → **SD3.5 Simple**
|
|
||||||
|
|
||||||
.. image:: /data/comfyui/sd3_5-simple-card.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Download any missing required models.
|
|
||||||
|
|
||||||
.. image:: /data/comfyui/sd3_5-missing-models.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. tab-item:: Chroma1 Radiance text to image
|
|
||||||
|
|
||||||
Select **Template** → **Model Filter** → **Chroma** → **Chroma1 Radiance text to image**
|
|
||||||
|
|
||||||
.. image:: /data/comfyui/chroma1-radiance-tti-card.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Download any missing required models.
|
|
||||||
|
|
||||||
.. image:: /data/comfyui/chroma1-radiance-tti-missing-models.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
d. Click the **Run** button.
|
|
||||||
|
|
||||||
The application will use your AMD GPU to convert the prompted text to an image.
|
|
||||||
|
|
||||||
Known limitations
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
ComfyUI might not start if Smart App Control is enabled.
|
|
||||||
14
docs/install/redirect/_install.rst
Normal file
14
docs/install/redirect/_install.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<meta http-equiv="refresh" content="0; url=../rocm.html#rocm-install">
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
Install AMD ROCm |ROCM_VERSION|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
Redirecting...
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
If you're not redirected automatically, go to :ref:`rocm-install`.
|
||||||
14
docs/install/redirect/_post-install.rst
Normal file
14
docs/install/redirect/_post-install.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<meta http-equiv="refresh" content="0; url=../rocm.html#post-install">
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
Install AMD ROCm |ROCM_VERSION|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
Redirecting...
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
If you're not redirected automatically, go to :ref:`rocm-post-install`.
|
||||||
14
docs/install/redirect/_prerequisites.rst
Normal file
14
docs/install/redirect/_prerequisites.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<meta http-equiv="refresh" content="0; url=../rocm.html#rocm-prerequisites">
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
Install AMD ROCm |ROCM_VERSION|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
Redirecting...
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
If you're not redirected automatically, go to :ref:`rocm-prerequisites`.
|
||||||
14
docs/install/redirect/_uninstall.rst
Normal file
14
docs/install/redirect/_uninstall.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<meta http-equiv="refresh" content="0; url=../rocm.html#rocm-uninstall">
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
Install AMD ROCm |ROCM_VERSION|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
Redirecting...
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
If you're not redirected automatically, go to :ref:`rocm-uninstall`.
|
||||||
@@ -1,442 +1,62 @@
|
|||||||
.. meta::
|
.. meta::
|
||||||
:description: Learn how to install AMD ROCm 7.9.0 for supported Instinct GPUs and Ryzen AI APUs on Ubuntu, RHEL, and Windows. This step-by-step guide covers prerequisites, driver setup, installation methods (pip and tarball), and troubleshooting.
|
:description: Learn how to install AMD ROCm 7.11.0 for supported Instinct GPUs and Ryzen AI APUs on Ubuntu, RHEL, and Windows. This step-by-step guide covers prerequisites, driver setup, installation methods (pip and tarball), and troubleshooting.
|
||||||
:keywords: AMD ROCm 7.9.0, install ROCm, Instinct GPU, Ryzen APU, Ubuntu, RHEL, Windows, pip install ROCm, ROCm wheel, ROCm tarball, ROCm GPU driver, ROCm setup, ROCm uninstall, ROCm troubleshooting
|
:keywords: AMD ROCm 7.11.0, install ROCm, Instinct GPU, Ryzen APU, Ubuntu, RHEL, Windows, pip install ROCm, ROCm wheel, ROCm tarball, ROCm GPU driver, ROCm setup, ROCm uninstall, ROCm troubleshooting
|
||||||
|
|
||||||
**********************
|
*******************************
|
||||||
Install AMD ROCm 7.9.0
|
Install AMD ROCm |ROCM_VERSION|
|
||||||
**********************
|
*******************************
|
||||||
|
|
||||||
|
.. _rocm-install-selector:
|
||||||
|
|
||||||
Use the following selector to choose your installation method for your
|
Use the following selector to choose your installation method for your
|
||||||
supported AMD GPU or APU and operating system. For information about supported
|
supported AMD GPU or APU and operating system. For system requirements and
|
||||||
operating systems and compatible AMD devices, see the :doc:`Compatibility matrix
|
support information, see the :doc:`Compatibility matrix
|
||||||
</compatibility/compatibility-matrix>`.
|
</compatibility/compatibility-matrix>`. To learn more about changes introduced
|
||||||
|
in ROCm |ROCM_VERSION|, see the :doc:`Release notes </about/release-notes>`.
|
||||||
|
|
||||||
.. selector:: AMD product family
|
.. include:: ./includes/selector.rst
|
||||||
:key: plat
|
|
||||||
|
|
||||||
.. selector-option:: Instinct GPU
|
----
|
||||||
:value: instinct
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selector-option:: Ryzen APU
|
.. _rocm-prerequisites:
|
||||||
:value: ryzen
|
|
||||||
:width: 6
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
.. include:: ./includes/prerequisites.rst
|
||||||
|
|
||||||
.. selector:: Instinct GPU
|
----
|
||||||
:key: instinct-arch
|
|
||||||
|
|
||||||
.. selector-option:: Instinct MI355X, MI350X
|
.. _rocm-install:
|
||||||
:value: gfx950
|
|
||||||
|
|
||||||
.. selector-option:: Instinct MI325X, MI300X, MI300A
|
.. include:: ./includes/install.rst
|
||||||
:value: gfx942
|
|
||||||
|
|
||||||
.. selector:: Operating system
|
----
|
||||||
:key: instinct-os
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
.. _rocm-post-install:
|
||||||
:value: ubuntu
|
|
||||||
:icon: fab fa-linux fa-lg
|
|
||||||
|
|
||||||
.. selector-option:: Red Hat Enterprise Linux
|
.. include:: ./includes/post-install.rst
|
||||||
:value: rhel
|
|
||||||
:icon: fab fa-linux fa-lg
|
|
||||||
|
|
||||||
.. selector:: Ubuntu version
|
----
|
||||||
:key: instinct-ubuntu-version
|
|
||||||
:show-when: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. selector-option:: 24.04.3
|
.. _rocm-uninstall:
|
||||||
:value: 24.04
|
|
||||||
:icon: fab fa-ubuntu fa-lg
|
|
||||||
|
|
||||||
.. selector-option:: 22.04.5
|
.. include:: ./includes/uninstall.rst
|
||||||
:value: 22.04
|
|
||||||
:icon: fab fa-ubuntu fa-lg
|
|
||||||
|
|
||||||
.. selector:: RHEL version
|
|
|
||||||
:key: instinct-rhel-version
|
|
|
||||||
:show-when: instinct-os=rhel
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
||||||
.. selector-option:: 10.0
|
.. raw:: html
|
||||||
:value: 10.0
|
|
||||||
:icon: fab fa-redhat fa-lg
|
|
||||||
|
|
||||||
.. selector-option:: 9.6
|
<script>
|
||||||
:value: 9.6
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
:icon: fab fa-redhat fa-lg
|
const nextLink = document.querySelector("footer.prev-next-footer a.right-next");
|
||||||
|
const nextTitle = nextLink.querySelector(".prev-next-title");
|
||||||
.. selected:: plat=ryzen
|
nextTitle.textContent = "Build the ROCm Core SDK from source";
|
||||||
|
nextLink.href = "./build-from-source.html";
|
||||||
.. selector:: Ryzen APU
|
});
|
||||||
:key: ryzen
|
</script>
|
||||||
|
|
||||||
.. selector-option:: Ryzen AI Max+ PRO 395<br>Ryzen AI Max PRO 390, 385, 380
|
|
||||||
:value: ryzen-ai-max-pro
|
|
||||||
:width: 7
|
|
||||||
|
|
||||||
.. selector-option:: Ryzen AI Max+ 395<br>Ryzen AI Max 390, 385
|
|
||||||
:value: ryzen-ai-max
|
|
||||||
:width: 5
|
|
||||||
|
|
||||||
.. selector:: Operating system
|
|
||||||
:key: ryzen-os
|
|
||||||
|
|
||||||
.. selector-option:: Ubuntu
|
|
||||||
:value: ubuntu
|
|
||||||
:icon: fab fa-linux fa-lg
|
|
||||||
|
|
||||||
.. selector-option:: Windows
|
|
||||||
:value: windows
|
|
||||||
:icon: fab fa-windows fa-lg
|
|
||||||
|
|
||||||
.. selector:: Ubuntu version
|
|
||||||
:key: ryzen-ubuntu-version
|
|
||||||
:show-when: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. selector-option:: 24.04.3
|
|
||||||
:value: 24.04
|
|
||||||
:icon: fab fa-ubuntu fa-lg
|
|
||||||
:width: 12
|
|
||||||
|
|
||||||
.. selector:: Windows version
|
|
||||||
:key: ryzen-windows-version
|
|
||||||
:show-when: ryzen-os=windows
|
|
||||||
|
|
||||||
.. selector-option:: 11 24H2
|
|
||||||
:value: 11_24h2
|
|
||||||
:icon: fab fa-windows fa-lg
|
|
||||||
:width: 12
|
|
||||||
|
|
||||||
.. selector:: Installation method
|
|
||||||
:key: install-method
|
|
||||||
|
|
||||||
.. selector-option:: pip
|
|
||||||
:value: wheel
|
|
||||||
|
|
||||||
.. selector-option:: Tarball
|
|
||||||
:value: tar
|
|
||||||
|
|
||||||
.. selected:: install-method=wheel
|
|
||||||
:heading: Prerequisites
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=22.04
|
|
||||||
|
|
||||||
.. include:: ./includes/1_ubuntu-22.04-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=24.04
|
|
||||||
|
|
||||||
.. include:: ./includes/1_ubuntu-24.04-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=9.6
|
|
||||||
|
|
||||||
.. include:: ./includes/1_rhel-9.6-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=10.0
|
|
||||||
|
|
||||||
.. include:: ./includes/1_rhel-10.0-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. selected:: ryzen-ubuntu-version=24.04
|
|
||||||
|
|
||||||
.. include:: ./includes/1_ubuntu-24.04-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/1_windows-wheel-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=tar
|
|
||||||
:heading: Prerequisites
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/1_ubuntu-tar-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=9.6
|
|
||||||
|
|
||||||
.. include:: ./includes/1_rhel-9.6-tar-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=10.0
|
|
||||||
|
|
||||||
.. include:: ./includes/1_rhel-10.0-tar-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/1_ubuntu-tar-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/1_windows-tar-prerequisites.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
:heading: Installing
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
:heading: Install AMD GPU Driver
|
|
||||||
:heading-level: 3
|
|
||||||
|
|
||||||
.. include:: ./includes/2_ubuntu-instinct-install-kmd.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
:heading: Install AMD GPU Driver
|
|
||||||
:heading-level: 3
|
|
||||||
|
|
||||||
.. include:: ./includes/2_rhel-instinct-install-kmd.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
:heading: Installing
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
:heading: Install kernel driver
|
|
||||||
:heading-level: 3
|
|
||||||
|
|
||||||
Supported Ryzen AI APUs require the inbox kernel driver included with
|
|
||||||
Ubuntu 24.04.3.
|
|
||||||
|
|
||||||
.. selected:: install-method=wheel
|
|
||||||
:heading: Install ROCm
|
|
||||||
:heading-level: 3
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. selected:: instinct-arch=gfx950
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=22.04
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx950-install-rocm-py311.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=24.04
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx950-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=10.0
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx950-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=9.6
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx950-install-rocm-py311.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-arch=gfx942
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=22.04
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx942-install-rocm-py311.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-ubuntu-version=24.04
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx942-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=10.0
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx942-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-rhel-version=9.6
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx942-install-rocm-py311.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/3_wheel-gfx1151-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/3_windows-wheel-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=tar
|
|
||||||
:heading: Install ROCm
|
|
||||||
:heading-level: 3
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. selected:: instinct-arch=gfx950
|
|
||||||
|
|
||||||
.. include:: ./includes/3_tar-gfx950-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-arch=gfx942
|
|
||||||
|
|
||||||
.. include:: ./includes/3_tar-gfx942-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/3_tar-gfx1151-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/3_windows-tar-install-rocm.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=tar
|
|
||||||
:heading: Post-installation
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. include:: ./includes/4_linux-tar-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/4_linux-tar-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/4_windows-tar-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=wheel
|
|
||||||
:heading: Post-installation
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/4_ubuntu-wheel-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. include:: ./includes/4_rhel-wheel-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/4_ubuntu-wheel-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/4_windows-wheel-post-install.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=tar
|
|
||||||
:heading: Uninstalling
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. include:: ./includes/5_tar-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/5_tar-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/5_windows-tar-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: install-method=wheel
|
|
||||||
:heading: Uninstalling
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
|
|
||||||
.. include:: ./includes/5_wheel-linux-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
|
|
||||||
.. include:: ./includes/5_wheel-linux-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=windows
|
|
||||||
|
|
||||||
.. include:: ./includes/5_wheel-windows-uninstall.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=instinct
|
|
||||||
:heading: Troubleshooting
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
|
|
||||||
.. selected:: instinct-os=ubuntu
|
|
||||||
:heading-level: 3
|
|
||||||
:heading: Additional packages for Docker installation
|
|
||||||
|
|
||||||
.. include:: ./includes/6_ubuntu-troubleshooting.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
|
|
||||||
.. selected:: instinct-os=rhel
|
|
||||||
:heading-level: 3
|
|
||||||
:heading: Additional packages for Docker installation
|
|
||||||
|
|
||||||
.. include:: ./includes/6_rhel-troubleshooting.md
|
|
||||||
:parser: myst
|
|
||||||
|
|
||||||
.. selected:: plat=ryzen
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
:heading: Troubleshooting
|
|
||||||
|
|
||||||
.. selected:: ryzen-os=ubuntu
|
|
||||||
:heading-level: 3
|
|
||||||
:heading: Additional packages for Docker installation
|
|
||||||
|
|
||||||
.. include:: ./includes/6_ubuntu-troubleshooting.md
|
|
||||||
:parser: myst
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="description" content="ROCm preview release history">
|
|
||||||
<meta name="keywords" content="documentation, release history, ROCm, AMD">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
# ROCm preview release history
|
|
||||||
|
|
||||||
| Version | Release date |
|
|
||||||
| ------- | ------------ |
|
|
||||||
| [7.9.0](https://rocm.docs.amd.com/en/7.9.0-preview/) | October 20, 2025 |
|
|
||||||
|
|
||||||
```{important}
|
|
||||||
ROCm 7.9.0 introduces a versioning discontinuity following
|
|
||||||
the previous 7.0 releases. Versions 7.0 through 7.8 are reserved for
|
|
||||||
production stream ROCm releases, while versions 7.9 and later represent the
|
|
||||||
technology preview release stream.
|
|
||||||
|
|
||||||
Maintaining parallel release streams allows users ample time to evaluate and
|
|
||||||
adopt the new build system and dependency changes. The technology preview
|
|
||||||
stream is planned to continue through mid‑2026, after which it will replace the
|
|
||||||
[current production stream](https://rocm.docs.amd.com/en/latest/).
|
|
||||||
```
|
|
||||||
38
docs/release/versions.rst
Normal file
38
docs/release/versions.rst
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
:orphan:
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:description: ROCm preview release history
|
||||||
|
:keywords: documentation, rocm, amd, past, previous, rel, ver, versions, docs
|
||||||
|
|
||||||
|
****************************
|
||||||
|
ROCm preview release history
|
||||||
|
****************************
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Version
|
||||||
|
- Release date
|
||||||
|
|
||||||
|
* - `7.11.0 <https://rocm.docs.amd.com/en/7.11.0-preview>`__
|
||||||
|
- February 11, 2026
|
||||||
|
|
||||||
|
* - `7.10.0 <https://rocm.docs.amd.com/en/7.10.0-preview>`__
|
||||||
|
- December 11, 2025
|
||||||
|
|
||||||
|
* - `7.9.0 <https://rocm.docs.amd.com/en/7.9.0-preview>`__
|
||||||
|
- October 20, 2025
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
ROCm 7.9.0 introduced a versioning discontinuity following the previous `7.0
|
||||||
|
releases <https://rocm.docs.amd.com/en/latest/release/versions.html>`__.
|
||||||
|
Versions 7.0 through 7.8 are reserved for production stream ROCm releases,
|
||||||
|
while versions 7.9.0 and later listed on this page represent the technology
|
||||||
|
preview release stream. Both streams share a largely similar code base but
|
||||||
|
differ in their build systems.
|
||||||
|
|
||||||
|
Maintaining parallel release streams -- preview and production -- gives
|
||||||
|
users ample time to evaluate and adopt the new build system and dependency
|
||||||
|
changes. The technology preview stream is planned to continue through
|
||||||
|
mid‑2026, after which it will replace the current production stream.
|
||||||
414
docs/rocm-for-ai/pytorch-comfyui.rst
Normal file
414
docs/rocm-for-ai/pytorch-comfyui.rst
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
**************************************************
|
||||||
|
Install PyTorch and ComfyUI on ROCm |ROCM_VERSION|
|
||||||
|
**************************************************
|
||||||
|
|
||||||
|
This topic guides you through installing PyTorch with ROCm support on AMD
|
||||||
|
hardware. It applies to :ref:`supported AMD GPUs and platforms
|
||||||
|
<release-supported-hw>`. It also includes additional setup steps for ComfyUI,
|
||||||
|
showcasing AI-powered image generation.
|
||||||
|
|
||||||
|
.. 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
|
||||||
|
|
||||||
|
.. 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
|
||||||
|
|
||||||
|
.. selector:: Operating system
|
||||||
|
:key: os
|
||||||
|
:show-when: fam=instinct gpu=v710 gpu=ai-r9600d 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:: Linux
|
||||||
|
:value: linux
|
||||||
|
:width: 12
|
||||||
|
|
||||||
|
.. selector:: Operating system
|
||||||
|
:key: os
|
||||||
|
:show-when: fam=ryzen gpu=ai-r9700 gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=w6800 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:: Linux
|
||||||
|
:value: linux
|
||||||
|
:width: 6
|
||||||
|
|
||||||
|
.. selector-option:: Windows
|
||||||
|
:value: windows
|
||||||
|
:width: 6
|
||||||
|
:disable-when: fam=instinct
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
=============
|
||||||
|
|
||||||
|
Ensure your system has a :ref:`supported Python version
|
||||||
|
<rocm-compat-python>` installed and accessible: 3.11, 3.12, or 3.13.
|
||||||
|
|
||||||
|
Review the :doc:`/compatibility/compatibility-matrix` for more details.
|
||||||
|
|
||||||
|
.. _pip-install-pytorch:
|
||||||
|
|
||||||
|
Install PyTorch
|
||||||
|
===============
|
||||||
|
|
||||||
|
For prerequisite steps and post-installation recommendations, see the
|
||||||
|
:doc:`ROCm installation instructions </install/rocm>`.
|
||||||
|
|
||||||
|
1. Set up your Python virtual environment. If you already have a successful
|
||||||
|
:doc:`ROCm 7.11.0 installation using pip </install/rocm>`, skip this step.
|
||||||
|
|
||||||
|
For example, run the following command to create a virtual environment:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
python3.12 -m venv .venv
|
||||||
|
|
||||||
|
2. Activate your Python virtual environment. For example:
|
||||||
|
|
||||||
|
.. selected:: os=linux
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
.venv\Scripts\activate
|
||||||
|
|
||||||
|
3. Install the appropriate ROCm-enabled PyTorch build for your operating system
|
||||||
|
and AMD hardware architecture.
|
||||||
|
|
||||||
|
.. selected:: gpu=mi355x gpu=mi350x
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx950-dcgpu/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=mi325x gpu=mi300x gpu=mi300a
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx94X-dcgpu/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=mi250x gpu=mi250 gpu=mi210
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx90X-dcgpu/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=ai-r9700 gpu=ai-r9600d gpu=rx-9070-xt gpu=rx-9070-gre gpu=rx-9070 gpu=rx-9060-xt-lp gpu=rx-9060-xt gpu=rx-9060
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx120X-all/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=w7900-dual-slot gpu=w7900 gpu=w7800-48gb gpu=w7800 gpu=w7700 gpu=v710 gpu=rx-7900-xtx gpu=rx-7900-xt gpu=rx-7900-gre gpu=rx-7800-xt gpu=rx-7700-xt gpu=rx-7700
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx110X-dgpu/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=w6800 gpu=v620
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx103X-dgpu/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: 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
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1151/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
.. selected:: gpu=9-hx-375 gpu=9-hx-370 gpu=9-365
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python -m pip install --index-url https://repo.amd.com/rocm/whl/gfx1150/ torch torchvision torchaudio
|
||||||
|
|
||||||
|
4. Check your PyTorch installation.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
python -c "import torch; print(torch.cuda.is_available())"
|
||||||
|
|
||||||
|
This prints ``True`` if PyTorch and ROCm are installed properly.
|
||||||
|
|
||||||
|
Optionally, for a demonstration of ROCm-powered image generation, try
|
||||||
|
:ref:`ComfyUI on Windows <install-comfyui-windows>`.
|
||||||
|
|
||||||
|
.. _install-comfyui-windows:
|
||||||
|
|
||||||
|
Install and run ComfyUI
|
||||||
|
=======================
|
||||||
|
|
||||||
|
1. Ensure your working environment is running ROCm-enabled PyTorch on a supported system.
|
||||||
|
See :ref:`Install PyTorch <pip-install-pytorch>` for instructions.
|
||||||
|
|
||||||
|
2. Clone the ComfyUI repository.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git clone https://github.com/comfyanonymous/ComfyUI.git
|
||||||
|
|
||||||
|
3. Install Python dependencies.
|
||||||
|
|
||||||
|
.. selected:: os=linux
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
pip install -r ComfyUI/requirements.txt
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
pip install -r ComfyUI\requirements.txt
|
||||||
|
|
||||||
|
4. Run ComfyUI.
|
||||||
|
|
||||||
|
a. Start the ComfyUI server from the command line.
|
||||||
|
|
||||||
|
.. selected:: os=linux
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python ComfyUI/main.py
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
python ComfyUI\main.py
|
||||||
|
|
||||||
|
This will start the server and display a prompt like:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
To see the GUI go to: http://127.0.0.1:8188
|
||||||
|
|
||||||
|
b. Navigate to ``http://127.0.0.1:8188`` in your web browser. You might need to
|
||||||
|
replace ``8188`` with the appropriate port number.
|
||||||
|
|
||||||
|
.. image:: /data/comfyui/comfyui-main.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
c. Search for one of the following templates and download any missing
|
||||||
|
models.
|
||||||
|
|
||||||
|
.. tab-set::
|
||||||
|
|
||||||
|
.. tab-item:: SD3.5 Simple
|
||||||
|
|
||||||
|
Select **Template** → **Model Filter** → **SD3.5** → **SD3.5 Simple**
|
||||||
|
|
||||||
|
.. image:: /data/comfyui/sd3_5-simple-card.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Download required models, if missing.
|
||||||
|
|
||||||
|
.. image:: /data/comfyui/sd3_5-missing-models.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
.. tab-item:: Chroma1 Radiance text to image
|
||||||
|
|
||||||
|
Select **Template** → **Model Filter** → **Chroma** → **Chroma1 Radiance text to image**
|
||||||
|
|
||||||
|
.. image:: /data/comfyui/chroma1-radiance-tti-card.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Download required models, if missing.
|
||||||
|
|
||||||
|
.. image:: /data/comfyui/chroma1-radiance-tti-missing-models.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
d. Click the **Run** button.
|
||||||
|
|
||||||
|
The application will use your AMD GPU to convert the prompted text to an image.
|
||||||
|
|
||||||
|
.. selected:: os=windows
|
||||||
|
:heading: Known limitations
|
||||||
|
:heading-level: 3
|
||||||
|
|
||||||
|
ComfyUI might not start if Smart App Control is enabled in your Windows
|
||||||
|
security settings.
|
||||||
|
|
||||||
@@ -1,390 +0,0 @@
|
|||||||
.. meta::
|
|
||||||
:description: Learn to validate diffusion model video generation on MI300X, MI350X and MI355X accelerators using
|
|
||||||
prebuilt and optimized docker images.
|
|
||||||
:keywords: xDiT, diffusion, video, video generation, image, image generation, validate, benchmark
|
|
||||||
|
|
||||||
************************
|
|
||||||
xDiT diffusion inference
|
|
||||||
************************
|
|
||||||
|
|
||||||
.. _xdit-video-diffusion:
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set docker = data.xdit_diffusion_inference.docker %}
|
|
||||||
{% set model_groups = data.xdit_diffusion_inference.model_groups%}
|
|
||||||
|
|
||||||
The `rocm/pytorch-xdit <{{ docker.docker_hub_url }}>`_ Docker image offers
|
|
||||||
a prebuilt, optimized inference environment based on `xDiT
|
|
||||||
<https://github.com/xdit-project/xDiT>`_ for benchmarking diffusion-based
|
|
||||||
video and image generation on AMD Instinct MI355X, MI350X (gfx950), MI325X,
|
|
||||||
and MI300X (gfx942) GPUs.
|
|
||||||
This image is based on ROCm {{docker.ROCm}} preview release via `TheRock <https://github.com/ROCm/TheRock>`_
|
|
||||||
and includes the following software components:
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: {{ 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 %}
|
|
||||||
|
|
||||||
Follow this guide to pull the required image, spin up a container, download the model, and run a benchmark.
|
|
||||||
For preview and development releases, see `amdsiloai/pytorch-xdit <https://hub.docker.com/r/amdsiloai/pytorch-xdit>`_.
|
|
||||||
|
|
||||||
What's new
|
|
||||||
==========
|
|
||||||
|
|
||||||
- Initial ROCm-enabled xDiT Docker release for diffusion inference.
|
|
||||||
- Supported architectures: gfx942 and gfx950 (AMD Instinct™ MI300X, MI325X, MI350X, and MI355X).
|
|
||||||
- Supported workloads: Wan 2.1, Wan 2.2, HunyuanVideo, and Flux models.
|
|
||||||
|
|
||||||
.. _xdit-video-diffusion-supported-models:
|
|
||||||
|
|
||||||
Supported models
|
|
||||||
================
|
|
||||||
|
|
||||||
The following models are supported for inference performance benchmarking.
|
|
||||||
Some instructions, commands, and recommendations in this documentation might
|
|
||||||
vary by model -- select one to get started.
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set docker = data.xdit_diffusion_inference.docker %}
|
|
||||||
{% set model_groups = data.xdit_diffusion_inference.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 == 1 %}
|
|
||||||
<div class="col-12 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>
|
|
||||||
|
|
||||||
{% for model_group in model_groups %}
|
|
||||||
{% for model in model_group.models %}
|
|
||||||
|
|
||||||
.. container:: model-doc {{ model.mad_tag }}
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
To learn more about your specific model see the `{{ model.model }} model card on Hugging Face <{{ model.url }}>`_
|
|
||||||
or visit the `GitHub page <{{ model.github }}>`__. Note that some models require access authorization before use via an
|
|
||||||
external license agreement through a third party.
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
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 `System validation and optimization
|
|
||||||
<https://rocm.docs.amd.com/en/latest/how-to/rocm-for-ai/system-setup/prerequisite-system-validation.html>`__
|
|
||||||
guide to properly configure your system settings before starting.
|
|
||||||
|
|
||||||
Pull the Docker image
|
|
||||||
=====================
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set docker = data.xdit_diffusion_inference.docker %}
|
|
||||||
|
|
||||||
For this tutorial, it's recommended to use the latest ``{{ docker.pull_tag }}`` Docker image.
|
|
||||||
Pull the image using the following command:
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
docker pull {{ docker.pull_tag }}
|
|
||||||
|
|
||||||
Validate and benchmark
|
|
||||||
======================
|
|
||||||
|
|
||||||
Once the image has been downloaded you can follow these steps to
|
|
||||||
run benchmarks and generate outputs.
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set model_groups = data.xdit_diffusion_inference.model_groups %}
|
|
||||||
{% for model_group in model_groups %}
|
|
||||||
{% for model in model_group.models %}
|
|
||||||
|
|
||||||
.. container:: model-doc {{model.mad_tag}}
|
|
||||||
|
|
||||||
The following commands are written for {{ model.model }}.
|
|
||||||
See :ref:`xdit-video-diffusion-supported-models` to switch to another available model.
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
.. _xdit-video-diffusion-setup:
|
|
||||||
|
|
||||||
Prepare the model
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
If you're using ROCm MAD to :ref:`run your model
|
|
||||||
<xdit-video-diffusion-run>`, you can skip this section. MAD will handle
|
|
||||||
starting the container and downloading required models inside the container.
|
|
||||||
|
|
||||||
You can either use an existing Hugging Face cache or download the model fresh inside the container.
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set docker = data.xdit_diffusion_inference.docker %}
|
|
||||||
{% set model_groups = data.xdit_diffusion_inference.model_groups%}
|
|
||||||
|
|
||||||
{% for model_group in model_groups %}
|
|
||||||
{% for model in model_group.models %}
|
|
||||||
.. container:: model-doc {{model.mad_tag}}
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. tab-item:: Option 1: Use existing Hugging Face cache
|
|
||||||
|
|
||||||
If you already have models downloaded on your host system, you can mount your existing cache.
|
|
||||||
|
|
||||||
1. Set your Hugging Face cache location.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
export HF_HOME=/your/hf_cache/location
|
|
||||||
|
|
||||||
2. Download the model (if not already cached).
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
huggingface-cli download {{ model.model_repo }} {% if model.revision %} --revision {{ model.revision }} {% endif %}
|
|
||||||
|
|
||||||
3. Launch the container with mounted cache.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
-it --rm \
|
|
||||||
--cap-add=SYS_PTRACE \
|
|
||||||
--security-opt seccomp=unconfined \
|
|
||||||
--user root \
|
|
||||||
--device=/dev/kfd \
|
|
||||||
--device=/dev/dri \
|
|
||||||
--group-add video \
|
|
||||||
--ipc=host \
|
|
||||||
--network host \
|
|
||||||
--privileged \
|
|
||||||
--shm-size 128G \
|
|
||||||
--name pytorch-xdit \
|
|
||||||
-e HSA_NO_SCRATCH_RECLAIM=1 \
|
|
||||||
-e OMP_NUM_THREADS=16 \
|
|
||||||
-e CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
|
|
||||||
-e HF_HOME=/app/huggingface_models \
|
|
||||||
-v $HF_HOME:/app/huggingface_models \
|
|
||||||
{{ docker.pull_tag }}
|
|
||||||
|
|
||||||
.. tab-item:: Option 2: Download inside container
|
|
||||||
|
|
||||||
If you prefer to keep the container self-contained or don't have an existing cache.
|
|
||||||
|
|
||||||
1. Launch the container
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
-it --rm \
|
|
||||||
--cap-add=SYS_PTRACE \
|
|
||||||
--security-opt seccomp=unconfined \
|
|
||||||
--user root \
|
|
||||||
--device=/dev/kfd \
|
|
||||||
--device=/dev/dri \
|
|
||||||
--group-add video \
|
|
||||||
--ipc=host \
|
|
||||||
--network host \
|
|
||||||
--privileged \
|
|
||||||
--shm-size 128G \
|
|
||||||
--name pytorch-xdit \
|
|
||||||
-e HSA_NO_SCRATCH_RECLAIM=1 \
|
|
||||||
-e OMP_NUM_THREADS=16 \
|
|
||||||
-e CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
|
|
||||||
{{ docker.pull_tag }}
|
|
||||||
|
|
||||||
2. Inside the container, set the Hugging Face cache location and download the model.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
export HF_HOME=/app/huggingface_models
|
|
||||||
huggingface-cli download {{ model.model_repo }} {% if model.revision %} --revision {{ model.revision }} {% endif %}
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
Models will be downloaded to the container's filesystem and will be lost when the container is removed unless you persist the data with a volume.
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
.. _xdit-video-diffusion-run:
|
|
||||||
|
|
||||||
Run inference
|
|
||||||
=============
|
|
||||||
|
|
||||||
You can benchmark models through `MAD <https://github.com/ROCm/MAD>`__-integrated automation or standalone
|
|
||||||
torchrun commands.
|
|
||||||
|
|
||||||
.. datatemplate:yaml:: /data/rocm-for-ai/xdit-inference-models.yaml
|
|
||||||
|
|
||||||
{% set model_groups = data.xdit_diffusion_inference.model_groups%}
|
|
||||||
{% for model_group in model_groups %}
|
|
||||||
{% for model in model_group.models %}
|
|
||||||
|
|
||||||
.. container:: model-doc {{ model.mad_tag }}
|
|
||||||
|
|
||||||
.. tab-set::
|
|
||||||
|
|
||||||
.. 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. On the host machine, use this command to run the performance benchmark test on
|
|
||||||
the `{{model.model}} <{{ model.url }}>`_ model using one node.
|
|
||||||
|
|
||||||
.. 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
|
|
||||||
|
|
||||||
MAD launches a Docker container with the name
|
|
||||||
``container_ci-{{model.mad_tag}}``. The throughput and serving reports of the
|
|
||||||
model are collected in the following paths: ``{{ model.mad_tag }}_throughput.csv``
|
|
||||||
and ``{{ model.mad_tag }}_serving.csv``.
|
|
||||||
|
|
||||||
.. tab-item:: Standalone benchmarking
|
|
||||||
|
|
||||||
To run the benchmarks for {{ model.model }}, use the following command:
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
{% if model.model == "Hunyuan Video" %}
|
|
||||||
cd /app/Hunyuanvideo
|
|
||||||
mkdir results
|
|
||||||
|
|
||||||
torchrun --nproc_per_node=8 run.py \
|
|
||||||
--model tencent/HunyuanVideo \
|
|
||||||
--prompt "In the large cage, two puppies were wagging their tails at each other." \
|
|
||||||
--height 720 --width 1280 --num_frames 129 \
|
|
||||||
--num_inference_steps 50 --warmup_steps 1 --n_repeats 1 \
|
|
||||||
--ulysses_degree 8 \
|
|
||||||
--enable_tiling --enable_slicing \
|
|
||||||
--use_torch_compile \
|
|
||||||
--bench_output results
|
|
||||||
{% endif %}
|
|
||||||
{% if model.model == "Wan2.1" %}
|
|
||||||
cd Wan2.1
|
|
||||||
mkdir results
|
|
||||||
|
|
||||||
torchrun --nproc_per_node=8 run.py \
|
|
||||||
--task i2v-14B \
|
|
||||||
--size 720*1280 --frame_num 81 \
|
|
||||||
--ckpt_dir "${HF_HOME}/hub/models--Wan-AI--Wan2.1-I2V-14B-720P/snapshots/8823af45fcc58a8aa999a54b04be9abc7d2aac98/" \
|
|
||||||
--image "/app/Wan2.1/examples/i2v_input.JPG" \
|
|
||||||
--ulysses_size 8 --ring_size 1 \
|
|
||||||
--prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." \
|
|
||||||
--benchmark_output_directory results --save_file video.mp4 --num_benchmark_steps 1 \
|
|
||||||
--offload_model 0 \
|
|
||||||
--vae_dtype bfloat16 \
|
|
||||||
--allow_tf32 \
|
|
||||||
--compile
|
|
||||||
{% endif %}
|
|
||||||
{% if model.model == "Wan2.2" %}
|
|
||||||
cd Wan2.2
|
|
||||||
mkdir results
|
|
||||||
|
|
||||||
torchrun --nproc_per_node=8 run.py \
|
|
||||||
--task i2v-A14B \
|
|
||||||
--size 720*1280 --frame_num 81 \
|
|
||||||
--ckpt_dir "${HF_HOME}/hub/models--Wan-AI--Wan2.2-I2V-A14B/snapshots/206a9ee1b7bfaaf8f7e4d81335650533490646a3/" \
|
|
||||||
--image "/app/Wan2.2/examples/i2v_input.JPG" \
|
|
||||||
--ulysses_size 8 --ring_size 1 \
|
|
||||||
--prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." \
|
|
||||||
--benchmark_output_directory results --save_file video.mp4 --num_benchmark_steps 1 \
|
|
||||||
--offload_model 0 \
|
|
||||||
--vae_dtype bfloat16 \
|
|
||||||
--allow_tf32 \
|
|
||||||
--compile
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if model.model == "FLUX.1" %}
|
|
||||||
cd Flux
|
|
||||||
mkdir results
|
|
||||||
|
|
||||||
torchrun --nproc_per_node=8 /app/Flux/run.py \
|
|
||||||
--model black-forest-labs/FLUX.1-dev \
|
|
||||||
--seed 42 \
|
|
||||||
--prompt "A small cat" \
|
|
||||||
--height 1024 \
|
|
||||||
--width 1024 \
|
|
||||||
--num_inference_steps 25 \
|
|
||||||
--max_sequence_length 256 \
|
|
||||||
--warmup_steps 5 \
|
|
||||||
--no_use_resolution_binning \
|
|
||||||
--ulysses_degree 8 \
|
|
||||||
--use_torch_compile \
|
|
||||||
--num_repetitions 1 \
|
|
||||||
--benchmark_output_directory results
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
The generated video will be stored under the results directory. For the actual benchmark step runtimes, see {% if model.model == "Hunyuan Video" %}stdout.{% elif model.model in ["Wan2.1", "Wan2.2"] %}results/outputs/rank0_*.json{% elif model.model == "FLUX.1" %}results/timing.json{% endif %}
|
|
||||||
|
|
||||||
{% if model.model == "FLUX.1" %}You may also use ``run_usp.py`` which implements USP without modifying the default diffusers pipeline. {% 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>`__.
|
|
||||||
|
|
||||||
- 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>`__.
|
|
||||||
@@ -3,22 +3,34 @@
|
|||||||
defaults:
|
defaults:
|
||||||
numbered: False
|
numbered: False
|
||||||
maxdepth: 6
|
maxdepth: 6
|
||||||
root: index
|
root: index.rst
|
||||||
subtrees:
|
subtrees:
|
||||||
- entries:
|
- entries:
|
||||||
- file: about/release-notes.md
|
- file: about/release-notes.md
|
||||||
title: Release notes
|
title: Release notes
|
||||||
- file: compatibility/compatibility-matrix.md
|
- file: compatibility/compatibility-matrix.rst
|
||||||
title: Compatibility matrix
|
title: Compatibility matrix
|
||||||
- caption: Installation
|
- caption: Install
|
||||||
entries:
|
entries:
|
||||||
- file: install/rocm
|
- file: install/rocm.rst
|
||||||
|
title: Install ROCm
|
||||||
|
entries:
|
||||||
|
# Dummy entries to point to install doc sections
|
||||||
|
- file: install/redirect/_prerequisites.rst
|
||||||
|
title: Prerequisites
|
||||||
|
- file: install/redirect/_install.rst
|
||||||
title: Installation
|
title: Installation
|
||||||
- file: install/build-from-source
|
- file: install/redirect/_post-install.rst
|
||||||
|
title: Post-installation
|
||||||
|
- file: install/redirect/_uninstall.rst
|
||||||
|
title: Uninstall ROCm
|
||||||
|
- file: install/build-from-source.rst
|
||||||
title: Build from source
|
title: Build from source
|
||||||
- caption: ROCm for AI
|
- caption: ROCm for AI
|
||||||
entries:
|
entries:
|
||||||
- file: install/pytorch-comfyui
|
- file: rocm-for-ai/pytorch-comfyui.rst
|
||||||
title: Install PyTorch and ComfyUI
|
title: Install PyTorch and ComfyUI
|
||||||
- file: rocm-for-ai/xdit-diffusion-inference
|
- caption: Tutorials
|
||||||
title: xDiT diffusion inference
|
entries:
|
||||||
|
- url: https://github.com/ROCm/rocm-examples/tree/release/therock-7.11
|
||||||
|
title: ROCm examples
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
rocm-docs-core==1.29.0
|
rocm-docs-core==1.31.3
|
||||||
sphinx-reredirects
|
|
||||||
sphinx-sitemap
|
sphinx-sitemap
|
||||||
sphinxcontrib.datatemplates==0.11.0
|
ckdl
|
||||||
|
|||||||
@@ -2,28 +2,28 @@
|
|||||||
# This file is autogenerated by pip-compile with Python 3.10
|
# This file is autogenerated by pip-compile with Python 3.10
|
||||||
# by the following command:
|
# by the following command:
|
||||||
#
|
#
|
||||||
# pip-compile requirements.in
|
# pip-compile docs/sphinx/requirements.in
|
||||||
#
|
#
|
||||||
accessible-pygments==0.0.5
|
accessible-pygments==0.0.5
|
||||||
# via pydata-sphinx-theme
|
# via pydata-sphinx-theme
|
||||||
alabaster==1.0.0
|
alabaster==1.0.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
asttokens==3.0.0
|
asttokens==3.0.1
|
||||||
# via stack-data
|
# via stack-data
|
||||||
attrs==25.4.0
|
attrs==25.4.0
|
||||||
# via
|
# via
|
||||||
# jsonschema
|
# jsonschema
|
||||||
# jupyter-cache
|
# jupyter-cache
|
||||||
# referencing
|
# referencing
|
||||||
babel==2.17.0
|
babel==2.18.0
|
||||||
# via
|
# via
|
||||||
# pydata-sphinx-theme
|
# pydata-sphinx-theme
|
||||||
# sphinx
|
# sphinx
|
||||||
beautifulsoup4==4.14.2
|
beautifulsoup4==4.14.3
|
||||||
# via pydata-sphinx-theme
|
# via pydata-sphinx-theme
|
||||||
breathe==4.36.0
|
breathe==4.36.0
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
certifi==2025.11.12
|
certifi==2026.1.4
|
||||||
# via requests
|
# via requests
|
||||||
cffi==2.0.0
|
cffi==2.0.0
|
||||||
# via
|
# via
|
||||||
@@ -31,26 +31,26 @@ cffi==2.0.0
|
|||||||
# pynacl
|
# pynacl
|
||||||
charset-normalizer==3.4.4
|
charset-normalizer==3.4.4
|
||||||
# via requests
|
# via requests
|
||||||
click==8.3.0
|
ckdl==1.0
|
||||||
|
# via -r docs/sphinx/requirements.in
|
||||||
|
click==8.3.1
|
||||||
# via
|
# via
|
||||||
# jupyter-cache
|
# jupyter-cache
|
||||||
# sphinx-external-toc
|
# sphinx-external-toc
|
||||||
comm==0.2.3
|
comm==0.2.3
|
||||||
# via ipykernel
|
# via ipykernel
|
||||||
cryptography==46.0.3
|
cryptography==46.0.4
|
||||||
# via pyjwt
|
# via pyjwt
|
||||||
debugpy==1.8.17
|
debugpy==1.8.20
|
||||||
# via ipykernel
|
# via ipykernel
|
||||||
decorator==5.2.1
|
decorator==5.2.1
|
||||||
# via ipython
|
# via ipython
|
||||||
defusedxml==0.7.1
|
|
||||||
# via sphinxcontrib-datatemplates
|
|
||||||
docutils==0.21.2
|
docutils==0.21.2
|
||||||
# via
|
# via
|
||||||
# myst-parser
|
# myst-parser
|
||||||
# pydata-sphinx-theme
|
# pydata-sphinx-theme
|
||||||
# sphinx
|
# sphinx
|
||||||
exceptiongroup==1.3.0
|
exceptiongroup==1.3.1
|
||||||
# via ipython
|
# via ipython
|
||||||
executing==2.2.1
|
executing==2.2.1
|
||||||
# via stack-data
|
# via stack-data
|
||||||
@@ -60,21 +60,21 @@ fastjsonschema==2.21.2
|
|||||||
# rocm-docs-core
|
# rocm-docs-core
|
||||||
gitdb==4.0.12
|
gitdb==4.0.12
|
||||||
# via gitpython
|
# via gitpython
|
||||||
gitpython==3.1.45
|
gitpython==3.1.46
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
greenlet==3.2.4
|
greenlet==3.3.1
|
||||||
# via sqlalchemy
|
# via sqlalchemy
|
||||||
idna==3.11
|
idna==3.11
|
||||||
# via requests
|
# via requests
|
||||||
imagesize==1.4.1
|
imagesize==1.4.1
|
||||||
# via sphinx
|
# via sphinx
|
||||||
importlib-metadata==8.7.0
|
importlib-metadata==8.7.1
|
||||||
# via
|
# via
|
||||||
# jupyter-cache
|
# jupyter-cache
|
||||||
# myst-nb
|
# myst-nb
|
||||||
ipykernel==7.1.0
|
ipykernel==7.1.0
|
||||||
# via myst-nb
|
# via myst-nb
|
||||||
ipython==8.37.0
|
ipython==8.38.0
|
||||||
# via
|
# via
|
||||||
# ipykernel
|
# ipykernel
|
||||||
# myst-nb
|
# myst-nb
|
||||||
@@ -84,13 +84,13 @@ jinja2==3.1.6
|
|||||||
# via
|
# via
|
||||||
# myst-parser
|
# myst-parser
|
||||||
# sphinx
|
# sphinx
|
||||||
jsonschema==4.25.1
|
jsonschema==4.26.0
|
||||||
# via nbformat
|
# via nbformat
|
||||||
jsonschema-specifications==2025.9.1
|
jsonschema-specifications==2025.9.1
|
||||||
# via jsonschema
|
# via jsonschema
|
||||||
jupyter-cache==1.0.1
|
jupyter-cache==1.0.1
|
||||||
# via myst-nb
|
# via myst-nb
|
||||||
jupyter-client==8.6.3
|
jupyter-client==8.8.0
|
||||||
# via
|
# via
|
||||||
# ipykernel
|
# ipykernel
|
||||||
# nbclient
|
# nbclient
|
||||||
@@ -118,7 +118,7 @@ myst-nb==1.3.0
|
|||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
myst-parser==4.0.1
|
myst-parser==4.0.1
|
||||||
# via myst-nb
|
# via myst-nb
|
||||||
nbclient==0.10.2
|
nbclient==0.10.4
|
||||||
# via
|
# via
|
||||||
# jupyter-cache
|
# jupyter-cache
|
||||||
# myst-nb
|
# myst-nb
|
||||||
@@ -129,27 +129,28 @@ nbformat==5.10.4
|
|||||||
# nbclient
|
# nbclient
|
||||||
nest-asyncio==1.6.0
|
nest-asyncio==1.6.0
|
||||||
# via ipykernel
|
# via ipykernel
|
||||||
packaging==25.0
|
packaging==26.0
|
||||||
# via
|
# via
|
||||||
# ipykernel
|
# ipykernel
|
||||||
|
# pydata-sphinx-theme
|
||||||
# sphinx
|
# sphinx
|
||||||
parso==0.8.5
|
parso==0.8.5
|
||||||
# via jedi
|
# via jedi
|
||||||
pexpect==4.9.0
|
pexpect==4.9.0
|
||||||
# via ipython
|
# via ipython
|
||||||
platformdirs==4.5.0
|
platformdirs==4.5.1
|
||||||
# via jupyter-core
|
# via jupyter-core
|
||||||
prompt-toolkit==3.0.52
|
prompt-toolkit==3.0.52
|
||||||
# via ipython
|
# via ipython
|
||||||
psutil==7.1.3
|
psutil==7.2.2
|
||||||
# via ipykernel
|
# via ipykernel
|
||||||
ptyprocess==0.7.0
|
ptyprocess==0.7.0
|
||||||
# via pexpect
|
# via pexpect
|
||||||
pure-eval==0.2.3
|
pure-eval==0.2.3
|
||||||
# via stack-data
|
# via stack-data
|
||||||
pycparser==2.23
|
pycparser==3.0
|
||||||
# via cffi
|
# via cffi
|
||||||
pydata-sphinx-theme==0.16.1
|
pydata-sphinx-theme==0.15.4
|
||||||
# via
|
# via
|
||||||
# rocm-docs-core
|
# rocm-docs-core
|
||||||
# sphinx-book-theme
|
# sphinx-book-theme
|
||||||
@@ -161,9 +162,9 @@ pygments==2.19.2
|
|||||||
# ipython
|
# ipython
|
||||||
# pydata-sphinx-theme
|
# pydata-sphinx-theme
|
||||||
# sphinx
|
# sphinx
|
||||||
pyjwt[crypto]==2.10.1
|
pyjwt[crypto]==2.11.0
|
||||||
# via pygithub
|
# via pygithub
|
||||||
pynacl==1.6.1
|
pynacl==1.6.2
|
||||||
# via pygithub
|
# via pygithub
|
||||||
python-dateutil==2.9.0.post0
|
python-dateutil==2.9.0.post0
|
||||||
# via jupyter-client
|
# via jupyter-client
|
||||||
@@ -174,7 +175,6 @@ pyyaml==6.0.3
|
|||||||
# myst-parser
|
# myst-parser
|
||||||
# rocm-docs-core
|
# rocm-docs-core
|
||||||
# sphinx-external-toc
|
# sphinx-external-toc
|
||||||
# sphinxcontrib-datatemplates
|
|
||||||
pyzmq==27.1.0
|
pyzmq==27.1.0
|
||||||
# via
|
# via
|
||||||
# ipykernel
|
# ipykernel
|
||||||
@@ -187,9 +187,9 @@ requests==2.32.5
|
|||||||
# via
|
# via
|
||||||
# pygithub
|
# pygithub
|
||||||
# sphinx
|
# sphinx
|
||||||
rocm-docs-core==1.29.0
|
rocm-docs-core==1.31.3
|
||||||
# via -r requirements.in
|
# via -r docs/sphinx/requirements.in
|
||||||
rpds-py==0.28.0
|
rpds-py==0.30.0
|
||||||
# via
|
# via
|
||||||
# jsonschema
|
# jsonschema
|
||||||
# referencing
|
# referencing
|
||||||
@@ -199,7 +199,7 @@ smmap==5.0.2
|
|||||||
# via gitdb
|
# via gitdb
|
||||||
snowballstemmer==3.0.1
|
snowballstemmer==3.0.1
|
||||||
# via sphinx
|
# via sphinx
|
||||||
soupsieve==2.8
|
soupsieve==2.8.3
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
sphinx==8.1.3
|
sphinx==8.1.3
|
||||||
# via
|
# via
|
||||||
@@ -213,30 +213,26 @@ sphinx==8.1.3
|
|||||||
# sphinx-design
|
# sphinx-design
|
||||||
# sphinx-external-toc
|
# sphinx-external-toc
|
||||||
# sphinx-last-updated-by-git
|
# sphinx-last-updated-by-git
|
||||||
|
# sphinx-multitoc-numbering
|
||||||
# sphinx-notfound-page
|
# sphinx-notfound-page
|
||||||
# sphinx-reredirects
|
sphinx-book-theme==1.1.4
|
||||||
# sphinxcontrib-datatemplates
|
|
||||||
# sphinxcontrib-runcmd
|
|
||||||
sphinx-book-theme==1.1.3
|
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
sphinx-copybutton==0.5.2
|
sphinx-copybutton==0.5.2
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
sphinx-design==0.6.1
|
sphinx-design==0.6.1
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
sphinx-external-toc==1.0.1
|
sphinx-external-toc==1.1.0
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
sphinx-last-updated-by-git==0.3.8
|
sphinx-last-updated-by-git==0.3.8
|
||||||
# via sphinx-sitemap
|
# via sphinx-sitemap
|
||||||
|
sphinx-multitoc-numbering==0.1.3
|
||||||
|
# via sphinx-external-toc
|
||||||
sphinx-notfound-page==1.1.0
|
sphinx-notfound-page==1.1.0
|
||||||
# via rocm-docs-core
|
# via rocm-docs-core
|
||||||
sphinx-reredirects==0.1.6
|
|
||||||
# via -r requirements.in
|
|
||||||
sphinx-sitemap==2.9.0
|
sphinx-sitemap==2.9.0
|
||||||
# via -r requirements.in
|
# via -r docs/sphinx/requirements.in
|
||||||
sphinxcontrib-applehelp==2.0.0
|
sphinxcontrib-applehelp==2.0.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
sphinxcontrib-datatemplates==0.11.0
|
|
||||||
# via -r requirements.in
|
|
||||||
sphinxcontrib-devhelp==2.0.0
|
sphinxcontrib-devhelp==2.0.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
sphinxcontrib-htmlhelp==2.1.0
|
sphinxcontrib-htmlhelp==2.1.0
|
||||||
@@ -245,19 +241,17 @@ sphinxcontrib-jsmath==1.0.1
|
|||||||
# via sphinx
|
# via sphinx
|
||||||
sphinxcontrib-qthelp==2.0.0
|
sphinxcontrib-qthelp==2.0.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
sphinxcontrib-runcmd==0.2.0
|
|
||||||
# via sphinxcontrib-datatemplates
|
|
||||||
sphinxcontrib-serializinghtml==2.0.0
|
sphinxcontrib-serializinghtml==2.0.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
sqlalchemy==2.0.44
|
sqlalchemy==2.0.46
|
||||||
# via jupyter-cache
|
# via jupyter-cache
|
||||||
stack-data==0.6.3
|
stack-data==0.6.3
|
||||||
# via ipython
|
# via ipython
|
||||||
tabulate==0.9.0
|
tabulate==0.9.0
|
||||||
# via jupyter-cache
|
# via jupyter-cache
|
||||||
tomli==2.3.0
|
tomli==2.4.0
|
||||||
# via sphinx
|
# via sphinx
|
||||||
tornado==6.5.2
|
tornado==6.5.4
|
||||||
# via
|
# via
|
||||||
# ipykernel
|
# ipykernel
|
||||||
# jupyter-client
|
# jupyter-client
|
||||||
@@ -281,11 +275,11 @@ typing-extensions==4.15.0
|
|||||||
# pygithub
|
# pygithub
|
||||||
# referencing
|
# referencing
|
||||||
# sqlalchemy
|
# sqlalchemy
|
||||||
urllib3==2.5.0
|
urllib3==2.6.3
|
||||||
# via
|
# via
|
||||||
# pygithub
|
# pygithub
|
||||||
# requests
|
# requests
|
||||||
wcwidth==0.2.14
|
wcwidth==0.5.3
|
||||||
# via prompt-toolkit
|
# via prompt-toolkit
|
||||||
zipp==3.23.0
|
zipp==3.23.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
/* Override PyData Sphinx Theme default colors */
|
|
||||||
html[data-theme="light"] {
|
|
||||||
--pst-color-table-row-hover-bg: #e2e8f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html[data-theme="dark"] {
|
|
||||||
--pst-color-table-row-hover-bg: #1e293b;
|
|
||||||
}
|
|
||||||
|
|
||||||
a svg {
|
|
||||||
color: var(--pst-color-text-base);
|
|
||||||
}
|
|
||||||
|
|
||||||
a svg:hover {
|
|
||||||
color: var(--pst-color-link-hover);
|
|
||||||
}
|
|
||||||
@@ -1,268 +0,0 @@
|
|||||||
#rocm-rn-components col {
|
|
||||||
width: 6rem;
|
|
||||||
}
|
|
||||||
#rocm-rn-components col:nth-child(2) {
|
|
||||||
width: 12rem;
|
|
||||||
}
|
|
||||||
#rocm-rn-components td {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
#rocm-rn-components td:last-of-type {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#rocm-rn-components a svg {
|
|
||||||
color: var(--pst-color-text-base);
|
|
||||||
}
|
|
||||||
#rocm-rn-components a svg:hover {
|
|
||||||
color: var(--pst-color-link-hover);
|
|
||||||
}
|
|
||||||
#rocm-rn-components .tbody-reverse-zebra tr:nth-child(2n+1) td {
|
|
||||||
background-color: var(--pst-color-table-row-zebra-high-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components .tbody-reverse-zebra tr:nth-child(2n) td {
|
|
||||||
background-color: var(--pst-color-table-row-zebra-low-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-libs th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-libs th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-libs th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
tbody.rocm-components-libs
|
|
||||||
th {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-tools th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-tools th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-tools th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
tbody.rocm-components-tools
|
|
||||||
th {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-compilers th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-compilers,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-compilers th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-compilers
|
|
||||||
td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-runtimes th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-runtimes,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-runtimes th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-runtimes
|
|
||||||
td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-tools th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools
|
|
||||||
td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-compilers th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-compilers
|
|
||||||
td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-runtimes th[rowspan]:first-of-type:hover
|
|
||||||
)
|
|
||||||
.rocm-components-runtimes
|
|
||||||
td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-ml th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-ml
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-ml th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-communication th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-communication
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-communication th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-math th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-math
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-math th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-primitives th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-primitives
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-primitives th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-dev th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-dev
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-dev th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-perf th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-perf
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-perf th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-system th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-system
|
|
||||||
td,
|
|
||||||
#rocm-rn-components:has(
|
|
||||||
tbody.rocm-components-system th[rowspan]:nth-of-type(2):hover
|
|
||||||
)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-ml td:hover)
|
|
||||||
.rocm-components-ml
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-ml td:hover)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-ml td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-communication td:hover)
|
|
||||||
.rocm-components-communication
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-communication td:hover)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-communication td:hover)
|
|
||||||
tr:hover
|
|
||||||
> td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-math td:hover)
|
|
||||||
.rocm-components-math
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-math td:hover)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-math td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-primitives td:hover)
|
|
||||||
.rocm-components-primitives
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-primitives td:hover)
|
|
||||||
.rocm-components-libs
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-primitives td:hover)
|
|
||||||
tr:hover
|
|
||||||
> td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-dev td:hover)
|
|
||||||
.rocm-components-dev
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-dev td:hover)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-dev td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-perf td:hover)
|
|
||||||
.rocm-components-perf
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-perf td:hover)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-perf td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-system td:hover)
|
|
||||||
.rocm-components-system
|
|
||||||
th,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-system td:hover)
|
|
||||||
.rocm-components-tools
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-system td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-compilers td:hover)
|
|
||||||
.rocm-components-compilers
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-compilers td:hover)
|
|
||||||
tr:hover
|
|
||||||
> td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-runtimes td:hover)
|
|
||||||
.rocm-components-runtimes
|
|
||||||
th:first-of-type,
|
|
||||||
#rocm-rn-components:has(tbody.rocm-components-runtimes td:hover) tr:hover > td {
|
|
||||||
background-color: var(--pst-color-table-row-hover-bg);
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
/* ------------------ Compatibility options grid ------------------ */
|
|
||||||
html {
|
|
||||||
--compat-border-radius: 2px;
|
|
||||||
--compat-accent-color: var(--pst-color-primary);
|
|
||||||
--compat-bg-color: var(--pst-color-on-background);
|
|
||||||
--compat-fg-color: var(--pst-color-primary-text);
|
|
||||||
--compat-head-color: var(--pst-color-surface);
|
|
||||||
--compat-param-hover-color: var(--pst-color-link-hover);
|
|
||||||
--compat-param-selected-color: var(--pst-color-primary);
|
|
||||||
--compat-border-color: var(--pst-color-border);
|
|
||||||
}
|
|
||||||
|
|
||||||
html[data-theme="light"] {
|
|
||||||
--compat-param-disabled-color: var(--pst-gray-300);
|
|
||||||
}
|
|
||||||
|
|
||||||
html[data-theme="dark"] {
|
|
||||||
--compat-param-disabled-color: var(--pst-gray-600);
|
|
||||||
}
|
|
||||||
|
|
||||||
div#vllm-benchmark-ud-params-picker.container-fluid {
|
|
||||||
padding: 0 0 1rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-param-k="model-group"],
|
|
||||||
div[data-param-k="model"] {
|
|
||||||
background-color: var(--compat-bg-color);
|
|
||||||
padding: 2px;
|
|
||||||
border: solid 1px var(--compat-border-color);
|
|
||||||
font-weight: 500;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-param-k="model-group"][data-param-state="selected"],
|
|
||||||
div[data-param-k="model"][data-param-state="selected"] {
|
|
||||||
background-color: var(--compat-param-selected-color);
|
|
||||||
color: var(--compat-fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-param-k="model-group"]:hover,
|
|
||||||
div[data-param-k="model"]:hover {
|
|
||||||
background-color: var(--compat-param-hover-color);
|
|
||||||
color: var(--compat-fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
div[data-param-k="model-group"][data-param-state="latest-version"] {
|
|
||||||
background-color: var(--compat-param-selected-color);
|
|
||||||
color: var(--compat-fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-param-k="model-group"][data-param-state="disabled"] {
|
|
||||||
background-color: var(--compat-param-disabled-color);
|
|
||||||
text-decoration: line-through;
|
|
||||||
text-decoration-color: var(--pst-color-danger);
|
|
||||||
cursor: auto;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
.model-param-head {
|
|
||||||
background-color: var(--compat-head-color);
|
|
||||||
padding: 0.15rem 0.15rem 0.15rem 0.67rem;
|
|
||||||
border-right: solid 3px var(--compat-accent-color);
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.model-param {
|
|
||||||
border: solid 1px var(--compat-border-color);
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hidden {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
@@ -1,212 +0,0 @@
|
|||||||
function ready(proc) {
|
|
||||||
// Check if page is loaded. If so, init.
|
|
||||||
if (document.readyState !== "loading") {
|
|
||||||
proc();
|
|
||||||
} else {
|
|
||||||
// Otherwise, wait for DOMContentLoaded event.
|
|
||||||
document.addEventListener("DOMContentLoaded", proc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ready(() => {
|
|
||||||
const ModelPicker = {
|
|
||||||
// Selector strings for DOM elements
|
|
||||||
SELECTORS: {
|
|
||||||
CONTAINER: "#vllm-benchmark-ud-params-picker",
|
|
||||||
MODEL_GROUP_BTN: 'div[data-param-k="model-group"][data-param-v]',
|
|
||||||
MODEL_PARAM_BTN: 'div[data-param-k="model"][data-param-v]',
|
|
||||||
MODEL_DOC: "div.model-doc",
|
|
||||||
},
|
|
||||||
CSS_CLASSES: {
|
|
||||||
HIDDEN: "hidden",
|
|
||||||
},
|
|
||||||
ATTRIBUTES: {
|
|
||||||
PARAM_KEY: "data-param-k", // URL search parameter key (i.e., "model")
|
|
||||||
PARAM_VALUE: "data-param-v", // URL search param value (e.g., "pyt_vllm_llama-3.1-8b", "pyt_vllm_llama-3.1-70b") -- these are MAD model tags
|
|
||||||
PARAM_GROUP: "data-param-group", // Model group (e.g., "llama", "mistral")
|
|
||||||
PARAM_STATE: "data-param-state", // Selection state
|
|
||||||
},
|
|
||||||
|
|
||||||
// Cache DOM elements
|
|
||||||
elements: {
|
|
||||||
container: null,
|
|
||||||
modelGroups: null,
|
|
||||||
modelParams: null,
|
|
||||||
modelDocs: null,
|
|
||||||
},
|
|
||||||
|
|
||||||
data: {
|
|
||||||
availableModels: new Set(),
|
|
||||||
modelsByGroup: new Map(),
|
|
||||||
modelToGroupMap: new Map(),
|
|
||||||
formattedModelClassMap: new Map(), //TODO
|
|
||||||
},
|
|
||||||
|
|
||||||
init() {
|
|
||||||
this.elements.container = document.querySelector(
|
|
||||||
this.SELECTORS.CONTAINER,
|
|
||||||
);
|
|
||||||
if (!this.elements.container) return;
|
|
||||||
|
|
||||||
this.cacheDOMElements();
|
|
||||||
if (!this.validateElements()) return;
|
|
||||||
|
|
||||||
this.buildModelData();
|
|
||||||
this.bindEvents();
|
|
||||||
this.initializeState();
|
|
||||||
},
|
|
||||||
|
|
||||||
cacheDOMElements() {
|
|
||||||
const { CONTAINER, MODEL_GROUP_BTN, MODEL_PARAM_BTN, MODEL_DOC } =
|
|
||||||
this.SELECTORS;
|
|
||||||
this.elements = {
|
|
||||||
container: document.querySelector(CONTAINER),
|
|
||||||
modelGroups: document.querySelectorAll(MODEL_GROUP_BTN),
|
|
||||||
modelParams: document.querySelectorAll(MODEL_PARAM_BTN),
|
|
||||||
modelDocs: document.querySelectorAll(MODEL_DOC),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
validateElements() {
|
|
||||||
const { modelGroups, modelParams } = this.elements;
|
|
||||||
if (!modelGroups.length || !modelParams.length) {
|
|
||||||
console.warn("Model picker is missing required elements");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
buildModelData() {
|
|
||||||
const { PARAM_VALUE, PARAM_GROUP } = this.ATTRIBUTES;
|
|
||||||
|
|
||||||
this.elements.modelParams.forEach((model) => {
|
|
||||||
const modelTag = model.getAttribute(PARAM_VALUE);
|
|
||||||
const groupTag = model.getAttribute(PARAM_GROUP);
|
|
||||||
|
|
||||||
if (!modelTag || !groupTag) return;
|
|
||||||
|
|
||||||
this.data.availableModels.add(modelTag);
|
|
||||||
this.data.modelToGroupMap.set(modelTag, groupTag);
|
|
||||||
|
|
||||||
// FIXME: this is because Sphinx auto-formats class names to use dashes
|
|
||||||
this.data.formattedModelClassMap.set(
|
|
||||||
modelTag,
|
|
||||||
modelTag.replace(/[^a-zA-Z0-9]/g, "-"),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!this.data.modelsByGroup.has(groupTag)) {
|
|
||||||
this.data.modelsByGroup.set(groupTag, []);
|
|
||||||
}
|
|
||||||
this.data.modelsByGroup.get(groupTag).push(modelTag);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// Event listeners for user interactions
|
|
||||||
bindEvents() {
|
|
||||||
const handleInteraction = (event) => {
|
|
||||||
const target = event.target.closest(`[${this.ATTRIBUTES.PARAM_KEY}]`);
|
|
||||||
if (!target) return;
|
|
||||||
|
|
||||||
const paramType = target.getAttribute(this.ATTRIBUTES.PARAM_KEY);
|
|
||||||
const paramValue = target.getAttribute(this.ATTRIBUTES.PARAM_VALUE);
|
|
||||||
|
|
||||||
if (paramType === "model") {
|
|
||||||
const groupTag = target.getAttribute(this.ATTRIBUTES.PARAM_GROUP);
|
|
||||||
if (groupTag) this.updateUI(paramValue, groupTag);
|
|
||||||
} else if (paramType === "model-group") {
|
|
||||||
const firstModelInGroup = this.data.modelsByGroup.get(paramValue)
|
|
||||||
?.[0];
|
|
||||||
if (firstModelInGroup) this.updateUI(firstModelInGroup, paramValue);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.elements.container.addEventListener("click", handleInteraction);
|
|
||||||
this.elements.container.addEventListener("keydown", (event) => {
|
|
||||||
if (event.key === "Enter" || event.key === " ") {
|
|
||||||
event.preventDefault();
|
|
||||||
handleInteraction(event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// Update the page based on the selected model
|
|
||||||
updateUI(modelTag, groupTag) {
|
|
||||||
const validModel = this.setModelSearchParam(modelTag);
|
|
||||||
|
|
||||||
// Update model group buttons
|
|
||||||
this.elements.modelGroups.forEach((group) => {
|
|
||||||
const isSelected =
|
|
||||||
group.getAttribute(this.ATTRIBUTES.PARAM_VALUE) === groupTag;
|
|
||||||
group.setAttribute(
|
|
||||||
this.ATTRIBUTES.PARAM_STATE,
|
|
||||||
isSelected ? "selected" : "",
|
|
||||||
);
|
|
||||||
group.setAttribute("aria-selected", isSelected.toString());
|
|
||||||
});
|
|
||||||
|
|
||||||
// Update model buttons
|
|
||||||
this.elements.modelParams.forEach((model) => {
|
|
||||||
const isInSelectedGroup =
|
|
||||||
model.getAttribute(this.ATTRIBUTES.PARAM_GROUP) === groupTag;
|
|
||||||
const isSelectedModel =
|
|
||||||
model.getAttribute(this.ATTRIBUTES.PARAM_VALUE) === validModel;
|
|
||||||
|
|
||||||
model.classList.toggle(this.CSS_CLASSES.HIDDEN, !isInSelectedGroup);
|
|
||||||
model.setAttribute(
|
|
||||||
this.ATTRIBUTES.PARAM_STATE,
|
|
||||||
isSelectedModel ? "selected" : "",
|
|
||||||
);
|
|
||||||
model.setAttribute("aria-selected", isSelectedModel.toString());
|
|
||||||
});
|
|
||||||
|
|
||||||
// Update visibility of doc sections
|
|
||||||
const formattedClass = this.data.formattedModelClassMap.get(validModel);
|
|
||||||
if (formattedClass) {
|
|
||||||
this.elements.modelDocs.forEach((doc) => {
|
|
||||||
doc.classList.toggle(
|
|
||||||
this.CSS_CLASSES.HIDDEN,
|
|
||||||
!doc.classList.contains(formattedClass),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Get the current model from the URL search parameters.
|
|
||||||
getModelSearchParam() {
|
|
||||||
return new URLSearchParams(location.search).get("model");
|
|
||||||
},
|
|
||||||
|
|
||||||
// Set the model in the URL search parameters, or fallback to the first available one.
|
|
||||||
setModelSearchParam(modelTag) {
|
|
||||||
const defaultModel = [...this.data.availableModels][0];
|
|
||||||
const model = this.data.availableModels.has(modelTag)
|
|
||||||
? modelTag
|
|
||||||
: defaultModel;
|
|
||||||
|
|
||||||
const searchParams = new URLSearchParams(location.search);
|
|
||||||
searchParams.set("model", model);
|
|
||||||
|
|
||||||
history.replaceState(
|
|
||||||
{},
|
|
||||||
"",
|
|
||||||
`${location.pathname}?${searchParams.toString()}`,
|
|
||||||
);
|
|
||||||
return model;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Initialize the UI state based on the current URL search parameter or default values.
|
|
||||||
initializeState() {
|
|
||||||
const currentModel = this.getModelSearchParam();
|
|
||||||
const validModel = this.setModelSearchParam(currentModel);
|
|
||||||
|
|
||||||
const initialGroup = this.data.modelToGroupMap.get(validModel) ??
|
|
||||||
[...this.data.modelsByGroup.keys()][0];
|
|
||||||
|
|
||||||
if (initialGroup) {
|
|
||||||
this.updateUI(validModel, initialGroup);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
ModelPicker.init();
|
|
||||||
});
|
|
||||||
92
docs/sphinx/static/setup-toc-install-headings.js
Normal file
92
docs/sphinx/static/setup-toc-install-headings.js
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
const TOC_QUERY = ".bd-docs-nav";
|
||||||
|
const TOC2_QUERY = ".bd-sidebar-secondary";
|
||||||
|
// /install/rocm.html
|
||||||
|
const INSTALL_PAGE_DIR = "install";
|
||||||
|
const INSTALL_PAGE_FILE = "rocm.html";
|
||||||
|
const TOC_ENTRIES_TO_MODIFY = [
|
||||||
|
{ tocQuery: "a[href$='redirect/_prerequisites.html']", toc2Query: "a[href='#prerequisites']" },
|
||||||
|
{ tocQuery: "a[href$='redirect/_install.html']", toc2Query: "a[href='#installation']" },
|
||||||
|
{ tocQuery: "a[href$='redirect/_post-install.html']", toc2Query: "a[href='#post-installation']" },
|
||||||
|
{ tocQuery: "a[href$='redirect/_uninstall.html']", toc2Query: "a[href='#uninstalling']" },
|
||||||
|
];
|
||||||
|
|
||||||
|
function domReady(callback) {
|
||||||
|
if (document.readyState !== "loading") callback();
|
||||||
|
else document.addEventListener("DOMContentLoaded", callback, { once: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDocsRoot() {
|
||||||
|
const pathname = window.location.pathname;
|
||||||
|
const parts = pathname.split("/").filter(Boolean);
|
||||||
|
|
||||||
|
// If ur already inside /install/, preserve the path up to install/
|
||||||
|
if (pathname.includes(`/${INSTALL_PAGE_DIR}/`)) {
|
||||||
|
const installIdx = parts.indexOf(INSTALL_PAGE_DIR);
|
||||||
|
return "/" + parts.slice(0, installIdx + 1).join("/") + "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
// HACK:
|
||||||
|
// Look for version pattern: at least two dots (e.g., 6.4.3, 7.10.0-preview)
|
||||||
|
const versionIdx = parts.findIndex(part =>
|
||||||
|
(part.match(/\./g) || []).length >= 2 || /^\d+$/.test(part)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (versionIdx !== -1) {
|
||||||
|
return "/" + parts.slice(0, versionIdx + 1).join("/") + `/${INSTALL_PAGE_DIR}/`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback to root-level /install/
|
||||||
|
return `/${INSTALL_PAGE_DIR}/`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildHref(docsRoot, page, hash) {
|
||||||
|
// If already on the install page, just use hash anchors
|
||||||
|
const pathname = window.location.pathname;
|
||||||
|
const isOnInstallPage = pathname.endsWith(`/${INSTALL_PAGE_DIR}/${INSTALL_PAGE_FILE}`) ||
|
||||||
|
pathname.endsWith(`/${INSTALL_PAGE_FILE}`);
|
||||||
|
|
||||||
|
if (isOnInstallPage && hash) {
|
||||||
|
return `#${hash}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${docsRoot}${page}${hash ? "#" + hash : ""}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchClassChange(elem, cls, onAdd, onRemove) {
|
||||||
|
if (!elem) return;
|
||||||
|
const obs = new MutationObserver(() => {
|
||||||
|
elem.classList.contains(cls) ? onAdd?.() : onRemove?.();
|
||||||
|
});
|
||||||
|
obs.observe(elem, { attributes: true, attributeFilter: ["class"] });
|
||||||
|
}
|
||||||
|
|
||||||
|
domReady(() => {
|
||||||
|
const toc = document.querySelector(TOC_QUERY);
|
||||||
|
const toc2 = document.querySelector(TOC2_QUERY);
|
||||||
|
if (!toc) return;
|
||||||
|
|
||||||
|
const docsRoot = getDocsRoot();
|
||||||
|
|
||||||
|
TOC_ENTRIES_TO_MODIFY.forEach((item) => {
|
||||||
|
const tocElem = toc.querySelector(item.tocQuery);
|
||||||
|
if (!tocElem) {
|
||||||
|
console.warn(`[ROCmDocsToc]: No ${item.tocQuery} found on page`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const anchorId = item.toc2Query.match(/#([^'"\]]+)/)?.[1];
|
||||||
|
if (!anchorId) return;
|
||||||
|
|
||||||
|
tocElem.href = buildHref(docsRoot, INSTALL_PAGE_FILE, anchorId);
|
||||||
|
|
||||||
|
const toc2Elem = toc2?.querySelector(item.toc2Query);
|
||||||
|
if (!toc2Elem) return;
|
||||||
|
|
||||||
|
watchClassChange(
|
||||||
|
toc2Elem,
|
||||||
|
"active",
|
||||||
|
() => tocElem.parentElement.classList.add("current"),
|
||||||
|
() => tocElem.parentElement.classList.remove("current"),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user