Skip to content

Commit ced4a2f

Browse files
committed
docs: restructure documentation
- Split kernel-details.md into focused docs (naive, tiled, bank-free, etc.) - Add learning-path.md for progressive study guide - Consolidate specs into specs.md - Remove redundant RELEASE_NOTES.md (merged into CHANGELOG) - Update README files with refined content - Simplify CI workflows - Update Jekyll config
1 parent 3253ff4 commit ced4a2f

25 files changed

Lines changed: 1997 additions & 2345 deletions

.github/workflows/ci.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,21 @@ name: CI
55

66
on:
77
push:
8-
branches: [main, master]
8+
branches: [master]
9+
paths-ignore:
10+
- '**/*.md'
11+
- 'docs/**'
12+
- 'index.md'
13+
- '_config.yml'
14+
- 'openspec/**'
915
pull_request:
10-
branches: [main, master]
16+
branches: [master]
17+
paths-ignore:
18+
- '**/*.md'
19+
- 'docs/**'
20+
- 'index.md'
21+
- '_config.yml'
22+
- 'openspec/**'
1123
workflow_dispatch:
1224

1325
permissions:

.github/workflows/pages.yml

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
# GitHub Pages Deployment
22
# Builds and deploys the project documentation site to GitHub Pages
3+
# Uses Jekyll with just-the-docs theme
34

45
name: Deploy to GitHub Pages
56

67
on:
78
push:
8-
branches: [master, main]
9+
branches: [master]
910
paths:
10-
- 'index.md'
11-
- 'README.md'
12-
- 'README.zh-CN.md'
1311
- 'CHANGELOG.md'
1412
- 'CONTRIBUTING.md'
13+
- 'index.md'
1514
- '_config.yml'
1615
- 'docs/**'
17-
- 'specs/**'
16+
- 'specs.md'
1817
- 'assets/**'
18+
- '_sass/**'
1919
- '.github/workflows/pages.yml'
2020
workflow_dispatch:
2121

@@ -38,6 +38,16 @@ jobs:
3838
- name: Setup Pages
3939
uses: actions/configure-pages@v5
4040

41+
- name: Cache Jekyll build
42+
uses: actions/cache@v4
43+
with:
44+
path: |
45+
.jekyll-cache
46+
_site
47+
key: ${{ runner.os }}-jekyll-${{ hashFiles('**/*.md', '**/*.yml') }}
48+
restore-keys: |
49+
${{ runner.os }}-jekyll-
50+
4151
- name: Build with Jekyll
4252
uses: actions/jekyll-build-pages@v1
4353
with:
@@ -46,6 +56,8 @@ jobs:
4656

4757
- name: Upload artifact
4858
uses: actions/upload-pages-artifact@v3
59+
with:
60+
path: ./_site
4961

5062
deploy:
5163
environment:

CHANGELOG.md

Lines changed: 35 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,59 @@
1+
---
2+
layout: default
3+
title: Changelog
4+
nav_order: 10
5+
permalink: /CHANGELOG
6+
---
7+
18
# Changelog
29

3-
All notable changes to this project will be documented in this file.
10+
All notable changes to this project are documented here.
411

