加速——高演算能力向けの埋め込み型言語による配列計算

2026/05/16 22:42

加速——高演算能力向けの埋め込み型言語による配列計算

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

要約

Japanese Translation:

Data.Array.Accelerate は、マップ、リダクション、置換などのパラメータ付き集団演算を用いて、多次元の規則的な配列に対する高性能計算のための埋め込み言語を定義する。同ライブラリは LLVM PTX を用いた NVIDIA GPU(グラフィックス処理ユニット)における CUDA 対応のコンパイル機能を有し、最適化機能として robust な性能を発揮する。また、マルチコア CPU 上での実行も可能である。Hackage および GitHub(AccelerateHS/accelerate)からアクセス可能で、インストールには GHCup ツールチェーンが用いられる。BLAS や FFT などの科学計算エコシステムとシームレスに統合される。エコシステムには

accelerate-llvm-native
(CPU)、
accelerate-llvm-ptx
(GPU)、
accelerate-bignum
accelerate-fft
accelerate-blas
など、ドメイン固有のツールや各種 I/O ユーティリティ(
accelerate-io*
)などを含む多数の追加パッケージが含まれる。使用可能な例は多岐にわたり、単純な点積計算から LULESH ベンチマーク、分子動力学ソルバー、N-体シミュレーション、エッジ検出やレイ・トレーシングなどのグラフィックスアプリケーションまでをカバーする。プロジェクトはコア開発者である Trevor McDonell および Manuel Chakravarty の指導のもと、より広いコミュニティによって支えられており、継続的な新機能の統合と要望された機能の実装を通じて、迅速なイノベーションを可能にする動的な環境を提供する。ただし、API はまだ安定していない点に注意が必要であり、完全な成熟に至るまでインターフェースの一部は変更の対象となり得るため、ライブラリの進化に合わせてコードの適応が求められる。

Text to translate:

Data.Array.Accelerate defines an embedded language for high-performance computing on multi-dimensional regular arrays using parameterised collective operations like maps, reductions, and permutations. It compiles computations online to run on multicore CPUs or CUDA-enabled NVIDIA GPUs (compute capability 3.0+), utilizing LLVM PTX for graphics processing units as part of its robust optimization capabilities. The library is accessible via Hackage and GitHub (AccelerateHS/accelerate) and relies on the GHCup toolchain for installation, integrating seamlessly with scientific ecosystems like BLAS and FFT. Its ecosystem includes extensive add-on packages such as

accelerate-llvm-native
for CPUs,
accelerate-llvm-ptx
for GPUs, and domain-specific tools like
accelerate-bignum
,
accelerate-fft
,
accelerate-blas
, and various I/O utilities (
accelerate-io*
). Users can leverage this framework with a vast array of examples ranging from simple tasks like dot products to complex benchmarks including LULESH, molecular dynamics solvers, N-body simulations, and graphics applications like edge detection and ray-tracing. Led by core developers Trevor McDonell and Manuel Chakravarty along with the broader community, the project supports a dynamic environment for rapid innovation through continuous integration of new capabilities and requested features. However, users should note that the API is not yet stable; parts of the interface remain subject to change before full maturity is reached, requiring developers to adapt their code as the library evolves.

本文

高速並列配列のための Haskell

Data.Array.Accelerate は、Haskell における高性能計算向けに配列計算の埋め込み言語を定義しています。多次元の規則的な配列に対する計算は、パラメータ付きの集団演算(例:マッピング、演算子簡約、置換)の形式で表現されます。これらの計算はオンラインコンパイルされ、多様なアーキテクチャ上で実行可能です。

詳細については以下の論文をご覧ください:

  • 「Multicore GPUs を用いた Haskell 配列コードの高速化」
  • 「純粋関数型 GPU プログラムの最適化(スライド)」
  • 「外部コードの埋め込み」
  • 「型安全なランタイムコード生成:Accelerate から LLVM へ(スライド)」「同会議でのビデオ発表」
  • 「ストリーミング非規則配列(ビデオ)」

また、Accelerate に関するいくつかのパッチェンのスライドもあります:

  • 「Haskell における高性能計算のための埋め込み言語」
  • 「Accelerate を用いた Haskell による GPGPU プログラミング(スライド)」「同ワークショップでのビデオ発表」

Simon Marlow 著の書「Parallel and Concurrent Programming in Haskell」第 6 章には、Accelerate のチュートリアル紹介が収められています。Trevor L. McDonell 氏による博士論文には、フロントエンド最適化および CUDA バックエンドに関する設計と実装の詳細が記載されています。

目次

  • 高速化された配列計算のための埋め込み言語
  • 簡単な例
  • 入手可能性
  • 追加コンポーネント
  • 要件
  • ドキュメント
  • 事例
  • 当チームは誰か?
  • メーリングリストと連絡先
  • Accelerate の引用について
  • 尚未完の機能

