CUDA Tile がオープンソース化されました

2025/12/20 5:49

CUDA Tile がオープンソース化されました

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

CUDA Tile IRは、NVIDIA GPU向けのCUDAカーネルを対象としたMLIRベースのオープンソースコンパイラインフラストラクチャです。CUDA Toolkit 13.1でリリースされ、https://developer.nvidia.com/cuda/tile にて文書化されています。本プロジェクトのコアは次のように構成されています。

  • CUDA Tile Dialect – タイルベースGPUコード用MLIR方言。
  • Python bindings – 任意でデフォルトでは無効。
    -DCUDA_TILE_ENABLE_BINDINGS_PYTHON=ON
    で有効化し、LLVMがPythonサポート付きでビルドされていることを確認してください。
  • Bytecode format
    cuda-tile-translate
    を用いてMLIRモジュールから生成されます。
  • Conformance test suite
    cmake --build build --target check-cuda-tile
    で実行します。

Building

  • 必要条件: CMake ≥ 3.20、C++17コンパイラ、Python 3.6+、および
    cmake/IncludeLLVM.cmake
    に指定されたコミットの LLVM/MLIR ソース。
  • LLVM統合オプションは三種類あります。
    1. 自動ダウンロード(デフォルト)。
    2. ローカルソースディレクトリ (
      -DCUDA_TILE_USE_LLVM_SOURCE_DIR
      )。
    3. 事前ビルド済みライブラリ (
      -DCUDA_TILE_USE_LLVM_INSTALL_DIR
      )。
  • 任意フラグ:
    -DCMAKE_BUILD_TYPE=Release
    -DCUDA_TILE_ENABLE_CCACHE=ON
    (LLVMビルドにも伝播)および上記Pythonバインディングフラグ。

Usage

  1. MLIRファイルをバイトコードへコンパイル:
    cuda-tile-translate example.mlir --bytecode-version=13.1 -o example.tilebc
    
  2. 必要に応じて
    tileiras
    でAOT‑compileしてcubinへ変換。
  3. C++ホストプログラム内のCUDAドライバAPIを介してカーネルを実行。

Contributing & Licensing

本プロジェクトはApache License v2.0(LLVM Exceptions)に基づいてライセンスされています。現在、外部からの貢献は受け付けていません;GitHubでIssueやフィードバックを提出できます。

Impact
CUDA Tile IRはタイルベース最適化用のプログラマブルなIRを提供し、GPU開発者がNVIDIAハードウェア上でカーネル性能を向上させる可能性を持ちつつ、既存のビルドパイプラインへの統合を簡素化します。

本文

CUDA Tile IR(CUDA タイル IR)

CUDA Tile IR は、MLIR をベースにした中間表現(IR)とコンパイラインフラストラクチャで、CUDA カーネルの最適化を行うためのものです。
NVIDIA Tensor Core ユニットを対象としたタイルベース計算パターンと最適化に焦点を当て、NVIDIA GPU 上でタイル化された計算を表現・最適化するための包括的なエコシステムを提供します。


コアコンポーネント

コンポーネント説明
CUDA Tile Dialectタイルベース計算用のドメイン固有 MLIR 方言。操作と型がファーストクラスで提供されます。
Python バインディングIR をプログラム的に構築・変換できる完全な Python API。
バイトコードCUDA Tile 方言とバイナリ形式間のシリアライズ/デシリアライズをサポートする効率的な二進表現。
コンフォーマンステストスイートCUDA Tile 仕様への準拠を保証し、方言のセマンティクスを検証する包括的テスト。

CUDA Tile 仕様

仕様書は、NVIDIA GPU 上でタイルベース計算を行うための正式な意味論、操作、および型システムを定義しています。詳細(方言オペレーション、型、変換パス)は CUDA Tile Specification を参照してください。


CUDA Tile のビルド

前提条件

  • CMake ≥ 3.20.0
  • C++17 コンパイラ
  • Python ≥ 3.6(バインディング用)
  • MLIR/LLVM ソースまたは互換コミットのプリビルトライブラリ(
    cmake/IncludeLLVM.cmake
    を確認)
  • Ninja(任意)

クイックスタート

# 設定
cmake -G Ninja -S . -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_ENABLE_ASSERTIONS=OFF \
  -DCUDA_TILE_ENABLE_BINDINGS_PYTHON=ON

# ビルド
cmake --build build

# テスト実行
cmake --build build --target check-cuda-tile

MLIR/LLVM ソースは GitHub から自動で取得されます。


ビルド設定オプション

MLIR/LLVM のビルド方法

オプション説明コマンド
自動ダウンロード(デフォルト)CMake が GitHub から互換コミットを取得。
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release
ローカル LLVM ソース既存ソースを使用;必ず要件のコミットに一致させること。
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DCUDA_TILE_USE_LLVM_SOURCE_DIR=/path/to/llvm/sources
プリビルトライブラリ事前にコンパイルされたライブラリをリンク;必ず要件のコミットに一致。
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DCUDA_TILE_USE_LLVM_INSTALL_DIR=/path/to/llvm/install

Python バインディング

cmake -G Ninja -S . -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DCUDA_TILE_ENABLE_BINDINGS_PYTHON=ON

MLIR/LLVM をソースからビルドする場合、バインディングは自動で有効化されます。
プリビルト LLVM ライブラリを使用する場合は、

-DMLIR_ENABLE_BINDINGS_PYTHON=ON
でビルドされたものを用意してください。

Ccache

cmake -G Ninja -S . -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DCUDA_TILE_ENABLE_CCACHE=ON

テスト

CUDA Tile は LLVM の

lit
を利用しています。テストはデフォルトで有効 (
-DCUDA_TILE_ENABLE_TESTING=ON
) です。実行は以下の通り:

cmake --build build --target check-cuda-tile

プロジェクトへの統合

オプション 1:プリビルトライブラリを利用

include_directories(${CUDA_TILE_INSTALL_DIR}/include)

# 必要なライブラリにリンク
target_link_libraries(your_target PRIVATE
  CudaTileDialect          # 方言オペレーション・型
  CudaTileBytecodeReader   # バイトコード読み込み
  CudaTileBytecodeWriter   # バイトコード書き出し
)

オプション 2:ソース統合

include(FetchContent)

FetchContent_Declare(
  cuda_tile
  GIT_REPOSITORY https://github.com/NVIDIA/cuda-tile.git
  GIT_TAG        main
  SOURCE_DIR     ${CMAKE_BINARY_DIR}/_deps/cuda_tile-src
  BINARY_DIR     ${CMAKE_BINARY_DIR}/_deps/cuda_tile-build
)

# ビルドオプション(必要に応じて設定)
set(CUDA_TILE_USE_LLVM_INSTALL_DIR ${YOUR_LLVM_INSTALL_DIR} CACHE PATH "")
set(CUDA_TILE_ENABLE_BINDINGS_PYTHON ON CACHE BOOL "")
set(CUDA_TILE_ENABLE_TESTING OFF CACHE BOOL "")

FetchContent_MakeAvailable(cuda_tile)

include_directories(${CUDA_TILE_SOURCE_DIR}/include)
include_directories(${CUDA_TILE_BINARY_DIR}/include)

target_link_libraries(your_target PRIVATE
  CudaTileDialect
  CudaTileBytecodeReader
  CudaTileBytecodeWriter
)

例:CUDA Tile IR プログラムの作成と実行

1. MLIR ソース (
example.mlir
)

cuda_tile.module @example_module {
  entry @example_kernel(%data_pr : tile<ptr<f32>>) {
    print "Running example module\n"
    %offsets = iota : tile<128xi32>
    %data_ptr_reshaped = reshape %data_pr : tile<ptr<f32>> -> tile<1xptr<f32>>
    %data_ptr_broadcasted = broadcast %data_ptr_reshaped : tile<1xptr<f32>> -> tile<128xptr<f32>>
    %data_ptr_tensor = offset %data_ptr_broadcasted, %offsets : tile<128xptr<f32>>, tile<128xi32> -> tile<128xptr<f32>>
    %data, %token = load_ptr_tko weak %data_ptr_tensor : tile<128xptr<f32>> -> tile<128xf32>, token
    print "Data: %f\n", %data : tile<128xf32>
    return
  }
}

2. バイトコードへの変換

cuda-tile-translate example.mlir \
  --bytecode-version=13.1 \
  --mlir-to-cudatilebc \
  --no-implicit-module -o example.tilebc

3. AoT(Ahead‑of‑Time)コンパイル(任意)

tileiras --gpu-name sm_100 example.tilebc -o example.cubin

(

sm_100
は対象アーキテクチャに置き換えてください。)

JIT コンパイルを起動時に行う場合は AoT をスキップし、直接

example.tilebc
を使用します。

4. ホストプログラム (
example_host.cpp
)

#include <cuda.h>
#include <cuda_runtime_api.h>
#include <stdio.h>
#include <stdlib.h>

#define CUDA_CHECK(call)                                          \
  do {                                                            \
    CUresult err = call;                                         \
    if (err != CUDA_SUCCESS) {                                   \
      const char *errStr;                                        \
      cuGetErrorString(err, &errStr);                            \
      fprintf(stderr, "CUDA error at %s:%d: %s\n", __FILE__, __LINE__, errStr); \
      exit(1);                                                   \
    }                                                             \
  } while (0)

float data[] = { /* 635 values */ };

int main() {
  CUdevice cuDevice; CUcontext cuContext; CUmodule cuModule;
  CUfunction example_kernel; CUstream stream;

  CUDA_CHECK(cuInit(0));
  CUDA_CHECK(cuDeviceGet(&cuDevice, 0));
  CUDA_CHECK(cuCtxCreate(&cuContext, NULL, 0, cuDevice));
  CUDA_CHECK(cuStreamCreate(&stream, CU_STREAM_DEFAULT));

  CUDA_CHECK(cuModuleLoad(&cuModule, "example.cubin"));
  CUDA_CHECK(cuModuleGetFunction(&example_kernel, cuModule, "example_kernel"));

  CUdeviceptr data_ptr;
  CUDA_CHECK(cuMemAlloc(&data_ptr, sizeof(data)));
  CUDA_CHECK(cuMemcpyHtoD(data_ptr, data, sizeof(data)));

  void *kernel_args[] = {&data_ptr};
  CUDA_CHECK(cuLaunchKernel(example_kernel,
                            1, 1, 1,
                            1, 1, 1,
                            0, stream,
                            kernel_args, NULL));
  CUDA_CHECK(cuCtxSynchronize());

  CUDA_CHECK(cuModuleUnload(cuModule));
  CUDA_CHECK(cuCtxDestroy(cuContext));

  return 0;
}

5. ホストビルド

g++ example_host.cpp -o example \
  -I/usr/local/cuda/include \
  -L/usr/local/cuda/lib64 -lcuda

必要に応じてコンパイラ、インクルード、およびライブラリパスを調整してください。

6. 実行

./example

期待される出力

Running example module
Data: [0.000000, 5.000000, 10.000000, … , 630.000000, 635.000000]

コントリビューションとサポート

現在の状態: プロジェクトは活発に開発中で、明確なロードマップを持っています。
外部からのコントリビューションは 現時点では受け付けていません

バグ報告・フィードバック・体験共有は GitHub Issues で行ってください。皆様の入力が今後の優先順位決定に役立ちます。


ライセンス

CUDA Tile IR は Apache License v2.0(LLVM Exceptions) の下でライセンスされています。

同じ日のほかのニュース

一覧に戻る →

2025/12/26 8:13

おそらく、デフォルト設定が高すぎる可能性があります。

## Japanese Translation: **(すべての重要ポイントを統合し、明確さを保つ)** --- ### 要約 著者は『ロード・オブ・ザ・リング』を声に出して読むことに二か月を費やし、第1部の終わりまで達しました。文ごとに「通常の時間の3倍」を意図的に遅く読むことで、口速で読むアプローチが急ぎを防ぎ、興味を高め、理解・没入・楽しみを深めることに気づきました。トールキンのイメージとムードは、ゆっくり読んだときにのみ心に完全に広がります。 彼はこの洞察を読み以外にも拡張します。食事を通常の速度の1/3または半分に遅らせると、食べ物への感謝が増し、掃除機をかけたり、メールをチェックしたり、リストを書いたりする際も急いで行うより満足度が高くなります。現代生活の無限の消費物は、高速摂取を促進し、本や食べ物、情報の完全な鑑賞を損ないます。「少ないほど良い」という格言は、過剰に早く消費するとその影響力を失います。 著者は、遅らせることで味覚と好みが変わり、濃密な文学作品や自家製料理が加工品より豊かになることもあると指摘します。今日の文化的規範はTikTokクリップ、加工食品、CGI映画などの高速で光沢のある消費を優先し、深い関与を犠牲にしています。 彼は読者に対して、通常速度の約1/3程度と極端に遅く消費する実験を行い、報酬が増える体験を促します。Raptitude読者向けに「アルコール・ソーシャルメディア・スナックなどを一か月間やめる」討論フォーラムを開設し、多くの人が1月に同様のイニシアチブへの関心を示しています。

2025/12/26 10:02

**MiniMax M2.1:** *実世界の複雑タスクに対応するために設計された―多言語プログラミング*

