eyalroz/cuda-api-wrappers

Thin, unified, C++-flavored wrappers for the CUDA APIs

何を解決するか

このライブラリは、NVIDIAのCスタイルのCUDA API(Runtime APIおよびDriver API)の欠陥に対処します。これらのAPIは、手動でのリソース管理、冗長なエラーチェック、複雑なポインタへのポインタのパターンをしばしば必要とします。このライブラリはCUDAエコシステムとのやり取りを簡素化し、現代的なC++プログラミングの実践に合わせて、より直感的で一貫性のあるシステムを提供します。

動作方法

Driver API、Runtime API、NVRTC(動的コンパイル)、NVTX(プロファイラーAPI)、およびPTXコンパイラライブラリを含む、主要なCUDA APIの軽量なラッパーを提供するヘッダーのみのC++ライブラリです。新しい抽象化を導入したり、特定の規則を強制したりはしませんが、NVIDIAのAPIを現代的なC++の美学に再構成します。

対象ユーザー

直接CUDA APIを使用する開発者で、下位のAPIが提供する表現力の範囲を損なうことなく、より使いやすく、安全で、より組み合わせ可能な方法でNVIDIA GPUとやり取りしたい方。

主な特徴

  • RAIIリソース管理: デバイス、ストリーム、イベント、カーネルのプロキシオブジェクトを使用して、リソースの解放を自動化します。
  • 例外ベースのエラー処理: 戻り値のチェックを、ステータス情報を保持する例外に置き換えます。
  • 改善された組み合わせ性: 関数は生成するオブジェクトを返すため、事前に割り当てられた出力パラメータを必要としません。
  • 統合されたAPIアクセス: Driver API、Runtime API、NVRTC APIの間でシームレスな統合を提供します。
  • ゼロオーバーヘッド設計: 高コストな継承や仮想メソッドを一切使用せず、軽量でヘッダーのみの実装であり、ほとんどのラッパーはコンパイル時に消え去ります。

関連

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