A simple example(簡単な例)

まず、単精度浮動小数点数からなる 2 つのベクトルの内積を計算する事例を見てみましょう:

dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float)
dotp xs ys = fold (+) 0 (zipWith (*) xs ys)

型定義を除けば、このコードはリスト(Float のリスト)に対する対応する Haskell コードとほとんど同じです。型指定は、当該計算がパフォーマンス向上のためにオンザフライでコンパイル可能であることを示しています。例えば、

Data.Array.Accelerate.LLVM.PTX.run
を使用すれば、GPU への実行負荷をオンラインで行うことも可能です。

Availability(入手可能性)

Accelerate パッケージは以下の方法で入手できます:

  • Hackage:
    accelerate
    — Cabal ファイルに単独して追加するだけです。
  • GitHub: AccelerateHS/accelerate — ソースコードは
    git clone https://github.com/AccelerateHS/accelerate.git
    で取得可能です。

Haskell ツールチェーンのインストールについては、GHCup をお試しください。

Additional components(追加コンポーネント)

以下のサポートされている拡張機能は、独立したパッケージとして入手できます:

  • accelerate-llvm-native: マルチコア CPU をターゲットとするバックエンド
  • accelerate-llvm-ptx: CUDA 対応 NVIDIA GPU をターゲットとするバックエンド。compute capability 3.0 以上を持つ GPU を必要とします(Wikipedia の表を参照ください)
  • accelerate-examples: Accelerate の利用例を示す計算ケルノおよび完全なアプリケーション、並びにリグレッションテストスイート(関数テストおよびパフォーマンステスティングをサポート)

フォーマット間の変換用コンポーネント:

  • accelerate-io: ローカルポインタ間への直接データコピー用
  • accelerate-io-array: 不変配列向け
  • accelerate-io-bmp: 圧縮されていない BMP イメージファイル向け
  • accelerate-io-bytestring: コンパクトで不変のバイナリデータ向け
  • accelerate-io-cereal: cereal を用いた配列のバイナリシリアライゼーション
  • accelerate-io-JuicyPixels: 各種画素形式のイメージ向け
  • accelerate-io-repa: もう一つの Haskell の高速並列配列ライブラリとの連携
  • accelerate-io-serialise: serialise を用いた配列のバイナリシリアライゼーション
  • accelerate-io-vector: 効率的なボックス化されたおよびアンボックス化された一次元配列向け

その他コンポーネント:

  • accelerate-fft: FFT インプリメンテーション、最適化済みの実装に対する FFI バインディング付き
  • accelerate-blas: BLAS および LAPACK 演算子、最適化済みの実装に対する FFI バインディング付き
  • accelerate-bignum: 固定幅の大規模整数算術
  • colour-accelerate: Accelerate におけるカラー表現(RGB、sRGB、HSV、HSL)
  • containers-accelerate: ハッシングに基づくコンテナ型
  • gloss-accelerate: Gloss イメージの生成
  • gloss-raster-accelerate: リスターイメージおよびアニメーションへの並列レンダリング
  • hashable-accelerate: ハッシュ値に変換できる型のクラス
  • lens-accelerate: Accelerate 型に対するレンズ演算子
  • linear-accelerate: Accelerate における線形ベクトル空間
  • mwc-random-accelerate: 高品質擬似乱数で埋められた Accelerate 配列の生成
  • numeric-prelude-accelerate: numeric-prelude の Accelerate への lifting
  • wigner-ville-accelerate: Wigner-Ville タイム−周波数分布

これらすべては Hackage で入手可能です。

Documentation(ドキュメント)

Hackage に個別のパッケージリリースが提供される際、Haddock ドキュメントも添付されておりリンクされています。

また、ライブラリで使用されている HOAS(higher-order abstract syntax)による de-Bruijn 変換の背後にある考え方は、別途説明されています。

Examples(事例)

accelerate-examples

accelerate-examples
パッケージは、計算ケルノの範囲と少数の完全アプリケーションを提供します。含まれる事例には:

  • Canny エッジ検出アルゴリズムの実装
  • 対話的なマンデルブロ集合ジェネレーター
  • 固体粒子間の重力引力による N ボディシミュレーション
  • PageRank アルゴリズムの実装
  • シンプルなレイトラサ(ray-tracer)
  • 安定流体流れのパーティクルベースシミュレーション
  • セラリアオオトマタ(cellular automata)シミュレーション
  • パスワードリカバリツール(MD5 ハッシュ辞書探索用)

これらを実行するには、Hackage から

cabal get accelerate-examples
でソースを取得するか、git リポジトリをクローンし、個別の実行ファイルに対して
cabal run
を使用してください。

LULESH

LULESH-accelerate
は、Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics(LULESH)ミニアプリケーションの実装です。LULESH は ALE3D などの典型的な水力学コードを表しますが、非常に簡略化されたアプリケーションであり、非構造ヘキサメデッシュ上の Sedov 爆発問題をハードコーディングで解決するように設計されています。

追加事例
Accelerate ユーザー自身もいくつかの有意義なアプリケーションを構築しています。ご自身の事例を追加いただけると幸いです:

  • Jonathan Fraser: GPUVAC — 明示的なアドベクションマグネトハイドロダイナミクスシミュレーション
  • David van Balen: Sudokus — サンドク solver
  • Trevor L. McDonell: lol-accelerate — Λ ○ λ(Lol)ライブラリ向けのリングベース格子暗号のバックエンド
  • Henning Thielemann: patch-image — 重なり合うイメージのコラージュ合成
  • apunktbau: bildpunkt — レイマーキング距離場レンダラー
  • klarh: hasdy — Accelerate を用いた Haskell の分子動力学
  • Alexandros Gremm: 2014 CSCS サマースクールの一部として Accelerate を使用(コード)

Who are we?(当チームは誰か?)

Accelerate チーム(過去のおよび現在のメンバー)は以下の通りです:

  • Manuel M T Chakravarty (@mchakravarty)
  • Gabriele Keller (@gckeller)
  • Trevor L. McDonell (@tmcdonell)
  • Robert Clifton-Everest (@robeverest)
  • Frederik M. Madsen (@fmma)
  • Ryan R. Newton (@rrnewton)
  • Joshua Meredith (@JoshMeredith)
  • Ben Lever (@blever)
  • Sean Seefried (@sseefried)
  • Ivo Gabe de Wolff (@ivogabe)
  • Tom Smeding (@tomsmeding)

Accelerate の維持管理者および主要開発者は Trevor L. McDonell です(連絡先:trevor.mcdonell@gmail.com)。

Mailing list and contacts(メーリングリストと連絡先)

  • メーリングリスト: accelerate-haskell@googlegroups.com(利用に関する討論および開発に関する話題の両方を歓迎します)。登録は Accelerate Google Groups ページで行ってください。
  • バグレポートおよび課題追跡:GitHub プロジェクトページ
  • チャット:gitter をご利用ください

Citing Accelerate(Accelerate の引用について)

Accelerate を学術研究で使用する際は、以下の論文を引用することをお勧めします(ただし必須ではありません):

  1. Manuel M. T. Chakravarty, Gabriele Keller, Sean Lee, Trevor L. McDonell, and Vinod Grover. "Accelerating Haskell Array Codes with Multicore GPUs." In DAMP '11: Declarative Aspects of Multicore Programming, ACM, 2011.
  2. Trevor L. McDonell, Manuel M. T. Chakravarty, Gabriele Keller, and Ben Lippmeier. "Optimising Purely Functional GPU Programs." In ICFP '13: The 18th ACM SIGPLAN International Conference on Functional Programming, ACM, 2013.
  3. Robert Clifton-Everest, Trevor L. McDonell, Manuel M. T. Chakravarty, and Gabriele Keller. "Embedding Foreign Code." In PADL '14: The 16th International Symposium on Practical Aspects of Declarative Languages, Springer-Verlag, LNCS, 2014.
  4. Trevor L. McDonell, Manuel M. T. Chakravarty, Vinod Grover, and Ryan R. Newton. "Type-safe Runtime Code Generation: Accelerate to LLVM." In Haskell '15: The 8th ACM SIGPLAN Symposium on Haskell, ACM, 2015.
  5. Robert Clifton-Everest, Trevor L. McDonell, Manuel M. T. Chakravarty, and Gabriele Keller. "Streaming Irregular Arrays." In Haskell '17: The 10th ACM SIGPLAN Symposium on Haskell, ACM, 2017.

Accelerate は主に学術研究者によって開発されており、引用が極めて重要です。また、引用いただくことにより Accelerate の認知度と潜在的なユーザー(そして開発者)ベースを拡大できるため、これはすべての Accelerate ユーザーにとっての利点となります。ありがとうございます!

What's missing?(尚未完の機能)

以下は現在実装されていない機能の一覧です:

  • 初期化 API(API の一部が後のリリースで変更される可能性があります)
  • より多くの機能... ご連絡ください!

同じ日のほかのニュース

一覧に戻る →

2026/05/17 7:25

MCP はようページ

