l: k, q, および qSQL のための新しい高性能ランタイム

l: k, q, および qSQL のための新しい高性能ランタイム

l は、ウォール街のハイフレクエンシー・トレーディング(HFT)や金融サービスで広く使用されている配列プログラミング言語およびデータベースツールである k4, q, および qSQL のために設計された新しいランタイムです。透過的な SIMD、自動並列化、および圧縮ベクトルに対するネイティブ操作を実装することで、l は既存の k/q コードを変更することなく、より高速な実行エンジンを提供することを目指しています。

圧縮ベクトル上でのネイティブ実行

l のパフォーマンスは、実行の主要単位として圧縮ベクトルを使用することによって推進されます。計算を実行する前にメモリ内で完全な配列を再構築するのではなく、l のプリミティブは圧縮構造上で直接実行されます。このアプローチは、メモリと CPU の間のデータ移動量を減らし、計算能力に達する前にメモリ帯域幅が枯渇するという一般的なハードウェアのボトルネックを解決します。

この圧縮モデルの主な特徴は以下の通りです:

  • Unified Format: データはディスク、メモリ、およびプロセス間通信(IPC)全体で単一の形式を維持します。
  • Reduced Memory Footprint: ベクトルは自動的に圧縮され、キャッシュ容量を最適化します。
  • Direct Computation: プリミティブは、静止時および転送中の圧縮データに対して操作を行い、個別のデコードパスを不要にします。

透過的なハードウェア加速

l は、ハードウェアターゲットと処理されるデータのサイズに基づいて、最も効率的な実行パスの選択を自動化します。開発者は標準的な k/q コード(例:sum x)を記述し、ランタイムは手動のアノテーションを必要とせずに最適な実行戦略を決定します。

実行パス

  • SIMD Vectorization: l は Apple Silicon 上の NEON ベクトル化、および x86 アーキテクチャ上の AVX-512 サポートを利用します。
  • Automatic Threading: ランタイムは、ベクトルの長さに基づいてインテリジェントにスレッド化を適用します。小さなベクトルは SIMD を介して処理され、大きなベクトルは SIMD とマルチスレッドのファンアウトの組み合わせを利用します。
  • Hardware Offloading: ランタイムは、GPU および NPU への計算のオフロードをサポートします。

互換性とデータベースサポート

l は k4 構文、q, および qSQL との完全な互換性を提供し、ユーザーが既存の慣習やコードを書き換えることなく実行できるようにします。これには、以下のネイティブサポートが含まれます:

  • カラムナテーブル(Columnar tables)
  • 辞書(Dictionaries)
  • パーティション(Partitions)
  • スプレイ(Splays)

完全な qSQL 互換のデータベースとして、l はすべての標準的な結合(join)およびパーティションロジックをサポートし、kdb+ エコシステムに関連付けられた「伝説的なスピード」を維持しつつ、q インタープリタの独立した実装を提供することを目指しています。

コミュニティの反応と分析

業界のオブザーバーや開発者は、l が、独自のライセンスが一般的な配列言語(APL, BQN, および J を含む)の専門的な設計領域に参入していることに注目しています。

コミュニティからの主な洞察

  • Market Position: 一部のユーザーは、l を Kx Systems による kdb+ の商用ライセンスが非常に高価であると感じる人々にとっての、潜在的な代替案として見ています。
  • Production Goals: 他の k-family の実装とは異なり、l は、完全な本番環境用データベース互換性および言語互換性を明示的にターゲットとしています。
  • Critiques: 開発者の間での議論では、このプロジェクトが現在クローズドソースである点が、言語ランタイムとしての採用の導入障壁となっていることがあると指摘されています。また、プロジェクトのランディングページのデザインや「バイブス」に関する議論も行われています。

"q は Kx Systems による kdb+ の基盤となるプログラミング言語です... L は q インタープリタの独立した実装です。kdb+ の商用ライセンスを渋々契約している人々にとって、これは歓迎すべき代替案となるでしょう。"

"klong/ngn/bqn 等とは異なり... これは、完全な本番環境用データベース互換性(および完全な言語互換性)を目標としています。"

Sources