Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Confusing "cannot use `AtomicOrdering::SeqCst` on Vulkan memory model"

Đang mở
#399 5 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
rust
Lĩnh vực
compilers

Hướng nghiên cứu

Bắt đầu với crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets.rs tại lệnh gọi AtomicU32 fetch_add quanh dòng 109, sau đó kiểm tra chẩn đoán SeqCst được báo cáo và spirv_std::arch::atomic_i_add(). Xác định thứ tự nguyên tử của Vulkan được xử lý như thế nào và liệu có thể giải quyết việc hỗ trợ AtomicU32 hay không. Được xem là hoàn tất khi trường hợp sử dụng được báo cáo biên dịch được hoặc lỗi chỉ dẫn rõ ràng người dùng đến thao tác nguyên tử được hỗ trợ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

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.

Ngôn ngữ chính
Rust
Star
3.4k
Fork
126
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Rust-GPU/rust-gpu

Tất cả issue của Rust-GPU/rust-gpu

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.