ランタイム 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 を参照してください。