<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # CUDA語義 # CUDA語義 `torch.cuda`會記錄當前選擇的GPU,并且分配的所有CUDA張量將在上面創建。可以使用`torch.cuda.device`上下文管理器更改所選設備。 但是,一旦張量被分配,您可以直接對其進行操作,而不考慮所選擇的設備,結果將始終放在與張量相同的設備上。 默認情況下,不支持跨GPU操作,唯一的例外是`copy_()`。 除非啟用對等存儲器訪問,否則對分布不同設備上的張量任何啟動操作的嘗試都將會引發錯誤。 下面你可以找到一個展示如下的小例子: ``` x = torch.cuda.FloatTensor(1) # x.get_device() == 0 y = torch.FloatTensor(1).cuda() # y.get_device() == 0 with torch.cuda.device(1): # allocates a tensor on GPU 1 a = torch.cuda.FloatTensor(1) # transfers a tensor from CPU to GPU 1 b = torch.FloatTensor(1).cuda() # a.get_device() == b.get_device() == 1 c = a + b # c.get_device() == 1 z = x + y # z.get_device() == 0 # even within a context, you can give a GPU id to the .cuda call d = torch.randn(2).cuda(2) # d.get_device() == 2 ``` ## 最佳實踐 ### 使用固定的內存緩沖區 當副本來自固定(頁鎖)內存時,主機到GPU的復制速度要快很多。CPU張量和存儲開放了一個`pin_memory()`方法,它返回該對象的副本,而它的數據放在固定區域中。 另外,一旦固定了張量或存儲,就可以使用異步的GPU副本。只需傳遞一個額外的`async=True`參數到`cuda()`的調用。這可以用于將數據傳輸與計算重疊。 通過將`pin_memory=True`傳遞給其構造函數,可以使`DataLoader`將batch返回到固定內存中。 ### 使用 nn.DataParallel 替代 multiprocessing 大多數涉及批量輸入和多個GPU的情況應默認使用`DataParallel`來使用多個GPU。盡管有GIL的存在,單個python進程也可能使多個GPU飽和。 從0.1.9版本開始,大量的GPU(8+)可能未被充分利用。然而,這是一個已知的問題,也正在積極開發。和往常一樣,測試你的用例吧。 調用`multiprocessing`來利用CUDA模型存在重要的注意事項;使用具有多處理功能的CUDA模型有重要的注意事項; 除非就是需要謹慎地滿足數據處理需求,否則您的程序很可能會出現錯誤或未定義的行為。
                  <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>

                              哎呀哎呀视频在线观看