mcpField
T
tilegym-converting-cutile-to-julia

tilegym-converting-cutile-to-julia

github.com/nvidia開発3.8k1.5k 回インストール今日更新
リポジトリ

tilegym-converting-cutile-to-julia について

Julia と GPU カーネルを扱う開発者向けに、cuTile Python カーネルを独立した cuTile.jl カーネルへ変換する手順を示すスキルです。API 対応表、テスト済みの実装例、検証とデバッグの資料を含みます。

主な機能

  1. 01Python から Julia への変換手順
  2. 02API 対応表と重要ルール
  3. 03テスト済みカーネルの参照例
  4. 04Julia ネイティブのテストガイド
  5. 05静的検証とデバッグ

活用シーン

  1. 01既存の cuTile Python カーネルの移植
  2. 02行列積や softmax カーネルの変換
  3. 03Julia カーネルのコンパイルエラー調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nvidia/skills --skill tilegym-converting-cutile-to-julia

インストール後、Claude Code で/tilegym-converting-cutile-to-juliaを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
examples/01_add/
cutile_julia.jl
cutile_python.py
examples/02_matmul/
cutile_julia.jl
cutile_python.py
examples/03_softmax/
cutile_julia.jl
cutile_python.py
references/
api-mapping.md
critical-rules.md
debugging.md
testing.md
scripts/
validate_cutile_jl.py
translations/
workflow.md

詳細

cuTile Python から cuTile.jl(Julia)への変換

@ct.kernel の Python カーネルを、Julia の function ... end 形式の cuTile.jl カーネルに変換します。

ワークフローの選択

アーキテクチャ

Julia カーネルは単独で動作し、Python ブリッジや pytest との連携はありません。Julia サブプロジェクトはリポジトリのルートにある julia/ に配置され、依存関係の管理には専用の Project.toml を使用します。

julia/                          # Self-contained Julia sub-project
├── Project.toml                # Dependencies: CUDA.jl, cuTile.jl, NNlib.jl, Test
├── kernels/                    # cuTile.jl kernel implementations
│   ├── add.jl                  # ← Ground-truth: 1D element-wise with alpha scaling (tensor+tensor, tensor+scalar)
│   ├── matmul.jl               # ← Ground-truth: 2D tiled MMA, standard Julia layout (M,K)×(K,N)→(M,N)
│   └── softmax.jl              # ← Ground-truth: 3 strategies (TMA, online, chunked) using ct.load/ct.store
└── test/                       # Julia-native tests (using Test stdlib)
    ├── runtests.jl             # Test runner entry point
    ├── test_add.jl
    ├── test_matmul.jl
    └── test_softmax.jl

信頼できる参照先:コンパイルが成功し、テストに合格するパターンについては、必ず julia/kernels/*.jl と julia/test/*.jl を確認してください。これらは、動作する cuTile.jl コードの標準的な例です。

手順

  1. Python カーネルを分析します。パターン、形状、データ型、演算を特定します。
  2. Julia カーネルを作成します。cuTile.jl カーネルとブリッジ関数を julia/kernels/<op>.jl に記述します。
  3. カーネルのシグネチャを変換します(translations/workflow.md のフェーズ 2 を参照)。
  4. カーネル本体を変換します(references/api-mapping.md と references/critical-rules.md を適用します)。
  5. Julia テストを作成します。Test 標準ライブラリと参照実装の NNlib.jl を使い、julia/test/test_<op>.jl に記述します。
  6. テストを登録します。julia/test/runtests.jl に include(...) を追加します。
  7. 検証します。同梱のバリデーターを実行します:python <skill-dir>/scripts/validate_cutile_jl.py <file.jl>
  8. テストします。julia --project=julia/ julia/test/runtests.jl を実行します。

変換後の検証を含む変換チェックリスト全体については、translations/workflow.md を参照してください。

⚠️ 主な落とし穴

特に危険な変換ミスです。ルール全 17 件については、references/critical-rules.md を参照してください。

#落とし穴簡単な修正方法
1Julia に ct.full() は存在しませんfill(val, shape)、zeros(T, dims...)、または ones(T, dims...) を使用します
2タイルに対する max(a, b) → IRErrormax.(a, b)(ブロードキャストドット)を使用します
3IRStructurizer に言及する IRError / MethodErrorコンパイラーのバグです。最小限の再現コードを添えて上流に報告します
4ct.launch の引数の順序を誤ってもエラーにならない引数は位置で渡されるため、カーネルのシグネチャと正確に一致させます
5order を指定した ct.load でインデックス位置が誤るorder は形状とインデックスの両方を再マッピングします(重要ルール 16)

変換例

リリース済みの julia/kernels/ 内の Julia カーネルに対応する、Python から Julia への並列変換例です。各ディレクトリには、変換前の cutile_python.py と変換後の cutile_julia.jl が含まれています。

#例主なパターン参照する場面
01add1D の ct.load/ct.store、アルファスケーリング、スカラーのブロードキャスト、fill/zeros、キーワード引数を使った load/store出発点。基本的な TMA と要素単位のパターン
02matmulmuladd、TF32 変換、for を使った K ループ、2D スウィズル、標準的な Julia レイアウト、ct.@compiler_optionsMMA/テンソルコア演算
03softmax永続的なスケジューリング、for ループ、gather/scatter、padding_mode、複数パス大規模テンソルのリダクションパターン

これらの例は、リリース済みの julia/kernels/ 内のカーネル(add.jl、matmul.jl、softmax.jl)に対応しています。例は学習用に簡略化されています。標準的なテスト済み実装については、必ず julia/kernels/*.jl を確認してください。

参考資料

カテゴリドキュメント内容
ワークフローtranslations/workflow.mdtodo リスト、検証ループ、チェックリストを含む完全な変換ワークフロー
ルールreferences/critical-rules.mdcuTile Python から Julia への変換に関する 17 の重要なルール
APIreferences/api-mapping.mdPython↔Julia の双方向 API マッピングとカーネルパターン
テストreferences/testing.mdJulia ネイティブのテストパターン、許容誤差、失敗の診断
デバッグreferences/debugging.mdJulia 固有のエラー診断と IR デバッグコマンド
スクリプトscripts/validate_cutile_jl.pyJulia のアンチパターンに対する静的検証(実行してください)
正解データjulia/kernels/*.jl + julia/test/*.jlコードベース内で実際に動作する実装

環境のセットアップ

前提条件 — Julia:このスキルには、julia/Project.toml の [compat] julia に宣言されているバージョンの Julia が必要です。julia --version が見つからない場合、または指定バージョンより古い場合は、https://julialang.org/install/ の公式 Julia サイトから、お使いの OS 向けに検証済みのインストーラー手順に従ってインストールしてください。julia --version が要件を満たしたら、以下に進みます。

次に、リポジトリのルートから実行します。

# Install Julia dependencies declared in julia/Project.toml
julia --project=julia/ -e 'using Pkg; Pkg.instantiate()'

# Run tests
julia --project=julia/ julia/test/runtests.jl

要件:

  • Julia(julia/Project.toml の [compat] julia に宣言されている最小バージョン)
  • CUDA 13.1 以降のドライバー
  • Blackwell GPU(計算能力 10 以上)
  • 依存関係は julia/Project.toml で管理します:CUDA.jl、cuTile.jl、NNlib.jl、Test

コメント