xtensor-stack/xtensor

C++ tensors with broadcasting and lazy computing

何を解決するか

xtensor は多次元配列式を用いた数値解析用の C++ ライブラリです。Python の NumPy に似た機能を C++ に持ち込み、Python のオーバーヘッドを回避しつつ、Python エコシステムから来た開発者にとってなじみやすい API を維持します。

動作方法

このライブラリは拡張可能な式システムを用いて 遅延ブロードキャスト を実装しています。計算結果を即座に評価するのではなく、加算や正弦関数などの演算は xexpression オブジェクトを返します。実際の値は、結果が xarrayxtensor などのコンテナにアクセスまたは代入された時点で計算されます。

主に以下の2つのコンテナ型を提供しています:

  • xarray:実行時におけるリサイズが可能な動的コンテナで、NumPy 配列に似ています。
  • xtensor:次元がコンパイル時時点で設定されるコンテナで、形状とストライドをスタックに割り当て可能であり、パフォーマンス向上を実現します。

対象ユーザー

多次元配列の操作やブロードキャスト機能が必要な、数値解析、データサイエンス、ハイパフォーマンスコンピューティングを行う C++ 開発者を対象としています。

特徴

  • NumPy を意識した API:C++ 標準ライブラリの慣例を踏襲しつつ、NumPy の配列プログラミングモデルを模倣しています。
  • 遅延計算:アクセス時にのみ式を評価することで、不要な計算を削減します。
  • ブロードキャスト:NumPy のルールに従い、異なる形状の配列間での要素単位の演算をサポートします。
  • 相互運用性:アダプタを介して NumPy、Julia、R のデータ構造をインプレースで処理できます。
  • SIMD 加速xsimd と統合し、SSE、AVX、AVX512、Neon 指令セットを活用してパフォーマンスを向上させます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト