mcpField
T
tilegym-converting-cutile-to-julia

tilegym-converting-cutile-to-julia

github.com/promptingcompany開発039 回インストール17 週間前に更新
リポジトリ

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

tilegym-converting-cutile-to-juliaは、cuTileのPythonカーネルをJuliaのcuTile.jlカーネルへ変換する開発スキルです。API対応表、変換規則、検証済み例、Julia標準のテスト手順、デバッグ資料を備えています。

主な機能

  1. 01Python cuTileからJuliaへの変換手順
  2. 02API対応表と重要ルール
  3. 03add・matmul・softmaxの例
  4. 04Julia標準テストの案内
  5. 05静的検証とエラー調査

活用シーン

  1. 01Python GPUカーネルのJulia移植
  2. 02行列積やsoftmaxカーネルの変換
  3. 03Juliaカーネルのテスト作成
  4. 04コンパイルや数値の不一致の調査

インストール

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

$npx skills add https://github.com/promptingcompany/nv-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

コメント