[FEA]: Require ct.barrier for multi stage kernels
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia esaminando gli entry point esistenti ct.kernel, ct.load, ct.atomic_add e ct.store, quindi determina come un ct.barrier proposto coordinerebbe i blocchi tra kernel composti da più fasi. Confronta gli approcci del contatore nella memoria globale e di cooperative-groups descritti nell’issue. Il lavoro è completato quando una funzionalità barrier documentata supporta il flusso di sincronizzazione di esempio e ne convalida la semantica.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is this a new feature, an improvement, or a change to existing functionality?
New Feature
How would you describe the priority of this feature request?
High
Please provide a clear description of problem this feature solves
In CUDA programming, we use atomic methods or cooperative groups to synchronize execution across blocks.
cutile could provide a similar mechanism to help developers write complex multi-stage kernels in a simpler way.
Feature Description
Example:
import torch
import cuda.tile as ct
@ct.kernel
def device_norm(
x: ct.Array, y: ct.Array, workspace: ct.Array,
tile_size: ct.Constant, p: ct.Constant):
# create a barrier on global memory, except p blocks to reach it.
barrier = ct.barrier(p=p)
block_id = ct.bid(0)
tile = ct.load(x, index=(block_id, 0), shape=(1, tile_size))
mean = ct.sum(tile) / tile_size
ct.atomic_add(workspace, (0, ), mean)
# wait until p blocks to reach here
barrier.wait()
global_mean = ct.load(workspace, (0, ), (1, ))
global_mean = global_mean / p
tile = tile - global_mean
ct.store(y, (block_id, ), (tile_size, ))
Describe your ideal solution
Provide ct.barrier, or a similar feature, to make it easier for developers to write applications that require block-level synchronization.
There are multiple ways to implement ct.barrier:
- Allocate a region in global memory for synchronization, and let each block atomically increment a counter when it reaches the barrier.
- Use cooperative groups.
Describe any alternatives you have considered
No response
Additional context
No response
Contributing Guidelines
- I agree to follow cuTile Python's contributing guidelines
- I have searched the open feature requests and have found no duplicates for this feature request
- Lingua principale
- Python
- Stelle
- 2.2k
- Fork
- 155
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/cutile-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NVIDIA/cutile-python#105 · 2 commenti ·
-
bug status: needs-triage
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
NVIDIA/cutile-python#102 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
NVIDIA/cutile-python#101 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
NVIDIA/cutile-python#97 · 1 commento ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
NVIDIA/cutile-python#96 · 1 commento ·
Tutte le issue di NVIDIA/cutile-python
Issue simili
-
essnmx good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
-
[Feature] 奇物选择添加优先级 Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
syfoud/Simulated_Scepter#174 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Giskard-AI/giskard-oss#2840 · 1 commento ·
-
A claim comment carrying the issue number is silently declined while the workflow reports success Apertaarea: repo bug perceived difficulty: 2
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
yeti-platform/yeti#1380 ·