From 01b091a119b7e8f1af2dc8eea964744d7133071b Mon Sep 17 00:00:00 2001 From: Kiss Date: Wed, 13 May 2026 12:54:35 +0200 Subject: [PATCH 1/3] Add markdown button and make llms.txt available --- docs/conf.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index b063e50..8c7f54e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,5 +1,7 @@ """Configuration file for the Sphinx documentation builder.""" import os +from pathlib import Path +import shutil html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "instinct.docs.amd.com") html_context = {} @@ -45,6 +47,7 @@ "flavor": "amdgpu", "announcement": f"AMD GPU Driver 31.20.0 is a technology preview intended for use only with AMD ROCm 7.12.0 technology preview. For production use, continue to use AMD GPU Driver {version} documentation.", "link_main_doc": True, + "use_download_button": True, # Add any additional theme options here } extensions = [ @@ -58,6 +61,57 @@ exclude_patterns = ['.venv'] +EXCLUDED_DIRS = { + "_build", + "_templates", + "_static", + ".git", + ".venv", +} + +def should_skip(path: Path) -> bool: + return any(part in EXCLUDED_DIRS for part in path.parts) + + +def generate_combined_markdown(app, exception): + if exception: + return + + docs_root = Path(app.srcdir) + output_file = Path(app.outdir) / "llms.txt" + + print(output_file) + + all_files = sorted(docs_root.rglob("*.md")) + + combined = [] + combined.append("# Combined Documentation\n") + + for doc_file in all_files: + if should_skip(doc_file): + continue + + relative = doc_file.relative_to(docs_root) + + combined.append(f"\n---\n") + combined.append(f"\n# {relative}\n") + + try: + content = doc_file.read_text(encoding="utf-8") + combined.append(content) + combined.append("\n") + + except Exception as e: + combined.append(f"\n[ERROR reading file: {e}]\n") + + output_file.write_text( + "\n".join(combined), + encoding="utf-8", + ) + +def setup(app): + app.connect("build-finished", generate_combined_markdown) + # Add the following replacements to every RST file. rst_prolog = f""" .. |version| replace:: {version} From 00ee1cd113b6022e613e1ba32f5d7054deaa8805 Mon Sep 17 00:00:00 2001 From: Kiss Date: Tue, 19 May 2026 14:40:41 +0200 Subject: [PATCH 2/3] Add base llms.txt and add treshold --- docs/conf.py | 97 ++++++++++++++++++++++++++++++++++++++++++--------- docs/llms.txt | 30 ++++++++++++++++ 2 files changed, 111 insertions(+), 16 deletions(-) create mode 100644 docs/llms.txt diff --git a/docs/conf.py b/docs/conf.py index 8c7f54e..bb3ba6a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,7 +1,7 @@ """Configuration file for the Sphinx documentation builder.""" import os +import re from pathlib import Path -import shutil html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "instinct.docs.amd.com") html_context = {} @@ -29,7 +29,7 @@ ol_version_numbers = ['10.1', '9.7', '8.10'] rl_version_numbers = ['9.7'] -html_context = { +html_context.update({ "ubuntu_version_numbers" : ubuntu_version_numbers, "debian_version_numbers" : debian_version_numbers, "sles_version_numbers" : sles_version_numbers, @@ -38,7 +38,7 @@ "ol_release_version_numbers" : ol_release_version_numbers, "ol_version_numbers" : ol_version_numbers, "rl_version_numbers" : rl_version_numbers -} +}) # Required settings @@ -69,46 +69,111 @@ ".venv", } +MARKUP_PREFIXES = ( + ":::", + "```{", + "```", + ":img-top:", + ":class", + ":link:", + ":link-type:", + ":shadow:", + ":columns:", + ":padding:", + ":gutter:", + ":open:", + ":name:", + ":header-rows:", + ":alt:", + "+++", + "<", + "-->", + "{bdg-", +) + +# Matches lines like "align: center", "alt:", "name: foo" (directive options +# not starting with a colon, common in MyST figure/table fences) +_BARE_DIRECTIVE_RE = re.compile(r"^[a-z][a-z_-]*:\s*\S*$") + +# Matches MyST/RST anchor labels like "(some-label)=" +_ANCHOR_LABEL_RE = re.compile(r"^\(\w[\w-]*\)=$") + +MIN_PROSE_LINES = 10 + + def should_skip(path: Path) -> bool: return any(part in EXCLUDED_DIRS for part in path.parts) +def is_prose_line(line: str) -> bool: + stripped = line.strip() + if not stripped: + return False + if stripped.startswith(MARKUP_PREFIXES): + return False + # Drop bare directive-option lines (e.g. "align: center", "alt:") + if _BARE_DIRECTIVE_RE.match(stripped): + return False + # Drop MyST/RST anchor labels (e.g. "(some-label)=") + if _ANCHOR_LABEL_RE.match(stripped): + return False + # Drop lines that contain an HTML tag anywhere (e.g. ".

") + if re.search(r" Install, configure, and optimize the AMD GPU driver (amdgpu) for AMD Instinct and Radeon GPUs on Linux. Covers package manager installation across major distributions, post-install steps, system optimization tuning guides for MI300X and MI300A, GPU partitioning, and conceptual reference for IOMMU, PCIe atomics, and resource oversubscription. + +## Install AMD GPU Driver + +- [Prerequisites](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/install/detailed-install/prerequisites.html): System requirements and prerequisites before installing the AMD GPU driver, including kernel version and dependency checks. +- [Install via package manager](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/install/package-manager-index.html): Install the AMD GPU driver using native package managers on Ubuntu, Debian, RHEL, Oracle Linux, Rocky Linux, and SUSE Linux Enterprise Server. +- [Post-install instructions](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/install/detailed-install/post-install.html): Configure user groups, verify driver loading, and complete required post-installation steps after installing the AMD GPU driver. + +## How to + +- [System optimization](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/index.html): Hardware and OS tuning guides for AMD Instinct GPU workloads, including BIOS settings, GRUB configuration, NBIO tuning, and environment variable recommendations. +- [MI300X system optimization](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300x.html): AMD Instinct MI300X-specific system settings for HPC and AI workloads, including BIOS, NBIO, and ROCm environment variable tuning. +- [MI300A system optimization](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi300a.html): AMD Instinct MI300A APU-specific system tuning for high-performance computing workloads. +- [MI200 system optimization](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi200.html): Performance and system tuning guide for AMD Instinct MI200 series GPUs. +- [MI100 system optimization](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/system-optimization/mi100.html): Performance and system tuning guide for AMD Instinct MI100 GPUs. +- [MI300X GPU partitioning overview](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/gpu-partitioning/mi300x/overview.html): Overview of GPU partitioning capabilities on AMD Instinct MI300X, including partition modes and resource isolation. +- [MI300X GPU partitioning requirements](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/gpu-partitioning/mi300x/requirements.html): Hardware and software requirements for enabling GPU partitioning on AMD Instinct MI300X. +- [MI300X GPU partitioning quick start](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/gpu-partitioning/mi300x/quick-start-guide.html): Step-by-step guide to configuring and activating GPU partitioning on AMD Instinct MI300X. +- [MI300X GPU partitioning troubleshooting](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/gpu-partitioning/mi300x/troubleshooting.html): Diagnose and resolve common issues when configuring GPU partitioning on AMD Instinct MI300X. +- [MI300A GPU partitioning overview](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/gpu-partitioning/mi300a/overview.html): Overview of GPU partitioning on the AMD Instinct MI300A APU. + +## Conceptual + +- [IOMMU](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/conceptual/iommu.html): How Input-Output Memory Management Unit (IOMMU) affects AMD GPU DMA operations, PCIe topology, and xGMI configurations. +- [PCIe atomics](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/conceptual/pcie-atomics.html): PCIe atomic operations support in ROCm and their role in GPU peer-to-peer communication. +- [Oversubscription](https://instinct.docs.amd.com/projects/amdgpu-docs/en/latest/conceptual/oversubscription.html): Considerations and tradeoffs when oversubscribing hardware resources with AMD GPU workloads. + +--- From 34aa66e8be48d958ff38f81aa5ca6d574d24f9dd Mon Sep 17 00:00:00 2001 From: Kiss Date: Thu, 21 May 2026 12:21:20 +0200 Subject: [PATCH 3/3] Add llms-full.txt and keep the llms.txt as base --- docs/conf.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index bb3ba6a..24ff988 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -61,6 +61,8 @@ exclude_patterns = ['.venv'] +html_extra_path = ["llms.txt"] + EXCLUDED_DIRS = { "_build", "_templates", @@ -98,6 +100,9 @@ # Matches MyST/RST anchor labels like "(some-label)=" _ANCHOR_LABEL_RE = re.compile(r"^\(\w[\w-]*\)=$") +# Matches RST section underlines (e.g. "====", "----", "~~~~") +_RST_UNDERLINE_RE = re.compile(r"^[=\-~^\"\'#*+]{3,}$") + MIN_PROSE_LINES = 10 @@ -120,6 +125,15 @@ def is_prose_line(line: str) -> bool: # Drop lines that contain an HTML tag anywhere (e.g. ".

") if re.search(r"