Add sphinx-combined folder that builds combined C++ & Python docs

This commit is contained in:
Oleksandr Pavlyk
2026-03-11 15:51:36 -05:00
parent 25ab62e39f
commit c519c02c9e
7 changed files with 187 additions and 0 deletions

16
docs/build_combined_docs.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="${SCRIPT_DIR}/sphinx-combined/_build"
DOXYGEN_DIR="${SCRIPT_DIR}/sphinx-combined/_doxygen"
mkdir -p "${BUILD_DIR}" "${DOXYGEN_DIR}"
echo "Running Doxygen for combined C++ API..."
(cd "${SCRIPT_DIR}/sphinx-combined" && doxygen Doxyfile)
echo "Building combined Sphinx docs..."
sphinx-build -b html "${SCRIPT_DIR}/sphinx-combined" "${BUILD_DIR}"
echo "Combined docs available at ${BUILD_DIR}/index.html"

View File

@@ -0,0 +1,43 @@
PROJECT_NAME = "NVBench"
PROJECT_BRIEF = "C++ NVBench Library"
OUTPUT_DIRECTORY = _doxygen
GENERATE_XML = YES
GENERATE_HTML = NO
GENERATE_LATEX = NO
QUIET = YES
WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_LOGFILE = _doxygen/warnings.log
INPUT = ../../nvbench
EXCLUDE = ../../nvbench/cupti_profiler.cxx
EXCLUDE_SYMBOLS = type_strings \
nvbench::detail \
nvbench::internal \
nvbench::tl \
UNUSED \
M_PI \
NVBENCH_UNIQUE_IDENTIFIER_IMPL1 \
NVBENCH_UNIQUE_IDENTIFIER_IMPL2 \
main
FILE_PATTERNS = *.cuh *.cxx *.cu *.h *.hpp
EXTENSION_MAPPING = cuh=C++ cu=C++
RECURSIVE = YES
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = YES
STRIP_FROM_PATH = ../../
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
GENERATE_TAGFILE =
XML_PROGRAMLISTING = NO
PREDEFINED = __device__= \
__host__= \
__global__= \
__forceinline__= \
__shared__= \
__align__(x)= \
__launch_bounds__(x)= \
NVBENCH_HAS_CUDA=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@@ -0,0 +1,105 @@
import os
project = "NVBench API"
author = "NVIDIA Corporation"
extensions = [
"breathe",
"sphinx.ext.autodoc",
"sphinx.ext.napoleon",
"sphinx.ext.autosummary",
]
templates_path = ["_templates"]
exclude_patterns = ["_build", "_doxygen"]
autosummary_generate = True
autodoc_default_options = {"members": True, "undoc-members": True}
napoleon_custom_sections = ["Note", "Parameters"]
release = "0.2.0"
_here = os.path.abspath(os.path.dirname(__file__))
_doxygen_xml = os.path.join(_here, "_doxygen", "xml")
breathe_projects = {"nvbench": _doxygen_xml}
breathe_default_project = "nvbench"
breathe_domain_by_extension = {"cuh": "cpp", "cxx": "cpp", "cu": "cpp"}
def _patch_breathe_namespace_declarations() -> None:
try:
import breathe.renderer.sphinxrenderer as sphinxrenderer
from docutils import nodes
from sphinx import addnodes
except Exception:
return
original = sphinxrenderer.SphinxRenderer.handle_declaration
def handle_declaration(self, nodeDef, declaration, *args, **kwargs):
is_namespace = getattr(nodeDef, "kind", None) == "namespace"
if not is_namespace:
return original(self, nodeDef, declaration, *args, **kwargs)
name = (declaration or "").strip()
if name.startswith("namespace "):
name = name[len("namespace ") :].strip()
if not name:
name = "<anonymous>"
keyword = addnodes.desc_sig_keyword("namespace", "namespace")
sig_name = addnodes.desc_sig_name(name, name)
return [keyword, nodes.Text(" "), sig_name]
sphinxrenderer.SphinxRenderer.handle_declaration = handle_declaration
def setup(app):
_patch_breathe_namespace_declarations()
######################################################
# -- Options for HTML output -------------------------------------------------
html_theme = "nvidia_sphinx_theme"
html_logo = "_static/nvidia-logo.png"
html_baseurl = (
os.environ.get("NVBENCH_DOCS_BASE_URL", "https://nvidia.github.io/nvbench/").rstrip(
"/"
)
+ "/"
)
html_theme_options = {
"icon_links": [
{
"name": "GitHub",
"url": "https://github.com/NVIDIA/nvbench",
"icon": "fa-brands fa-github",
"type": "fontawesome",
}
],
"navigation_depth": 4,
"show_toc_level": 2,
"navbar_start": ["navbar-logo"],
"navbar_end": ["theme-switcher", "navbar-icon-links"],
"footer_start": ["copyright"],
"footer_end": ["sphinx-version"],
"sidebar_includehidden": True,
"collapse_navigation": False,
# "switcher": {
# "json_url": f"{html_baseurl}nv-versions.json",
# "version_match": release,
# },
}
html_static_path = ["_static"] if os.path.exists("_static") else []
# Images directory
if os.path.exists("img"):
html_static_path.append("img")

View File

@@ -0,0 +1,5 @@
NVBench C++ API Reference
=========================
.. doxygenindex::
:project: nvbench

View File

@@ -0,0 +1,10 @@
NVBench API
===========
Combined C++ and Python API documentation.
.. toctree::
:maxdepth: 2
cpp_api
python_api

View File

@@ -0,0 +1,8 @@
cuda.bench Python API Reference
===============================
.. automodule:: cuda.bench
:members:
:imported-members:
:undoc-members:
:show-inheritance: