[FEA]: Require ct.barrier for multi stage kernels
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par examiner les points d’entrée existants ct.kernel, ct.load, ct.atomic_add et ct.store, puis déterminez comment un ct.barrier proposé coordonnerait les blocs entre plusieurs étapes d’un kernel. Comparez les approches du compteur en mémoire globale et de cooperative-groups décrites dans l’issue. La tâche est considérée comme terminée lorsqu’une fonctionnalité de barrière documentée prend en charge le flux de synchronisation d’exemple et que sa sémantique est validée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Python
- Étoiles
- 2.2k
- Forks
- 155
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de NVIDIA/cutile-python
-
[BUG]: check_dtype_support rejects family-conditional (sm_XXXa) gpu_code targetsPeut-être pris @sylvesterkaczmarek l’a pris il y a 30 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NVIDIA/cutile-python#105 · 2 commentaires ·
-
nvidia-runners
Difficulté 2/5 1-3 heures Accessibilité débutants 25/100
NVIDIA/cutile-python#108 ·
-
[BUG]: FFT sample launches `Batch` blocks that each process the full batchPeut-être pris @AntonOresten l’a pris il y a 138 jours. Ouvertebug status: needs-triage
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
NVIDIA/cutile-python#102 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
NVIDIA/cutile-python#101 ·
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
NVIDIA/cutile-python#97 · 1 commentaire ·
Toutes les issues de NVIDIA/cutile-python
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
NousResearch/hermes-agent#136483 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
[BUG] LazyStackedTensorDictStore zeroes the last byte of a new key set on the last elementPeut-être pris @peterdsharpe l’a pris aujourd’hui. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
pytorch/tensordict#2307 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
GrokModel.generate/a_generate pass an OpenAI-style list-of-dicts to xai_sdk.chat.user(), so every call crashes with a protobuf TypeError before any network I/OPeut-être pris @Christian-Sidak l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
confident-ai/deepeval#3436 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour