[Migrated] Initializing workgroup memory
Personne n'a encore pris cette issue.
- Langage dominant
- Rust
- Étoiles
- 3.4k
- Forks
- 126
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1077
Old labels: t: enhancement
Originally creatd by kevinboulain on 2023-07-04T20:07:53Z
As far as I can tell, the workgroup/shared memory (context) can not be declared as to be zero-initialized and one has to do it manually.
https://github.com/KhronosGroup/Vulkan-Docs/issues/1457 has a bunch of interesting links: the extension VK_KHR_zero_initialize_workgroup_memory (promoted to core in Vulkan 1.3) allows to declare workgroup/shared variables with a null initializer. On the SPIR-V side, OpVariable with a Workgroup storage class is allowed to be initialized with OpConstantNull only (like so).
I don't know what the project would prefer, it could be an option to pass to the SpirvBuilder (I assume it could be desirable to always initialize these variables) or another symbol (similarly to how storage_buffer allows extra arguments):
#[spirv(compute(threads(256)))]
fn compute(
#[spirv(workgroup, null_initialized = true)] array: &mut [u32; N],
// ...
) {
// ...
}
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez par retracer SpirvBuilder et la gestion existante de la mémoire workgroup/shared, puis comparez-les aux règles Vulkan et SPIR-V liées pour OpConstantNull. Le travail est terminé lorsque le projet dispose d’une API décidée permettant de demander une mémoire workgroup initialisée à zéro et prend en charge la sortie SPIR-V valide correspondante.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- compilers, computer-graphics
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100