## Japanese Translation: HybridLogic は、ユーザーが直面している摩擦(直接ブラウザ経由で Model Context Protocol (MCP) サーバーにアクセスすると、生の JSON を伴う 401 Unauthorized エラーが表示されるという混乱を引き起こす問題)を解消しました。根本的な原因は、ユーザーが MCP エンドポイントをブラウザで開こうとするのではなく、LLM クライアントに統合しようとしていた点にあります。エンジニアらは、軽量かつ「ハック的」なリダイレクトを実装し、Accept ヘッダーが text/html を示すが application/json または text/event-stream を示さない場合に GET /mcp リクエストに対して HTML ページを返すようにしました。このページは、ユーザーがブラウザで表示する代わりにサーバーを LLM クライアントに追加することを案内します。デプロイ以降、サポートチケットは大幅に減少し、顧客サクセスの満足度が向上し、統合も早まりました。この解決策には運用負荷は一切必要なく、すべてのクライアントに対してコネクタを構築することなく、MCP 仕様の制限を補完するための手動アプローチの有効性を検証しました。AI も追跡もなく Luke Lanchester が作成した HybridLogic のホームページでは、顧客がより素早く環境整備を開始できるようになり、進化している仕様と現実世界のオンボーディングの間の不満に対処しています。

2026/05/17 2:12

キオクシアとデルが、薄型の 2 ラックユニット(2 RU)サーバーに 10 ピタバイトのストレージを収容することに成功。

## Japanese Translation: Dell は、AMD EPYC 9005 プロセッサを搭載し、最大 5 個の 400 Gbps NIC をサポートする新型 PowerEdge R7725xd サーバーに、Kioxia の高容量 QLC SSD「LC9」を統合しました。1 台あたりに E3.L フォーマットの 245.76 TB NVMe ドライブを 40 個使用することで、コンパクトな 2 RU フットプリント内で驚異的な 9.8 ペタバイトの総容量を実現しています。Dell の「コンピューティングおよびネットワーク担当執行副社長」Arun Narayanan氏によれば、この設計は AI インフラのスケーリングに不可欠なストレージ密度と電源効率を最適化しています。また、Kioxia アメリカの SSD 事業部の「執行副社長兼統括経営責任者」Neville Ichhaporia氏は、「顧客は物理空間のごく一部で巨大なインジェストストリームを展開することで、総保有コスト(TCO)を大幅に改善できます」と指摘しており、このサーバーを 20 台搭載したラックでは最大 196 PB のストレージを収容可能です。Micron(6600 ION)、SanDisk(UltraQLC SN670)、SK Hynix の Solidigm(AIN D)が独自の 256 TB クラスのドライブを開発し、Samsung は 1 PB のロードマップへ進んでいる中で、Dell がこのコンパクトな QLC 技術を採用することは、現代の AI デプロイメントに不可欠な高密度ストレージソリューションへの中道的な歩みとなります。 ## 欠落している要素(ある場合): * 競合他社の特定の製品名(Micron 6600 ION、SK Hynix AIN D、SanDisk UltraQLC SN670)および Samsung のロードマップ詳細は省略されています。 ## 推測・飛躍(ある場合): 重要なのは無し;要約は提供された点を正確に反映しており、根拠のない主張を行っていません。

2026/05/13 19:37

Windows Subsystem for Linux(WSL)

## Japanese Translation: WSL9x は、再ブートなしで Windows 9x カーネル内に最新の Linux カーネル バージョン 6.19 を協調的に実行する革新的なプロジェクトです。標準的な仮想化とは異なり、本システムはユーザースペースではなくスーパーバイザーモード(リング 0)で動作し、Windows 9x API を直接呼び出すことで古いオペレーティングシステムの深刻なハードウェア制限を回避します。このシームレスな統合は、以下の 3 つの主要コンポーネントにより実現されています:修正済み Linux カーネル(win9x-um-6.19 ブランチから)、専用 VxD ドライバ、DOS ベースのクライアントプログラム (`wsl.com`) です。特に重要なのは、元々の中断ベクトルテーブルでは適切なシステムコールに不十分なため、`int 0x80` の相互作用を効率的に管理するためにはジェネラルプロテクションフォルトハンドラへの依存である点です。Linux カーネルはユーザモード Linux から派生しており、リング 0 で実行するように変更されています。複雑な Windows 9x カーネル統合とコンテキストスイッチング論理の大部分はこのカスタムレイヤーに存在します。環境を設定するには、クライアントを起動する前にANSI ドライバ(例:`nnansi.com`)をロードし、色などのターミナル出力機能をサポートする必要があります。また、利用可能なシステムを作成するには、事前にインストール済み Windows 9x ベースイメージ (`hdd.base.img`) からハードディスクイメージ (`hdd.img`) を構築して生成する必要があります。本書全体は GPL-3 ライセンスの下で配布されており、ユーザーにはソフトウェアを修正し共有する明確な法的権利が保証され、そのオープンソース性が維持されています。

加速——高演算能力向けの埋め込み型言語による配列計算 | そっか~ニュース