Rust-GPU / Rust-GPU/rust-gpu

[Migrated] Large array variable initialization (`let arr = [0; 32 * 1024];`) compiles very slowly.

Offen
#64 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Rust
Sterne
3.4k
Forks
125
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1132
Old labels: t: bug
Originally creatd by pyranota on 2024-02-11T13:28:58Z


EDIT(@eddyb): while there are reasons to avoid such arrays, the slowdown is the immediate Rust-GPU bug - I've left unchanged the original text, but used strikethrough for parts that don't apply, IMO.


User should not be able to create large sized arrays in rust-gpu shaders.
Stack is limited, and large sized data-structures should be moved in buffers.
Plus it makes compilation incredibly slow (I assume this syntax [0; SIZE] translates to spirv's [0, 0, 0, 0, 0, ... SIZE])

Expected Behaviour

spirv-builder should throw an error, when user creates large array in stack

Example & Steps To Reproduce
  1. Setup basic rust-gpu shader
  2. let arr = [0; 32 * 1024];
  3. cargo build

System Info

  • Rust: rustc 1.75.0 (82e1608df 2023-12-21)
  • OS: Pop!_OS
  • GPU: nvidia 1060
  • SPIR-V: SPIRV-Tools v2022.2-dev unknown hash, 2022-02-16T16:37:15

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Der Issue nennt weder eine Quelldatei noch einen Test; beginne mit dem minimalen rust-gpu-Shader-Reproducer unter Verwendung von let arr = [0; 32 * 1024];, führe anschließend cargo build aus und verfolge den für die Verlangsamung verantwortlichen Kompilierungspfad. Als erledigt gilt die Aufgabe, wenn dieser große Array-Initializer die Kompilierung nicht mehr extrem verlangsamt, mit einem Regressionstest, falls sich der relevante Testort ermitteln lässt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.