xtensor-stack/xtensor
C++ tensors with broadcasting and lazy computing
何を解決するか
xtensor は多次元配列式を用いた数値解析用の C++ ライブラリです。Python の NumPy に似た機能を C++ に持ち込み、Python のオーバーヘッドを回避しつつ、Python エコシステムから来た開発者にとってなじみやすい API を維持します。
動作方法
このライブラリは拡張可能な式システムを用いて 遅延ブロードキャスト を実装しています。計算結果を即座に評価するのではなく、加算や正弦関数などの演算は xexpression オブジェクトを返します。実際の値は、結果が xarray や xtensor などのコンテナにアクセスまたは代入された時点で計算されます。
主に以下の2つのコンテナ型を提供しています:
xarray:実行時におけるリサイズが可能な動的コンテナで、NumPy 配列に似ています。xtensor:次元がコンパイル時時点で設定されるコンテナで、形状とストライドをスタックに割り当て可能であり、パフォーマンス向上を実現します。
対象ユーザー
多次元配列の操作やブロードキャスト機能が必要な、数値解析、データサイエンス、ハイパフォーマンスコンピューティングを行う C++ 開発者を対象としています。
特徴
- NumPy を意識した API:C++ 標準ライブラリの慣例を踏襲しつつ、NumPy の配列プログラミングモデルを模倣しています。
- 遅延計算:アクセス時にのみ式を評価することで、不要な計算を削減します。
- ブロードキャスト:NumPy のルールに従い、異なる形状の配列間での要素単位の演算をサポートします。
- 相互運用性:アダプタを介して NumPy、Julia、R のデータ構造をインプレースで処理できます。
- SIMD 加速:
xsimdと統合し、SSE、AVX、AVX512、Neon 指令セットを活用してパフォーマンスを向上させます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト