<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # torch.multiprocessing # torch.multiprocessing 封裝了`multiprocessing`模塊。用于在相同數據的不同進程中共享視圖。 一旦張量或者存儲被移動到共享單元(見`share_memory_()`),它可以不需要任何其他復制操作的發送到其他的進程中。 這個API與原始模型完全兼容,為了讓張量通過隊列或者其他機制共享,移動到內存中,我們可以 由原來的`import multiprocessing`改為`import torch.multiprocessing`。 由于API的相似性,我們沒有記錄這個軟件包的大部分內容,我們建議您參考原始模塊的非常好的文檔。 **`warning:`**如果主要的進程突然退出(例如,因為輸入信號),Python中的`multiprocessing`有時會不能清理他的子節點。 這是一個已知的警告,所以如果您在中斷解釋器后看到任何資源泄漏,這可能意味著這剛剛發生在您身上。 ## Strategy management ``` torch.multiprocessing.get_all_sharing_strategies() ``` 返回一組由當前系統所支持的共享策略 ``` torch.multiprocessing.get_sharing_strategy() ``` 返回當前策略共享CPU中的張量。 ``` torch.multiprocessing.set_sharing_strategy(new_strategy) ``` 設置共享CPU張量的策略 參數: new\_strategy(str)-被選中策略的名字。應當是`get_all_sharing_strategies()`中值當中的一個。 ## Sharing CUDA tensors 共享CUDA張量進程只支持Python3,使用`spawn`或者`forkserver`開始方法。 Python2中的`multiprocessing`只能使用`fork`創建子進程,并且不被CUDA支持。 **`warning:`**CUDA API要求導出到其他進程的分配一直保持有效,只要它們被使用。 你應該小心,確保您共享的CUDA張量不要超出范圍。 這不應該是共享模型參數的問題,但傳遞其他類型的數據應該小心。請注意,此限制不適用于共享CPU內存。 ## Sharing strategies 本節簡要概述了不同的共享策略如何工作。 請注意,它僅適用于CPU張量 - CUDA張量將始終使用CUDA API,因為它們是唯一的共享方式。 ### File descriptor-`file_descripor` **`NOTE:`**這是默認策略(除了不支持的MacOS和OS X)。 此策略將使用文件描述符作為共享內存句柄。當存儲被移動到共享內存中,一個由`shm_open`獲得的文件描述符被緩存, 并且當它將被發送到其他進程時,文件描述符將被傳送(例如通過UNIX套接字)。 接收者也將緩存文件描述符,并且`mmap`它,以獲得對存儲數據的共享視圖。 請注意,如果要共享很多張量,則此策略將保留大量文件描述符。 如果你的系統對打開的文件描述符數量有限制,并且無法提高,你應該使用`file_system`策略。 ### File system -file\_system 這個策略將提供文件名稱給`shm_open`去定義共享內存區域。 該策略不需要緩存從其獲得的文件描述符的優點,但是容易發生共享內存泄漏。 該文件創建后不能被刪除,因為其他進程需要訪問它以打開其視圖。 如果進程崩潰或死機,并且不能調用存儲析構函數,則文件將保留在系統中。 這是非常嚴重的,因為它們在系統重新啟動之前不斷使用內存,或者手動釋放它們。 為了記錄共享內存文件泄露數量,`torch.multiprocessing`將產生一個守護進程叫做`torch_shm_manager` 將自己與當前進程組隔離,并且將跟蹤所有共享內存分配。一旦連接到它的所有進程退出, 它將等待一會兒,以確保不會有新的連接,并且將遍歷該組分配的所有共享內存文件。 如果發現它們中的任何一個仍然存在,它們將被釋放。我們已經測試了這種方法,并且它已被證明對于各種故障都是穩健的。 如果你的系統有足夠高的限制,并且`file_descriptor`是被支持的策略,我們不建議切換到這個。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看