Confusing "cannot use `AtomicOrdering::SeqCst` on Vulkan memory model"
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia da crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets.rs, alla chiamata AtomicU32 fetch_add intorno alla riga 109, quindi esamina la diagnostica SeqCst segnalata e spirv_std::arch::atomic_i_add(). Determina come viene gestito l'ordinamento atomico di Vulkan e se è possibile intervenire sul supporto per AtomicU32. Il lavoro è completato quando il caso d'uso segnalato compila oppure l'errore indirizza chiaramente gli utenti all'operazione atomica supportata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I'm getting the following error when trying to use AtomicU32:
error: cannot use `AtomicOrdering::SeqCst` on Vulkan memory model (check if `AcqRel` fits your needs)
--> /home/nazar-pc/.rustup/toolchains/nightly-2025-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3984:23
|
3984 | SeqCst => intrinsics::atomic_xadd::<T, { AO::SeqCst }>(dst, val),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: used from within `core::sync::atomic::atomic_add::<u32>`
--> /home/nazar-pc/.rustup/toolchains/nightly-2025-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3984:23
|
3984 | SeqCst => intrinsics::atomic_xadd::<T, { AO::SeqCst }>(dst, val),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: called by `<core::sync::atomic::AtomicU32>::fetch_add`
--> /home/nazar-pc/.rustup/toolchains/nightly-2025-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3748:1
|
3748 | / atomic_int! {
3749 | | cfg(target_has_atomic = "32"),
3750 | | cfg(target_has_atomic_equal_alignment = "32"),
3751 | | stable(feature = "integer_atomics_stable", since = "1.34.0"),
... |
3764 | | u32 AtomicU32
3765 | | }
| |_^
note: called by `ab_proof_of_space_gpu::shader::find_matches_in_buckets::log_message`
--> crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets.rs:109:34
|
109 | let write_at = debug_counter.fetch_add(message_length, Ordering::Relaxed);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The confusing part is that I'm not using SeqCst. Looks like the code that references SeqCst is technically compiled in and causes issues even though it is practically unreachable.
Would have been nice for it to compile successfully.
After above failure I tried spirv_std::arch::atomic_i_add(), which did work, but it has a bit strange syntax due to the need to provide not just ordering semantics, but also scope and it doesn't work on AtomicU32, only on u32. It is also unsafe for some reason.
Ultimately I think the error should say to use spirv_std::arch::atomic_i_add() (because I don't think hiding/guessing scope is a great idea) and spirv_std::arch::atomic_i_add() should support Atomic32, which has the same memory layout as regular u32.
- Lingua principale
- Rust
- Stelle
- 3.4k
- Fork
- 126
- 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 Rust-GPU/rust-gpu
-
enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
-
glam v0.33.6 breaks `Vec3A` Apertabug
-
enhancement
Rust-GPU/rust-gpu#643 · 3 commenti · 1 reazione · 1 assegnatario ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
Tutte le issue di Rust-GPU/rust-gpu
Issue simili
-
Replayed reasoning items send "content": null, which the Responses API schema does not permit Apertabug CLI custom-model
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
rust-bitcoin/rust-bitcoin#6930 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
fulcrumgenomics/ferro-hgvs#2251 ·
-
A-allocators A-docs C-enhancement T-libs
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100