Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Volatile Loads/Stores

オープン
#513 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
30/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
rust
領域
compilers

調査の方向性

core/src/ptr/mod.rs で報告されている intrinsics::volatile_store の呼び出しから始め、Rust-GPU が volatile load と store を SPIR-V にどのように lowering しているかを追跡します。その経路を issue で言及されている SPIR-V Memory Operands と比較します。完了とは、報告されている MemFlags(VOLATILE) エラーなしで、要求された volatile 操作がサポートされることです。

索引モデルが issue の本文から書いたものです。

説明

enhancement

I'm trying to use volatile loads and stores like so:

#[inline(always)]
pub fn get_item(&self, offset: u32) -> T {
    unsafe {
        let ptr = self
            .items
            .get_unchecked(((self.start_ticket + offset) % self.max_capacity) as usize);
        core::ptr::read_volatile(ptr)
    }
}

#[inline(always)]
pub fn set_item(&mut self, offset: u32, item: T) {
    unsafe {
        let ptr = self
            .items
            .get_unchecked_mut(((self.start_ticket + offset) % self.max_capacity) as usize);
        core::ptr::write_volatile(ptr, item);
    }
}

But when compiling I get an error saying this is not supported yet.

error: store_with_flags is not supported yet: MemFlags(VOLATILE)
      --> /home/peyton/.rustup/toolchains/nightly-2025-06-30-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:2180:9
       |
  2180 |         intrinsics::volatile_store(dst, src);
       |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

It would be very useful to be able to specify this in loads. It seems like its possible in SPIRV using Memory Operands is there any way to do this currently?

System Info

  • SPIR-V: SPIRV-Tools v2025.4 v2025.4-0-g7f2d9ee9
    Targets:
    SPIR-V 1.0
    SPIR-V 1.1
    SPIR-V 1.2
    SPIR-V 1.3
    SPIR-V 1.4
    SPIR-V 1.5
    SPIR-V 1.6
    SPIR-V 1.2 (under OpenCL 2.2 Full Profile semantics)
    SPIR-V 1.0 (under Vulkan 1.0 semantics)
    SPIR-V 1.3 (under Vulkan 1.1 semantics)
    SPIR-V 1.4 (under Vulkan 1.1 semantics)
    SPIR-V 1.5 (under Vulkan 1.2 semantics)
    SPIR-V 1.6 (under Vulkan 1.3 semantics) SPIR-V 1.6 (under Vulkan 1.4 semantics)
主要言語
Rust
スター
3.4k
フォーク
126
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Rust-GPU/rust-gpu のほかの issue

Rust-GPU/rust-gpu の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。