ドキュメント / 日本語ソースを見る ↗

ランタイム API リファレンス

English | 简体中文 | 日本語 | Deutsch | Русский

ドキュメント · プログラミング ガイド · ドライバー API · 中文

汎用ランタイムは ruda::runtime にあり、ruda/runtime 機能によって有効になります。各バックエンドには、対応するドライバー クレートも必要です。

1. コアの種類

タイプ 責任 定義
Runtime アソシエイト コンパイラー、サーバー、およびデバイス。デバイスクライアントを提供します バックエンド.rs
ComputeClient<R> 割り当て、カーネルの送信、リードバック、同期、および機能のクエリ client.rs
ComputeServer バックエンド実行コントラクト サーバーモジュール
RudaTensor<R> デバイス ストレージとテンソル メタデータ テンソル定義

R::client(&device) はランタイムのクライアントを取得します。 R::Device はデバイスのタイプを決定します。ランタイム タイプを共有しても、異なる物理デバイス上のストレージが交換可能になるわけではありません。

2. メモリと転送

これらのメソッドは ComputeClient<R> に属します。

メソッド の動作
create_from_slice(&[u8]) ホストバイトからデバイスデータを作成し、ハンドルを返します
empty(usize) ゼロ初期化を保証せずにストレージをバイト単位で割り当てます
create_tensor_from_slice、empty_tensor 形状と要素サイズを使用してテンソルストレージレイアウトを作成します
read_one(Handle) 1 つのハンドルを同期的に読み取ります。 Result<Bytes, ServerError>を返します
read_async(Vec<Handle>) 非同期リードバック結果を返します
read(Vec<Handle>) 複数のハンドルを同期的に読み取ります。エラーでパニックになる
memory_usage() ランタイムによって追跡されたメモリ使用量をクエリします

read_one_unchecked リードバックが失敗するとパニックが発生します。その名前は、カーネル境界チェックを無効にするという意味ではありません。非連続テンソルの場合は、生のバイトを連続要素として解釈するのではなく、テンソル リードバック インターフェイスを使用します。

3. 実行制御

メソッド の動作
launch カーネルをチェックモードでサブミットします
launch_unchecked 安全でないインターフェイス。 BoundsCheckMode は実際のチェック モードを制御します
flush キューに入れられたコマンドを送信し、Result を返します。
sync 実行の完了を待つフューチャーを返します。
set_stream クライアントの StreamId を安全でないように設定します

launch は、計算されたデバイスの結果を返しません。非同期コンパイルまたは実行エラーは、リードバックまたは同期中に発生する可能性があります。マクロ生成された起動インターフェイスも引数を構築します。完全なコントラクトは、クライアント メソッドの署名と互換性がありません。

4. 機能とプロファイリング

properties() はデバイスのプロパティを返し、features() は機能セットを返します。 dtype、アトミック、または行列命令を選択する前に、適切な機能をクエリします。列挙には、enumerate_devices、enumerate_all_devices、および count メソッドを使用します。 profile はランタイム プロファイリングを提供します。測定における送信、実行、転送を区別します。

5. エラーと安全性

低レベルの未検査起動では、呼び出し側が範囲外アクセスと終了しないループを排除する必要があります。レイアウト、バインディングの長さ、ストリームをまたぐ生存期間はカーネルに適合していなければなりません。検査設定はデバッグ、デバイス統合は Driver API を参照してください。