Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
/ok to test |
1 similar comment
|
/ok to test |
This comment has been minimized.
This comment has been minimized.
Add missing @param tags, fix param name mismatches, remove stale params, and correct Doxyfile inputs across libcudacxx, cudax, CUB, and Thrust headers. Replace duplicate overload doc blocks in copy.h and fill.h with @overload. Fix minor doc formatting in CUB device headers and Python sort docstrings.
Add -W (warnings-as-errors) to SPHINXOPTS and quote paths in the sphinx build command. Replace toctree with ref links in auto-generated group pages to eliminate duplicate-toctree warnings. Fix undefined label references, add missing toctree entries for numeric overflow docs, fix RST formatting errors, and add stub anchors for in-progress container and graph features.
Skip generating API pages for 3 symbols whose Doxygen XML produces C++ declarations that breathe/Sphinx cannot parse (function-pointer typedefs, variable templates with SFINAE expressions). Suppress cpp.duplicate_declaration and docutils warning categories that arise from breathe architecture limitations. Remove container.rst stub anchors that collide with breathe-generated labels. Full doc build (Doxygen + Sphinx -W) now passes with zero warnings.
Unify Doxygen warning settings across all 4 Doxyfiles with WARN_AS_ERROR=FAIL_ON_WARNINGS. Fix gen_docs.bash to check Doxygen exit codes from parallel builds. Add _CCCL_DOXYGEN_INVOKED stubs for CUB namespace macros. Remove orphaned @endrst directives, fix @param name mismatches across STF base classes and cudax launch overloads, fix @file tags, and clean up stale @param entries in CUB internals.
Add % prefix to ::cuda::std::tuple, ::cuda::std::execution::env, ::cuda::std::plus, ::std::tuple, and ::cuda::stream_ref in doc comments. The % tells Doxygen to render these as plain text instead of attempting to resolve them as cross-reference links.
Each CCCL project's Doxygen build is currently isolated, so types from other projects (e.g. cuda::std::tuple referenced from CUB) cannot be resolved. Drop :: global scope prefix from type names in doc comments and use monospace formatting instead. For template default arguments in C++ signatures, hide ::cuda::std::execution::env from Doxygen behind _CCCL_DOXYGEN_INVOKED guards.
Change @name to @brief on shape_of copy constructor doc blocks. Doxygen's @name creates a member group, which caused @param tags from adjacent doc blocks to bleed into unrelated members like size() and get_capacity(). Also fix @param size0 to match the actual parameter name (sizes) in the coords_t constructor.
Remove stray @} with no matching @{ in buffer.h. Remove duplicate
@relates in zip_function.h (Doxygen allows only one per block). Add
missing @endrst to close an RST block in block_load_to_shared.cuh.
Fix @snippet filename from unittest.h to unittest.cuh in traits.cuh
and add EXAMPLE_PATH to cudax Doxyfile so Doxygen can find it.
Doxygen cannot handle self-referential template inheritance (CRTP and recursive specialization patterns). Hide the recursive base class from Doxygen with _CCCL_DOXYGEN_INVOKED guards on graph_task, stream_task, and task_dep. Hide the entire CompileTimeArray recursive template in WarpExchangeShfl since it is a private implementation detail.
Convert discard_temp_storage doc comments from Doxygen markup to plain C++ comments since the symbol is in a detail namespace excluded by EXCLUDE_SYMBOLS. Hide __ensure_current_context out-of-class definition and structured_binding_size specialization from Doxygen with _CCCL_DOXYGEN_INVOKED guards. Remove \var doc for batch_memop enum value that is commented out and not yet defined.
Both pair.h and tuple.h documented these symbols under different Doxygen @addtogroup groups, causing "Member documentation found several times in @addtogroup groups" errors. Remove the Doxygen aliases and doc comments from pair.h, keeping tuple.h as the single authoritative location (which includes deprecation notices and cross-references).
Add */dispatch/* and */kernels/* to CUB Doxyfile EXCLUDE_PATTERNS. These directories contain only internal dispatch machinery and kernel launch functions, not public API. Doxygen was erroring on symbols like vsmem_helper_t::discard_temp_storage because EXTRACT_ALL pulled them in but EXCLUDE_SYMBOLS excluded their underlying detail types.
a2f3b81 to
70162c4
Compare
The WIP merge incorrectly removed __hierarchy from the Doxygen input paths. This directory exists and contains public API classes including this_block, this_thread, this_warp, this_grid, and this_cluster.
The group concept uses _CCCL_REQUIRES_EXPR which expands to an expression that Sphinx's C++ parser cannot handle. Exposed by restoring __hierarchy to the cudax Doxyfile INPUT.
|
/ok to test |
libcudacxx/include/cuda/__memory_resource/legacy_pinned_memory_resource.h
Outdated
Show resolved
Hide resolved
| typename EnvT = // Doxygen cannot resolve ::cuda::std::execution::env | ||
| #ifdef _CCCL_DOXYGEN_INVOKED | ||
| void | ||
| #else | ||
| ::cuda::std::execution::env<> | ||
| #endif |
There was a problem hiding this comment.
This is very sad! Is there a way we can properly fix this? Environment overloads will show up everywhere!
There was a problem hiding this comment.
There is a fix we can consider as part of the env rollout. I've filed a bug to track.
There was a problem hiding this comment.
tldr to save a click -- this fails because all of our projects use separate doxyfiles, and CUB's parser doesn't know about libcudacxx's symbols. Doxygen has some 'tagfile' mechanism to let the projects share cross-referencing info that would be great for a followup.
🥳 CI Workflow Results🟩 Finished in 1h 54m: Pass: 100%/425 | Total: 4d 23h | Max: 1h 37m | Hits: 97%/510549See results here. |
Summary
Closes #7053. Makes the documentation build fail on both Doxygen and Sphinx
warnings/errors, and fixes all existing issues so the build passes cleanly.
Sphinx (
-Wwarnings-as-errors)-WtoSPHINXOPTSingen_docs.bashunderline lengths, RST formatting errors, and duplicate labels
suppress_warningsinconf.pyforcpp.duplicate_declarationanddocutils— breathe architecture limitations that cannot be fixed in source(
_BREATHE_SKIP_SYMBOLSinauto_api_generator.py)Doxygen (
WARN_AS_ERROR = FAIL_ON_WARNINGS)gen_docs.bashto check Doxygen exit codes from parallel builds@paramname mismatches across STF base classes, cudax launch, and CUB_CCCL_DOXYGEN_INVOKEDstubs for CUB namespace macros@endrstdirectives in CUB device headers@filetags, stale@paramentries, and misused@nametagsgraph_task,stream_task,task_dep,CompileTimeArray)project's Doxygen build is currently isolated from the others)
_CCCL_DOXYGEN_INVOKED-guard::cuda::std::execution::envdefaults indevice_scan.cuhtemplate signaturesdispatch/andkernels/directories (internal implementation)tuple_element/tuple_sizedocs fromthrust/pair.h(authoritative docs remain in
tuple.h)detailsymbols to plain C++ comments__hierarchyto cudax Doxyfile INPUT (incorrectly removed)Verification
Built docs from this branch and from the merge base with
gen_docs.bashina devcontainer, then diffed the HTML output. All differences are accounted for:
excluded via
EXCLUDE_PATTERNS. These were never public API.get_executor_func_t,group,has_property,property_with_value— skipped due to unparseable C++declarations (breathe/Sphinx parser limitations on SFINAE expressions).
tuple_element/tuple_sizemoved frompairgroup to
tuplegroup (removed duplicate, kept authoritative location).this_block,this_thread,this_warp,this_grid,this_clusterall present after restoring__hierarchyto INPUT.Test plan
docs/gen_docs.bashpasses with zero Doxygen errors and zero Sphinx warnings