差し渡しを取らない軸の断りをシェーダーへ向ける - #207
Merged
Merged
Conversation
PRレビュー / PR review変更 3 ファイル、コミット 3 件。 / 3 files, 3 commits. 検証の要否 / Verification required以下を走らせ、失敗した試験の名前と失敗の様子を変更前と突き合わせてください。総数だけで判断しないでください。 dotnet build ComputeWeave.sln -c Release -p:Platform=x64
dotnet test tests/ComputeWeave.Tests.SourceGenerators/ComputeWeave.Tests.SourceGenerators.csproj -c Release -p:Platform=x64
dotnet test tests/ComputeWeave.Tests.Internals/ComputeWeave.Tests.Internals.csproj -c Release -p:Platform=x64
dotnet test tests/ComputeWeave.Tests/ComputeWeave.Tests.csproj -c Release -p:Platform=x64
dotnet test tests/ComputeWeave.Tests.DeviceLost/ComputeWeave.Tests.DeviceLost.csproj -c Release -p:Platform=x64確認できた点 / Confirmed
これは自動の確認で、査読の代わりにはなりません。指摘は判断の材料であって、従う義務はありません。 |
routersys
force-pushed
the
dev/ComputeWeave.FixedAxisReport
branch
from
September 7, 2026 04:41
3d028a6 to
e847789
Compare
3 tasks
routersys
force-pushed
the
dev/ComputeWeave.FixedAxisReport
branch
from
September 7, 2026 04:48
e847789 to
05c6f4b
Compare
routersys
force-pushed
the
dev/ComputeWeave.FixedAxisReport
branch
from
September 7, 2026 05:20
05c6f4b to
1df697a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary / 概要
群を待つシェーダーの投入を断るとき、呼び出しに存在しない引数の名前を報告していました。断る条件は変えず、名前の側だけを直します。
For(x, y, shader)は3つ目の差し渡しを1に固定します。Z 方向のスレッド数が2以上だと1は群の倍数にならないので断られますが、そのとき報告される名前がzでした。2引数の入口にzという引数はありません。1引数のFor(x, shader)では Y と Z の両方が同じ形になります。差し渡しを取らない軸については、
shaderを名指しします。群の大きさを持つのがその引数で、6つの公開の入口すべてがこの名前を使っています。どの軸が足りないかは本文が述べます。差し渡しを取る軸は、これまでどおりその引数の名前を報告します。Linked issue / 関連する課題
Closes #203
Kind / 種別
Behavior change / 挙動の変更
公開APIは変わりません。投入が断られる条件も変わりません。
差し渡しを取らない軸で断られたときの
ArgumentExceptionが、yやzではなくshaderを名指しします。本文は軸と、その軸の群のスレッド数を述べ、その軸の差し渡しを取る入口へ移る必要があることを述べます。3つの差し渡しを取る入口は変わりません。
x、y、zを渡して断られた場合は、これまでどおりその引数の名前を報告します。Verification / 検証
名指しの規範
srcのArgumentExceptionの送出を全数で分けました。呼び出しが複数行にまたがるので、括弧の釣り合いで読んでいます。名指ししない1件は
ArrayPoolBinaryWriterの内部の不変条件で、利用者の引数を検査するものではありません。利用者に見える経路で名前を持たない形は、この木に前例がありません。引数の値ではなく引数の性質が食い違う場合にその引数を名指しするのは、.NET の標準の形でもあります。
Array.Copyは階数が違うときsourceArrayを名指しします。ここで食い違うのはシェーダーの群の大きさなので、名指しするのはshaderです。スイート
この枝の
1df697aaで測りました。判定は失敗した試験の名前で行い、失敗は0件です。ComputeWeave.Testsがmainの4163件から4件増えているのは、足した2本が2つの装置で走るためです。他の5本はmainと同じ値です。ComputeWeave.Tests.GlobalStatementsは要約を出さない工程で、終了コード0とTest passed successfully!を返します。解全体の建て直しは警告0、誤り0でした。変異
名前を選ぶ判断を1つずつ壊しました。変異を当てない対照は失敗0件です。
CS8625で建ちません最後の1つは試験ではなく型で守られています。名前を受け取る引数が
stringなので、名前を持たない形は署名を変えない限り書けません。引数を実際に取る軸の行、つまり
yとzを名指しする既存の2本は、どの変異でも落ちていません。断りの範囲は広がっていません。Notes / 補足
退けた設計
差し渡しを取らない軸へ、1ではなくその軸のスレッド数を渡す形を退けました。群が埋まるので断りは起きなくなりますが、
DispatchSizeのその軸が1から群の大きさへ変わり、余白のスレッドが本体を走ります。既存のシェーダーの意味を変えるので、名前の誤りを直すための変更としては大きすぎます。名前を持たない
ArgumentExceptionを投げる形も退けました。課題の本文はこの形を挙げていますが、上の走査のとおり、この木では106件中1件しかない形です。課題を書いた時点では走査していませんでした。実装の形
3つの差し渡しを取る内部の投入へ、呼ぶ側がいくつ書いたかを渡します。1引数と2引数の入口が固定する軸は、その数から分かります。断る条件も、報告する順序も、検査の位置も変えていません。
3つの軸は、それぞれ自分の剰余で守る対称な形にしました。X だけ差し渡しを取らない場合が無いので短く、その理由を注記に書いています。Z の剰余の検査は、そこへ到達する時点で必ず真ですが、規則をその場で読めるようにするために置いています。
軸を名指しする側と引数を名指しする側で、規則を述べる最初の文が同じなので、定数へ出しました。
測っていないこと
投入を伴わない工程での挙動は測っていません。この検査は投入の直前に走るので、装置が無い機械では試験そのものが走りません。
乖離台帳
ComputeContextは上流由来です。群を待つ投入を断る既存の行へ、差し渡しを取らない軸の名指しの規則と、名指しの規範を測った件数を書き足し、実装のコミットを引きました。行は増やしていません。監査は空です。