Tile IR bytecode v13.5 support
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
調査の方向性
Start with src/bytecode/writer.jl, src/bytecode/encodings.jl, and src/language/types.jl, then compare the linked upstream commits and check the v13.5 bytecode rules. The listed tasks also touch src/compiler/transform/token_order.jl, src/launch.jl, src/language/atomics.jl, and docs/src/man/performance.md; run the relevant bytecode and compiler tests as you work. Done means v13.5 encodings, hints, worker warp ranges, multimem ops, and foreign calls are supported and the performance table and release notes are updated.
索引モデルが issue の本文から書いたものです。
説明
CUDA 13.5 is out (https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html), so a released tileiras now accepts Tile IR bytecode v13.5. Upstream, cutile-python main has moved V_13_5 out of "dev only" and into _SUPPORTED_VERSIONS (https://github.com/NVIDIA/cutile-python/commit/9e8ef5ebc7f1ec19523cd19ff3a67e7ecd6eac98), its tileiras extra now pins cuda-toolkit<13.6, and the v1.8.0 release notes list the 13.5 features: foreign calls (in a separate cuda-tile-preview package), FP8 on Ada, and the wider num_worker_warps range. cuTile.jl emits v13.1 to v13.4 (SUPPORTED_BYTECODE_VERSIONS in src/bytecode/types.jl), and CUDA_Tile_jll stops at 13.4.1. The first three tasks change the encoding of every kernel, so they are needed before anything can target v13.5. The fourth turns v13.5 on.
Tasks
-
Function header. At v13.5,
add_function!insrc/bytecode/writer.jlsets only0x02in an entry's flags byte; the0x04"has hints" bit is gone. Every entry must carry anOptimizationHintsattribute, soencode_entry_hintscan no longer returnnothingand should emit an empty one instead. Every function's header then ends with an empty taggedArrayattribute forarg_attrs(tag0x06, count 0). https://github.com/NVIDIA/cutile-python/commit/b8c47728234dfbd1da9b0e7313831ccf4e179bd6 -
DISubprogramflags. At v13.5,subprogram!insrc/bytecode/writer.jlappends a trailing varint flags field, currently always 0.DebugAttrTableneeds to know the bytecode version for this. https://github.com/NVIDIA/cutile-python/commit/b8c47728234dfbd1da9b0e7313831ccf4e179bd6 -
inboundsonAtomicRedViewTkoOp. At v13.5,encode_AtomicRedViewTkoOp!insrc/bytecode/encodings.jlencodes a dense boolinboundsarray aftermode, asLoadViewTkoOpandStoreViewTkoOphave done since v13.4. It should throw if any entry istruebelow v13.5. Upstream always passes all-false; acheck_boundskeyword onct.atomic_store_*(src/language/atomics.jl) could come later. v13.5 also letsatomic_red_view_tkotake views that carry apadding_value; the "Tile IR atomic views cannot carry padding" comment andPaddingMode.Undeterminedinmake_atomic_tile_view(src/language/atomics.jl) only hold below v13.5. https://github.com/NVIDIA/cutile-python/commit/b8c47728234dfbd1da9b0e7313831ccf4e179bd6 -
Enable v13.5. Once the encoding tasks above are done:
- Add 13.5 to
SUPPORTED_BYTECODE_VERSIONS.test/bytecode.jlcurrently asserts thatTypeTable(; version=v"13.5")throws; flip that. - Build
CUDA_Tile_jll13.5 on Yggdrasil. TheCUDA_Tile_jll = "13.3"compat already admits it. - Emit v13.5 by default when the detected
tileirasis 13.5. - Update
docs/src/man/compatibility.md,docs/src/installation.mdandNEWS.md.
- Add 13.5 to
-
num_worker_warpsfrom 1 to 32. At v13.5, accept any power of two from 1 to 32. Below v13.5, keep allowing only 4 and 8.- Relax the
val in (4, 8)check invalidate_hint(src/language/types.jl). - Add the version check next to the existing v13.3 check in
encode_entry_hints(src/bytecode/writer.jl). - Update the table in
docs/src/man/performance.md.
https://github.com/NVIDIA/cutile-python/commit/a13e157fc890066f1521ba8f1a16d5530993b401
- Relax the
-
Multimem view ops. Add encoders for
MultimemLoadReduceViewTkoOp(opcode 123),MultimemReduceViewTkoOp(124) andMultimemStoreViewTkoOp(125) tosrc/bytecode/encodings.jl, plus theMultimemReductionKindenum (add, min, max, and, or, xor, umin, umax). Upstream has only the encoders, with no user API yet. A usable API would also need the newptr_attrvaluesunicast(peer access over NVLink) andmulticast(requires NVSwitch with NVLink SHARP). The release notes list support onsm_100,sm_103andsm_107. https://github.com/NVIDIA/cutile-python/commit/b8c47728234dfbd1da9b0e7313831ccf4e179bd6 -
FP8 on Ada. With
tileiras13.5,Float8_E4M3FNandFloat8_E5M2casts andmmawork on sm_89. Upstream lowers its per-dtype minimum SM from 90 to 89 at v13.5 (https://github.com/NVIDIA/cutile-python/commit/db66c131b4c7be056084f10580211d1d34960e9e). cuTile.jl has no per-architecture dtype check, so any failure before 13.5 would have come fromtileiras. This is likely just a docs line plus a test on sm_89. -
Foreign calls: bytecode. Add the encoder for
PreviewCallOp(opcode 16386) and its preview attribute tags:PreviewExprInt(0xD1),PreviewConcreteType(0xDB) andPreviewExprConstStr(0xE4). These tags are varint-encoded as two bytes each. The existingAttributeTags are all pushed as single bytes, so this needs new handling. When a module uses preview ops, bit 0 of the version tag in the header must be set (write_header!). https://github.com/NVIDIA/cutile-python/commit/66964ac29340eb90c5a6c0e7846650feaf443e41 -
Foreign calls: frontend. Add an intrinsic in the style of upstream's
cuda.tile_preview.foreign_call, gated on v13.5. It calls a symbol from a.tileliband takes these arguments:- the library path and version
- constant parameters (integers, strings and element types)
- tile or scalar inputs
- the output types
Supporting work:
- In
src/compiler/transform/token_order.jl, order the call as a store to all memory that also acquires. - In
run_tileiras(src/launch.jl), pass--preview=simtand-l <tilelib>. Add the tilelib paths and versions tocubin_cache_fields. - Upstream's
foreign_pointerdtype andArray.from_foreignexpose an array's base pointer to foreign code (https://github.com/NVIDIA/cutile-python/commit/fc6686804bb7fbb894842ed6ce0a4bfbb397be0b).TileArrayalready has aptrfield. This may only needPtr{T}operands, plus building aTileArrayfrom(ptr, sizes, strides)inside a kernel. - Optional: initialize and finalize NVSHMEM for kernels that call
nvshmem_*ornvshmemx_*symbols (https://github.com/NVIDIA/cutile-python/commit/3fc0653c28347d529ce9f10e014796aa9b4c078f).
https://github.com/NVIDIA/cutile-python/commit/66964ac29340eb90c5a6c0e7846650feaf443e41
Other upstream changes since v1.6.0
These changes are not tied to v13.5.
- Port the NVFP4 scaled matmul sample (https://github.com/NVIDIA/cutile-python/commit/4dfd274ad66a6f9d96d774e0afd7a701c28c1225) and the fused quantize-and-
mma_scaledkernel (https://github.com/NVIDIA/cutile-python/commit/84391afc3cc2689645fdcbb28f06e27f7b6084f9) toexamples/. Both need Blackwell and v13.4.examples/has no block-scaled matmul yet.
Assisted by: Opus 5.5
- 主要言語
- Julia
- スター
- 90
- フォーク
- 13
- 平均マージ
- 4日 8時間
- マージ済み PR(30日)
- 19
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaGPU/cuTile.jl のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
JuliaGPU/cuTile.jl#295 · コメント 3 件 ·
メンテナーはふだん 3 日以内に返信
-
`atomic_store_add` of a slice extracted from a tile adds nothing when the slice is under 256 bytesオープン
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 3 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
メンテナーはふだん 3 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
メンテナーはふだん 3 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
メンテナーはふだん 3 日以内に返信
JuliaGPU/cuTile.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
MagneticResonanceImaging/MRIReco.jl#366 ·
メンテナーはふだん 3 日以内に返信
-
`AdamW` gives `NaN` for zero-gradient entries of `Float16` parameters (epsilon underflows to 0)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
FluxML/Optimisers.jl#253 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
JuliaGraphs/GraphNeuralNetworks.jl#736 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
`poissonians` is not public, unlike `brownians` and `jumps`対応中かも @isaacsas が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 86/100
SciML/ModelingToolkit.jl#5389 ·
メンテナーはふだん 2 日以内に返信