## Japanese Translation: ```markdown ## Summary MiniMaxは新しいM2.1 AI‑nativeモデルをリリースし、Rust、Java、Go、C++、Kotlin、Objective‑C、TypeScript、JavaScriptなど複数言語にわたる実世界のプログラミングとオフィス作業で明確なパフォーマンス向上を提供します。 主な強みは以下の通りです: - **多言語マスタリー**:Claude Sonnet 4.5およびGemini 3 Proを上回るベンチマークスコアを持ち、マルチランゲージコーディングタスクで最高レベル。全体的にはClaude Opus 4.5に近い性能。 - **WebDev & AppDevの進化**:ネイティブAndroid/iOS開発サポート、デザイン理解と美的表現の向上、3D科学シミュレーション、高品質ビジュアライゼーションによる持続可能なワークフロー。 - **インタリーブド・シンキング**:複合指示処理が改善され、オフィス環境での使い勝手を向上。 - **トークン効率的返信**:トークン消費を削減し応答時間を短縮、コーディングワークフローの効率化。 M2.1はまたVIBEベンチマーク(Web, Simulation, Android, iOS, Backend)も導入し、平均スコア88.6でClaude Opus 4.5にほぼ匹敵し、多くのサブセットでSonnet 4.5を上回ります。 Factory、Fireworks、Cline、Kilo、RooCodeなど国際AIプラットフォームからは速度、信頼性、多言語安定性、コスト効率が高いと評価されています。 モデルは2つのAPIバージョンで利用可能です:**M2.1**(フル機能)および **M2.1‑lightning**(同じ結果を持ちつつ高速推論)。どちらも自動キャッシュをサポートし、開発者体験をスムーズにします。 オープンソースウェイトはHugging Faceにホストされており、MiniMaxはさらにオープンソースの提供拡大とエージェントフレームワークやコンテキスト管理ツールへのサポート拡充を計画しています。 開発者と企業向けにM2.1はより効率的なコーディング支援、トークンコストの削減、および強化された多言語機能を提供し、ソフトウェア納品タイムラインの加速やAI開発エコシステムにおける運用費用の低減を可能にします。 ```

2025/12/25 22:02

Windows x86‑64 用の Python 3.15 インタプリタは、ほぼ 15 %速くなる見込みです。

## Japanese Translation: ## Summary Ken Jinは、macOS AArch64(XCode Clang)およびWindows x86‑64(MSVC)のCPythonのターミナル呼び出しインタープリターに関する以前の実績主張を部分的に撤回したものの、測定可能な速度向上を報告しています。macOSでは約5 %、Windowsでは実験的な内部MSVCビルドで最大15–16 %の改善が確認されています。ベンチマークは、「tail‑call threaded」インタープリターが従来のcomputed‑gotoループよりも優れていることを示しています。現代のコンパイラではその差は縮小しますが、実験的なVS 2026ビルドでは幾何平均で約16 %の利得が確認されています。この改善は、短いインタープリター・ループによりコンパイラがヘルパー関数(例:`PyStackRef_CLOSE_SPECIALIZED`)をインライン化し、レジスタ圧力を減らすことから生じています。 ターミナル呼び出しは、Josh HabermanのProtobufブログとHaoran XuによるClangの `__attribute__((musttail))` を使用したコピー&パッチ手法で広まりました。XCode Clangが修正されたCPython 3.14/3.15ではmacOS上で約5 %の速度向上が示され、Python 3.15「What's New」には長いスクリプトに対して最大40 %の速度向上が記載されています。MSVCチーム(Chris Eibl、Brandt Bucher)がリリースしたVisual Studio 2026はターミナル呼び出しをサポートし、具体的な利得をもたらします:spectralnorm_tc 1.48倍速、nbody_tc 1.35倍速、bm_django_template_tc 1.18倍速、xdsl_tc 1.14倍速。 速度向上はPython 3.15まで継続すると予想されます。機能がロールバックされない限り、macOSのバイナリにはターミナル呼び出しが有効化された状態で配布され、VS 2026を使用したWindowsビルドでも同様の利得が期待できます。CPythonコミュニティはさらにビルドフラグ(`--tail-call-interp`)を洗練させ、プロファイルガイド付き最適化(PGO)を統合して性能を向上させる可能性があります。 CPUバウンドのPythonワークロード(科学計算、ウェブフレームワークなど)を実行するユーザーは、わずかな速度改善に気付くかもしれません。Pythonバイナリを配布する企業はコード変更なしで高速な実行ファイルを提供でき、Visual Studioを使用するWindowsの開発者もランタイム効率の向上から恩恵を受けるでしょう。

CUDA Tile がオープンソース化されました | そっか~ニュース