5-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
12+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project aims to follow [Semantic Versioning](https://semver.org/).
713

814
## [Unreleased]
915

1016
### Changed
11-
- **Documentation Reorganization**: Migrated to Spec-Driven Development (SDD) structure
12-
- Removed `.kiro/specs/` directory
13-
- Created `/specs/` directory with standardized structure:
14-
- `specs/product/` - Product requirements
15-
- `specs/rfc/` - Technical design documents (RFCs)
16-
- `specs/testing/` - Test specifications
17-
- Migrated and translated all spec documents to English
18-
- Added `AGENTS.md` for AI agent workflow instructions
19-
- Updated `README.md` and `CONTRIBUTING.md` to reference new spec structure
20-
21-
### Fixed
22-
- **Config Bug**: Fixed duplicate `defaults` section in `_config.yml` causing Jekyll configuration conflict
23-
- **Config Bug**: Removed reference to non-existent `og-image.png` in `_config.yml`
24-
- **Code Comment**: Improved clarity in `getTheoreticalPeakGflops()` architecture detection comments
25-
26-
### Improved
27-
- **GitHub Topics**: Optimized repository topics (removed `deep-learning`, `cuda-kernel`, `nvidia-gpu`; added `cuda-kernels`, `shared-memory`, `bank-conflict`)
28-
- **CI Workflow**: Added sm_89 and sm_90 architecture support in CUDA build matrix
29-
- **GitHub Pages**: Added `jekyll-default-layout` plugin, improved performance table formatting
30-
31-
---
17+
- Consolidated repository governance around `openspec/specs/`, updated agent instructions, and simplified documentation roles.
18+
- Reworked README, GitHub Pages content, and supporting docs into clearer repository-entry and learning surfaces.
19+
- Began pruning redundant release-history and engineering guidance artifacts in favor of fewer authoritative files.
3220

3321
## [2.1.0] - 2026-04-16
3422

35-
### Changed
36-
- **Documentation Refactor**: Complete documentation restructure
37-
- Consolidated changelog entries into single `CHANGELOG.md`
38-
- Rewrote `.kiro/specs/` documentation (design.md, requirements.md, tasks.md)
39-
- Enhanced `index.md` GitHub Pages landing page
40-
- Updated `_config.yml` for better Jekyll configuration
41-
- **GitHub Workflows**: Simplified and optimized
42-
- `ci.yml`: Cleaner structure, better step naming
43-
- `pages.yml`: Fixed paths filter, improved concurrency group
44-
45-
### Removed
46-
- **Dead Code Cleanup**: Removed 514 lines of unused code across 7 source files
47-
- `src/utils/cuda_utils.cuh`: Removed unused utility functions
48-
- `src/utils/verify.cuh`: Removed unused verification functions
49-
- `src/kernels/naive_sgemm.cuh`: Removed scaled kernel variants
50-
- `src/kernels/tiled_sgemm.cuh`: Removed scaled kernel variants
51-
- `src/kernels/bank_conflict_free_sgemm.cuh`: Removed transposed variant
52-
- `src/kernels/double_buffer_sgemm.cuh`: Removed register tiled variant
53-
- `src/kernels/tensor_core_sgemm.cuh`: Removed unused optimized kernel
54-
- Deleted `changelog/` directory (consolidated into `CHANGELOG.md`)
55-
56-
## [2.0.0] - 2026-03-13
57-
58-
### Fixed
59-
- **Critical**: CI workflow adjusted for CPU-safe execution
60-
- Removed GPU-dependent CUDA container build from GitHub Hosted Runner
61-
- Restored `push`, `pull_request`, and `workflow_dispatch` triggers
62-
- Unified format check using `jidicula/clang-format-action`
63-
64-
### Changed
65-
- CI now only performs static format checking (CPU-safe)
66-
- GPU runtime tests remain local/dedicated-runner only
67-
68-
## [2.0.0-rc.2] - 2026-03-10
69-
7023
### Added
71-
- GitHub Pages configuration with SEO metadata in `_config.yml`
72-
- Professional Chinese landing page in `index.md`
24+
- Tensor Core WMMA SGEMM kernel with guarded FP32 fallback for unsupported dimensions
25+
- Benchmark enhancements, including roofline data export and configurable warmup/benchmark iterations
26+
- Google Test coverage for standard kernels, Tensor Core fast path, fallback behavior, and edge cases
27+
- Bilingual documentation and a GitHub Pages documentation site
7328

7429
### Changed
75-
- README.md: Added CI/Pages badges, timing column, ASCII roadmap
76-
- pages.yml: Narrowed path triggers and sparse-checkout
77-
- .gitignore: Added Jekyll-related entries
30+
- Consolidated source code into `src/kernels/`, `src/utils/`, and `tests/`
31+
- Adopted CMake as the primary build system while retaining the Makefile for quick local runs
32+
- Expanded supported CUDA architecture targets to cover Volta through Hopper generation GPUs
7833

7934
### Fixed
80-
- Workflow deep standardization: unified `permissions`, `concurrency`, path filtering
35+
- Tensor Core path memory management issues
36+
- Double-buffer synchronization issues
37+
- Grid dimension handling for non-square matrices
8138

82-
## [2.0.0-rc.1] - 2026-03-09
39+
## [2.0.0] - 2026-03-13
8340

84-
### Fixed
85-
- **Critical Memory Leak**: Error checking macros now throw exceptions instead of `exit()`
86-
- **Memory Leak**: `launch_tensor_core_sgemm` now uses RAII wrappers
87-
- **Memory Leak**: `SGEMMBenchmark::run()` now uses RAII wrappers
41+
### Added
42+
- Bank-conflict-free and double-buffer SGEMM kernels
43+
- CUDA Events-based benchmark infrastructure
44+
- Nsight-oriented profiling support
8845

8946
### Changed
90-
- **Breaking**: Removed external dependency — project is now self-contained
47+
- Migrated from an earlier single-file layout to the current modular structure
48+
- Standardized on CUDA 11.0+ and C++17
9149

92-
### Added
93-
- `CMakeLists.txt` for modern CMake build
94-
- Standardized CI workflow with `clang-format` check
95-
- CUDA container-based build validation
50+
### Removed
51+
- Legacy single-file benchmark script
52+
- SM 6.x support
9653

9754
## [1.0.0] - 2025-02-13
9855

9956
### Added
100-
- MIT LICENSE file
101-
- `.gitignore` with CUDA/Profiling/IDE rules
102-
- `.editorconfig` for unified code formatting
103-
- Standardized badges in README
104-
105-
---
106-
107-
## Version History
108-
109-
| Version | Date | Key Changes |
110-
|---------|------|-------------|
111-
| 2.1.0 | 2026-04-16 | Documentation refactor, dead code cleanup |
112-
| 2.0.0 | 2026-03-13 | CPU-safe CI, stable release |
113-
| 2.0.0-rc.2 | 2026-03-10 | GitHub Pages, documentation |
114-
| 2.0.0-rc.1 | 2026-03-09 | Memory leak fixes, CMake, self-contained |
115-
| 1.0.0 | 2025-02-13 | Initial project infrastructure |
57+
- Initial naive and tiled SGEMM kernels
58+
- Basic cuBLAS correctness verification
59+
- First benchmark CLI

CONTRIBUTING.md

Lines changed: 35 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,55 @@
1-
# Contributing
2-
3-
Thank you for your interest in this project! Contributions via Issues and Pull Requests are welcome.
1+
---
2+
layout: default
3+
title: Contributing
4+
nav_order: 11
5+
permalink: /CONTRIBUTING
6+
---
47

5-
## Spec-Driven Development
8+
# Contributing
69

7-
This project follows **Spec-Driven Development (SDD)**. All technical specifications are maintained in `/specs`:
10+
Focused improvements are welcome. For this repository, the goal is clarity, correctness, and compactness rather than feature sprawl.
811

9-
- 📋 [Product Requirements](specs/product/sgemm-kernel-requirements.md)
10-
- 🏗️ [Core Architecture RFC](specs/rfc/0001-core-architecture.md)
11-
- 🗺️ [Implementation Roadmap RFC](specs/rfc/0002-implementation-roadmap.md)
12-
- 🧪 [Test Specifications](specs/testing/kernel-verification.md)
12+
## When to use OpenSpec
1313

14-
**When contributing new features or changes:**
15-
1. **Review** the relevant spec documents in `/specs` first.
16-
2. **Update** specs if your changes affect interfaces, requirements, or behavior.
17-
3. **Implement** code that 100% adheres to the spec definitions.
18-
4. **Verify** against spec-defined test criteria.
14+
Use the OpenSpec workflow for any non-trivial change that affects:
1915

20-
For detailed AI and human contributor workflow, see [`AGENTS.md`](AGENTS.md).
16+
- repository structure
17+
- documentation roles or public positioning
18+
- validation rules or workflows
19+
- kernel behavior or engineering requirements
2120

22-
## Development Workflow
21+
Stable specs live under `openspec/specs/`. Active changes live under `openspec/changes/<change>/`.
2322

24-
1. Fork this repository
25-
2. Create a feature branch: `git checkout -b feature/your-feature`
26-
3. Commit changes: `git commit -m "feat: add your feature"`
27-
4. Push branch: `git push origin feature/your-feature`
28-
5. Create a Pull Request
23+
## Recommended flow
2924

30-
## Build & Test
25+
1. `/opsx:explore` for scope and trade-offs
26+
2. `/opsx:propose "description"` for the actual change
27+
3. `/opsx:apply` to execute the task list
28+
4. `/review` before major deletions, workflow changes, or archive
29+
5. `/opsx:archive` once tasks, docs, specs, and validation all agree
3130

32-
Recommended: CMake (primary build system):
31+
## Validation
3332

3433
```bash
3534
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
3635
cmake --build build -j$(nproc)
37-
./build/bin/sgemm_benchmark
38-
cmake --build build --target test_sgemm
3936
ctest --test-dir build
37+
openspec validate --all
4038
```
4139

42-
Quick local builds with Make:
43-
44-
```bash
45-
make GPU_ARCH=sm_86
46-
make benchmark
47-
make test
48-
```
49-
50-
Note: GitHub Actions currently runs format checks and containerized CUDA compile-only builds. CUDA runtime tests must be executed locally or on a GPU-enabled runner.
51-
52-
## Code Style
40+
- Hosted CI covers formatting, CUDA compile validation, OpenSpec/repository checks, and Pages.
41+
- Runtime verification and benchmarking still require a local GPU-capable machine.
5342

54-
- CUDA code follows project conventions (clang-format enforced)
55-
- Use indentation and formatting rules defined in `.editorconfig`
56-
- New kernel variants must include correctness verification against cuBLAS
57-
- Ensure all existing tests pass
43+
## Code and doc expectations
5844

59-
## Commit Message Format
45+
- Keep the existing kernel launcher interface shape intact unless the specs require a change.
46+
- Preserve RAII-based CUDA resource management and exception-style error handling.
47+
- Avoid adding generic governance boilerplate or duplicate docs.
48+
- If two files serve the same purpose, prefer one authoritative file over two partially-overlapping ones.
6049

61-
Use [Conventional Commits](https://www.conventionalcommits.org/):
50+
## Tooling notes
6251

63-
- `feat:` New feature or kernel variant
64-
- `fix:` Bug fix
65-
- `perf:` Performance optimization
66-
- `docs:` Documentation update
67-
- `test:` Test-related changes
52+
- CMake is the primary build path.
53+
- `clangd` plus `compile_commands.json` is the shared LSP baseline.
54+
- Use `gh` for repository metadata, Actions, issues, and PR operations.
55+
- Install the lightweight local hooks with `scripts/install-hooks.sh` if you want repository-specific guardrails before commit.

0 commit comments

Comments
 (0)