llama.cpp プロジェクトは、CIパイプラインでThreadSanitizerによって特定された重大な並行性問題を解決するビルド b11302 をリリースしました。この更新では、複数のCPUスレッドが同じメモリ要素に誤って書き込んでいたスパースアテンションメカニズム内のデータ競合を解消しました。

  • 死んだインデクサスロットには、単一のセンティネル行を共有する代わりに一意のscatter行 (n_kv + slot) が割り当てられました。
  • 生きたスロットは互いに素なセルを参照し、トークンに対するscatterインデックスがすべての選択パスで一意であることを保証します。
  • この修正により、top_kによって選択された不可視プールとトークンの末尾セルとの重複が解消されました。

この変更により、共有メモリ位置への並行書き込みによって引き起こされる未定義動作を防ぎ、スパースインデクサマスクの構築のスレッドセーフな実行が保証されます。