「Futhark」の入門指南

2026/05/16 18:50

「Futhark」の入門指南

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

要約

Japanese Translation:

Futhark は、GPU 実験を目的に設計された IT ランゲージであり、「Parallel Programming in Futhark」書籍および基本計算から複雑な科学シミュレーションに至る厳選された例を通じて、単純なプログラムから高度な並列計算プロジェクトまでの構造化された学習経路を提供しています。汎用言語とは異なり、多様な例(图形処理:「Diving Beet 粒子シミュレーター」、高パフォーマンスシステム:「Futball のボール衝突回避」、フラクタル:「Futswirl」、モンテカルロ法による πの推定)を通じてハードウェアアクセラレーションへの直感的理解を提供します。言語エコシステムは、Dex(依存型 typed フルンシャル配列言語)からのポートによって恩恵を受け、初心者がインタラクティブなウェブカメラフィルター(Futcam)やブルートフォースレイトレーサー(Futracer)を構築するための堅牢な基盤を提供しています。主な機能には、自動微分、アレイ、タプル、レコード、並列処理、総和型、ループ、そして AD ベンチマーク行列乗算、Radix/Merge ソート、複素数、乱数、ガウシアンぼかしなどの高度なトピック、および Python インテグレーションが含まれます。Literate Futhark は、ビデオ生成、ファイル I/O、gnuplot プロットングをサポートします。科学計算の例には、格子ボルツマン法(Palathark)、Peter Shirley のレイ 트레이シング書籍、Filecoin 用の Poseidon ハッシュ関数を実装する Neptune などがあります。OCaml-GPU ワードカウント例などの外部ツールは相互運用性を示し、Pareas コンパイラやリアルタイム非実装の BVH レイトレーシングなどの高度なプロジェクトは専門的なアプリケーションを強調しています。究極的には、Futhark は理論的なコンピュータサイエンスと実用的な GPU 利用を結びつけ、単純なスクリプトから高パフォーマンスシミュレーションまでを容易に可能にします。

本文

以下は、注釈付きプログラムのコレクションを通じて実践的に Futhark を紹介するものです。これらプログラムは、概ね複雑さが増す順に並んでいます。これらのプログラムをインタプリタに読み込んで実行し、試してみることをお勧めします。言語についての体系的な導入としては、『Futhark における並行プログラミング』がより適しているかもしれません。さらに多くの例をお求めの場合は、我々が実装したベンチマークもご参照ください。また、Futhark を採用しているプロジェクトのリストも Maintaining しております。いくつかの実例プログラムでは、プロットやグラフィックの描画のためのディレクティブを使用しています。

基本言語機能

  • ファクターIAL 関数を用いた基本的な使用法
  • プライミティブ値
  • 異なる型へ値の変換
  • 数学関数
  • 関数(第 1 級)
  • アレイ(配列)
  • 最小値と最大値
  • 型アスペクション(型注釈)
  • 基本的な並行性
  • タプルとレコード
  • サイズ強制変換(size coercions)
  • リージョン(範囲)
  • バッククォート演算子
  • スキャンと削減計算
  • パラメトリック多態性
  • 多態的な最小値と最大値
  • ガザーとスカッター(収集と散開)
  • 排他的スキャン(exclusive scans)
  • 排他的累積和(前項和)
  • パイプ演算子
  • 複合リージョン
  • 和型(Sum types)とパターンマッチング
  • ループ
  • アレイの扁平化・再構成(Flattening and Unflattening)
  • インプレース更新(In-place updates)

プログラミング技法

  • ベンチマーク実行
  • 条件を満たす要素数のカウント
  • 最小値のインデックス取得(argmin)
  • フィルタ結果の削減計算
  • フィルタ結果の散開計算
  • サイズパラメータ
  • 行列乗算
  • ペアワイズ L₁距離の計算
  • アウトプロダクト(外積)
  • アレイの等価性比較
  • 探索(サーチ)
  • オプション型(Option type)
  • ヒストグラム計算
  • 移動平均
  • 平均値(Means)
  • アレイ内の 2 つの要素交換
  • 整数対数(integer logarithm)
  • レジッドソート
  • キーによるレジッドソート
  • メージソート
  • 重複要素の除去
  • 抽象データ型
  • 複素数
  • 結合律の検出
  • 単位元を必要としない削減・スキャン計算
  • ホール(穴埋め)
  • カハン総和法
  • ランダム数生成
  • ガウシアンぼかし(Python との統合例)
  • 3 次元ベクトル
  • ノミナル型の模倣
  • 三角行列
  • バイナリサーチ
  • デュアル数を用いた自動微分(AD)
  • 分散計算
  • 括弧のマッチングチェック
  • 多項式の評価
  • 直線フィッティング
  • MNIST データファイルのデコード

自動微分

  • フォワードモードの自動微分
  • リバースモードの自動微分
  • ニュートン法

リテラット・フサート(Literate Futhark)

  • リテラット・フサートの基本的な利用法
  • リテラット・フサートによるビデオ生成
  • リテラット・フサートを用いたファイルの読み書き

プロッティング リテラット・フサートでは gnuplot を直接使用できます。以下は簡潔で一般的なケースを示す例です。

  • ヒストグラムのプロット

Dex からの移植例 以下の例は、ループ処理を記述する方法がやや異なる依存型付関数型アレイ言語「Dex」からポートされたものです。可能な限り、元の命名規則とプログラミングスタイルを保つよう尽力しました。

  • Prelude(予備定義)
  • マンデルブロ集合の生成
  • 多段階のレイトレーサー
  • モンテカルロ法による円周率の推定
  • ブラウン運動のシミュレーション
  • シエフスキィ三角形の生成

外部から引用された例

  • OCaml-GPU による単語数カウント(Futhark を呼び出す例)

Futhark を使用するプロジェクト 書かれた Futhark コードの大部分はまだ、Futhark の自テストスイートやベンチマークスイートに過ぎない可能性があります。しかし、コンパイラのテスト以外の目的で、「このツールが課題に適している」と判断されて Futhark で記述されたプログラムも存在します。以下は可能な限り網羅したリストです:

  • Diving Beet: 落下する砂をシミュレートするシンプルなパーティクル・シミュレータ・トーイであり、主に美しいビジュアル効果を生み出すことを目的としています。詳細と動画はブログ記事で確認できます。
  • Futball: ボールに当たらないよう回避するゲームです。レンダリングエンジンは Futhark で書かれたレイトレーサーです。
  • Futcam: ウェブカメラストリームに、インタラクティブに設定可能なフィルタのスタックを適用するアプリケーションであり、フィルタの実装に Futhark を使用しています。
  • Futracer: 比較的低速ですが完全な力によるレイトレーサーで、Futhark で実装されています。
  • Futswirl: イテレート関数系に基づくフラクタルジェネレーターです。
  • Neptune: Filecoin を対象にチューニングされた Poseidon ハッシュ関数の実装で、GPU 部分は Futhark で実装されています。
  • Palathark: 格子ボルツマン法の実装(Futhark ベース)。
  • 「週末でレイトレーシング in Futhark」と「The Next Week in Futhark」: Peter Shirley の書籍シリーズに基づく実装です。これらはリアルタイムレイトレーサーではありませんが、高度なエフェクトをサポートし、BVH トリートなどの加速構造を活用しています。
  • Pareas: Futhark と C++ で実装されたコンパイラです。

同じ日のほかのニュース

一覧に戻る →

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 ライセンスの下で配布されており、ユーザーにはソフトウェアを修正し共有する明確な法的権利が保証され、そのオープンソース性が維持されています。

「Futhark」の入門指南 | そっか~ニュース