From cc19d4d22bbf68c07df04a679c2d8ebb06df34ac Mon Sep 17 00:00:00 2001
From: Haicheng Wu <57973641+hwu36@users.noreply.github.com>
Date: Tue, 28 Jan 2025 18:03:34 -0500
Subject: [PATCH] fix a readme broken link (#2069)
---
.../docs/blackwell_cluster_launch_control.md | 150 ++++++++++++++++++
media/images/non_persistent.png | Bin 0 -> 238336 bytes
media/images/persistent_clc.png | Bin 0 -> 305365 bytes
media/images/persistent_static.png | Bin 0 -> 385900 bytes
4 files changed, 150 insertions(+)
create mode 100644 media/docs/blackwell_cluster_launch_control.md
create mode 100644 media/images/non_persistent.png
create mode 100644 media/images/persistent_clc.png
create mode 100644 media/images/persistent_static.png
diff --git a/media/docs/blackwell_cluster_launch_control.md b/media/docs/blackwell_cluster_launch_control.md
new file mode 100644
index 00000000..fe13b960
--- /dev/null
+++ b/media/docs/blackwell_cluster_launch_control.md
@@ -0,0 +1,150 @@
+# Blackwell Cluster Launch Control
+
+## Overview
+
+A GEMM workload usually consists of three phases: prologue, mainloop and epilogue. Each available SM will process multiple output tiles in series if the number of output tiles are much more than the number of available SMs, completely exposing the overhead of prologue and epilogue.
+
+Consider a GEMM that has `20x20x1` output tiles, running on a GPU with `100` SMs. Only `80` out of the `100` SMs are available. Assume cluster shape is `1x1x1`. The following diagram shows how the schedule would look like for such a kernel.
+
+

+
+
+### Static Scheduler
+CUTLASS has adopted a software technique named **persistent kernels**. Persistent clusters, or Workers, can stay on the GPU throughout kernel execution and process multiple tiles, hiding prologue and epilogue costs. The tile scheduler statically determines the next output tile to process with zero overhead.
+
+However, static scheduler is susceptible to workload imbalance if some SMs are unavailable. The following diagram illustrates this issue.
+
+
+
+### Dynamic Scheduler with Cluster Launch Control
+A fundamental limitation of persistent scheduling is that the kernel is unaware of the number of available SMs in real time. Some SMs might be occupied by another kernel and thus be unavailable. This makes it challenging to load-balance work across available SMs.
+
+Blackwell introduces cluster launch control (CLC) for dynamic scheduling. (See https://docs.nvidia.com/cuda/parallel-thread-execution). With this feature, the kernel launches a grid containing as many threadblocks as there are output tiles to compute in the kernel -- just like one would in a non-persistent kernel. Here we define `ClcID` to be a coordinate from the 3D grid launched on GPU.
+
+Cluster launch control follows the below rules:
+
+1. A `ClcID` will be launched as a Worker when there are available SMs.
+2. A `ClcID` can be queried by an existing Worker via `clusterlaunchcontrol.try_cancel` instruction.
+3. Every `ClcID` is guaranteed to be processed by either (1) or (2).
+4. Each Worker is pre-loaded with a `ClcID`, which is the coordinate indicated by `{blockIdx.x, blockIdx.y, blockIdx.z}`.
+5. `clusterlaunchcontrol.try_cancel` instruction returns either a success signal with a `ClcID` or a decline signal. The most common reason of a decline is that akk `ClcID`s have been processed.
+6. Cluster launch control works on the granularity of clusters. For example, a 2x2 persistent worker cluster's query will consume 2x2 `ClcID`s at once.
+
+The following diagram shows how the schedule would look like with cluster launch control.
+
+
+
+## Programming Model
+### Pseudo Code
+#### Non-persistent kernel
+``` c++
+// Non-persistent kernel
+__device__ non_persistent_kernel(...) {
+ setup_common_data_structures();
+ dim3 workCoordinates = blockIdx;
+ coordinate_specific_compute(workCoordinates);
+}
+```
+#### Static Persistent Kernel
+``` c++
+// Static Persistent Kernel
+__device__ static_persistent_kernel(...) {
+ setup_common_data_structures(...);
+ dim3 workCoordinates = blockIdx;
+ do {
+ coordinate_specific_compute(workCoordinates);
+ isValidId, workCoordinates = staticTileScheduler.fetch_next_work();
+ } while (isValidId);
+}
+```
+
+
+#### Blackwell Dynamic Persistent Kernel
+``` c++
+// Dynamic Persistent Kernel
+__device__ clc_dynamic_persistent_kernel(...) {
+ setup_common_data_structures(...);
+ dim3 workCoordinates = blockIdx;
+ do {
+ coordinate_specific_compute(workCoordinates);
+ isValidId, newClcID = clcTileScheduler.fetch_next_work();
+ workCoordinates = newClcID;
+ } while (isValidId);
+}
+```
+
+
+### Cluster Launch Control Pipeline Class
+
+Please refer to the `PipelineCLCFetchAsync` pipeline class defined in [Cluster launch control pipeline class](/include/cutlass/pipeline/sm100_pipeline.hpp). Cluster launch control queries can be pipelined and mananged by an asynchronous pipeline with producer-consumer relationship (See
+[pipeline](/media/docs/pipeline.md) document). The producer is the scheduler warp of the 0th CTA in the cluster and the consumers are all warps that need `ClcID`s.
+
+To setup a CLC pipeline correctly, we need to make sure the params are set to the right values:
+
+* `transaction_bytes` is `16` as CLC will return a 16B response and store it in the specified shared memory address.
+* `consumer_arv_count` is the thread count of all the consumer warps in the cluster.
+* `producer_arv_count` is `1` because only one thread from scheduler warp will be elected to issue `clusterlaunchcontrol.try_cancel`.
+* `producer_blockid` is `0` to denote that the first CTA in the cluster is producing.
+
+
+### Dynamic tile scheduler class
+Please refer to `PersistentTileSchedulerSm100` class defined in [sm100 dynamic persistent tile scheduler](/include/cutlass/gemm/kernel/sm100_tile_scheduler.hpp).
+
+There are two important methods of the CLC scheduler class. The first is `advance_to_next_work`, which is intended to be executed by one elected thread from the scheduler warp. It effectively sends out the CLC query to the CLC. A CLC query response will be broadcast to the same shared memory address of all CTAs in the cluster.
+
+The other method is named `get_current_work`. It simply loads the CLC response from the shared memory buffer indexed by a pipeline state.
+
+
+The CLC pipeline and scheduler classes are used together to ensure correct functionality and necessary synchronization of CLC feature. Please refer to [cluster launch control pipeline unit test](/test/unit/pipeline/pipeline_cluster_launch_control_async_warp_specialized_blackwell.cu).
+
+## Blackwell Warp-specialized Persistent Kernel
+
+Now, let's take a look at how CLC feature is used in our [Blackwell dense GEMM kernel](/include/cutlass/gemm/kernel/sm100_gemm_tma_warpspecialized.hpp).
+
+This particular warp-specialized kernel has the following warp assignment:
+
+| Warp Role | Warp |
+|------------------|-------------|
+| MMA | 0 |
+| Scheduler | 1 |
+| Mainloop Load | 2 |
+| Epilogue Load | 3 |
+| Epilogue | 4, 5, 6, 7 |
+
+Scheduler warp is the producer of the CLC pipeline. The consumers are the MMA, Mainloop Load, Epilogue Load and Epilogue warps. In addition, the scheduler warp is its own consumer! This is because it needs the `success` information from the query to terminate the persistent loop on end-of-grid.
+
+The CLC pipeline has a depth of 3 to overlap the CLC operations of multiple waves for latency hiding. The first `ClcID` is the preloaded `blockIdx`, which does not require CLC query and is fully static.
+
+
+
+# Copyright
+
+Copyright (c) 2025 - 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+SPDX-License-Identifier: BSD-3-Clause
+
+```
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+```
diff --git a/media/images/non_persistent.png b/media/images/non_persistent.png
new file mode 100644
index 0000000000000000000000000000000000000000..71e0a55554f64880686c224a7d1eac9da16a5459
GIT binary patch
literal 238336
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