評價此頁

torch.utils.rename_privateuse1_backend#

torch.utils.rename_privateuse1_backend(backend_name)[原始碼]#

重新命名 PrivateUse1 後端裝置,以便在 PyTorch API 中更方便地將其用作裝置名稱。

步驟如下:

  1. (在 C++ 中) 為各種 torch 操作實現核心,並將它們註冊到 PrivateUse1 分派鍵。

  2. (在 Python 中) 呼叫 torch.utils.rename_privateuse1_backend(“foo”)

現在您可以在 Python 中將“foo”用作普通裝置字串。

注意:此 API 每個程序只能呼叫一次。嘗試在外部後端已設定後更改它將導致錯誤。

注意 (AMP):如果您想支援您的裝置上的 AMP,您可以註冊一個自定義後端模組。後端必須使用 torch._register_device_module("foo", BackendModule) 註冊一個自定義後端模組。BackendModule 需要具有以下 API:

  1. get_amp_supported_dtype() -> List[torch.dtype] 獲取 AMP 中您的“foo”裝置上支援的資料型別,也許“foo”裝置支援更多一種資料型別。

注意 (random):如果您想支援為您的裝置設定種子,BackendModule 需要具有以下 API:

  1. _is_in_bad_fork() -> bool 如果當前在 bad_fork 中,則返回 True,否則返回 False

  2. manual_seed_all(seed int) -> None 為您的裝置設定生成隨機數的種子。

  3. device_count() -> int 返回可用的“foo”的數量。

  4. get_rng_state(device: Union[int, str, torch.device] = 'foo') -> Tensor 返回一個表示所有裝置隨機數狀態的 ByteTensor 列表。

  5. set_rng_state(new_state: Tensor, device: Union[int, str, torch.device] = 'foo') -> None 設定指定“foo”裝置的隨機數生成器狀態。

還有一些通用函式:

  1. is_available() -> bool 返回一個布林值,指示“foo”當前是否可用。

  2. current_device() -> int 返回當前選定裝置的索引。

有關更多詳細資訊,請參閱 https://pytorch.com.tw/tutorials/advanced/extend_dispatcher.html#get-a-dispatch-key-for-your-backend。有關現有示例,請參閱 bdhirsh/pytorch_open_registration_example

示例

>>> torch.utils.rename_privateuse1_backend("foo")
# This will work, assuming that you've implemented the right C++ kernels
# to implement torch.ones.
>>> a = torch.ones(2, device="foo")