最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Pytorch顯存動態(tài)分配規(guī)律探索

 更新時間:2020年11月17日 08:27:31   作者:華小電  
這篇文章主要介紹了Pytorch顯存動態(tài)分配規(guī)律探索,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

  下面通過實驗來探索Pytorch分配顯存的方式。

實驗顯存到主存

  我使用VSCode的jupyter來進行實驗,首先只導(dǎo)入pytorch,代碼如下:

import torch

  打開任務(wù)管理器查看主存與顯存情況。情況分別如下:

  在顯存中創(chuàng)建1GB的張量,賦值給a,代碼如下:

a = torch.zeros([256,1024,1024],device= 'cpu')

  查看主存與顯存情況:

  可以看到主存與顯存都變大了,而且顯存不止變大了1G,多出來的內(nèi)存是pytorch運行所需的一些配置變量,我們這里忽略。

  再次在顯存中創(chuàng)建一個1GB的張量,賦值給b,代碼如下:

b = torch.zeros([256,1024,1024],device= 'cpu')

  查看主顯存情況:

  這次主存大小沒變,顯存變高了1GB,這是合情合理的。然后我們將b移動到主存中,代碼如下:

b = b.to('cpu') 

  查看主顯存情況:

  發(fā)現(xiàn)主存是變高了1GB,顯存卻只變小了0.1GB,好像只是將顯存張量復(fù)制到主存一樣。實際上,pytorch的確是復(fù)制了一份張量到主存中,但它也對顯存中這個張量的移動進行了記錄。我們接著執(zhí)行以下代碼,再創(chuàng)建1GB的張量賦值給c:

c = torch.zeros([256,1024,1024],device= 'cuda')

  查看主顯存情況:

  發(fā)現(xiàn)只有顯存大小變大了0.1GB,這說明,Pytorch的確記錄了顯存中張量的移動,只是沒有立即將顯存空間釋放,它選擇在下一次創(chuàng)建新變量時覆蓋這個位置。接下來,我們重復(fù)執(zhí)行上面這行代碼:

c = torch.zeros([256,1024,1024],device= 'cuda') 

  主顯存情況如下:

  明明我們把張量c給覆蓋了,顯存內(nèi)容卻變大了,這是為什么呢?實際上,Pytorch在執(zhí)行這句代碼時,是首先找到可使用的顯存位置,創(chuàng)建這1GB的張量,然后再賦值給c。但因為在新創(chuàng)建這個張量時,原本的c依然占有1GB的顯存,pytorch只能先調(diào)取另外1GB顯存來創(chuàng)建這個張量,再將這個張量賦值給c。這樣一來,原本的那個c所在的顯存內(nèi)容就空出來了,但和前面說的一樣,pytorch并不會立即釋放這里的顯存,而等待下一次的覆蓋,所以顯存大小并沒有減小。

  我們再創(chuàng)建1GB的d張量,就可以驗證上面的猜想,代碼如下:

d = torch.zeros([256,1024,1024],device= 'cuda') 

  主顯存情況如下:

  顯存大小并沒有變,就是因為pytorch將新的張量創(chuàng)建在了上一步c空出來的位置,然后再賦值給了d。另外,刪除變量操作也同樣不會立即釋放顯存:

del d

  主顯存情況:

  顯存沒有變化,同樣是等待下一次的覆蓋。

主存到顯存

  接著上面的實驗,我們創(chuàng)建直接在主存創(chuàng)建1GB的張量并賦值給e,代碼如下:

e = torch.zeros([256,1024,1024],device= 'cpu')

  主顯存情況如下:

  主存變大1GB,合情合理。然后將e移動到顯存,代碼如下:

e = e.to('cuda')

  主顯存情況如下:

  主存變小1GB,顯存沒變是因為上面張量d被刪除沒有被覆蓋,合情合理。說明主存的釋放是立即執(zhí)行的。

總結(jié)

  通過上面的實驗,我們了解到,pytorch不會立即釋放顯存中失效變量的內(nèi)存,它會以覆蓋的方式利用顯存中的可用空間。另外,如果要重置顯存中的某個規(guī)模較大的張量,最好先將它移動到主存中,或是直接刪除,再創(chuàng)建新值,否則就需要兩倍的內(nèi)存來實現(xiàn)這個操作,就有可能出現(xiàn)顯存不夠用的情況。

  實驗代碼匯總?cè)缦拢?/p>

#%% 
import torch
#%%
a = torch.zeros([256,1024,1024],device= 'cuda') 
#%%
b = torch.zeros([256,1024,1024],device= 'cuda') 
#%%
b = b.to('cpu')
#%%
c = torch.zeros([256,1024,1024],device= 'cuda') 
#%%
c = torch.zeros([256,1024,1024],device= 'cuda') 
#%% 
d = torch.zeros([256,1024,1024],device= 'cuda') 
#%%
del d 
#%% 
e = torch.zeros([256,1024,1024],device= 'cpu') 
#%%
e = e.to('cuda')

到此這篇關(guān)于Pytorch顯存動態(tài)分配規(guī)律探索的文章就介紹到這了,更多相關(guān)Pytorc顯存分配規(guī)律內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法

    python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法

    今天小編就為大家分享一篇python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 使用Python創(chuàng)建一個文件夾結(jié)構(gòu)生成器

    使用Python創(chuàng)建一個文件夾結(jié)構(gòu)生成器

    這篇文章主要為大家詳細介紹了如何使用Python創(chuàng)建一個文件夾結(jié)構(gòu)生成器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • Python結(jié)合PyWebView庫打造跨平臺桌面應(yīng)用

    Python結(jié)合PyWebView庫打造跨平臺桌面應(yīng)用

    隨著Web技術(shù)的發(fā)展,將HTML/CSS/JavaScript與Python結(jié)合構(gòu)建桌面應(yīng)用成為可能,本文將系統(tǒng)講解如何使用PyWebView庫實現(xiàn)這一創(chuàng)新方案,希望對大家有一定的幫助
    2025-04-04
  • 從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能(最新推薦)

    從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能(最新推薦)

    OpenCV的強大功能不僅限于基本的圖像處理,還可以擴展到實時視頻分析、復(fù)雜的圖像拼接和特征匹配等應(yīng)用場景,這篇文章主要介紹了從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能,需要的朋友可以參考下
    2024-08-08
  • Python中反射和描述器總結(jié)

    Python中反射和描述器總結(jié)

    這篇文章主要介紹了Python中的反射和描述器一些知識的匯總,非常的詳細,有需要的小伙伴可以參考下
    2018-09-09
  • Python+Pygame實現(xiàn)彩色五子棋游戲

    Python+Pygame實現(xiàn)彩色五子棋游戲

    這篇文章主要為大家詳細介紹了如何溧陽Python和Pygame實現(xiàn)彩色五子棋游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-02-02
  • 解決pytorch rnn 變長輸入序列的問題

    解決pytorch rnn 變長輸入序列的問題

    這篇文章主要介紹了解決pytorch rnn 變長輸入序列的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python PyQt5學習之自定義信號

    Python PyQt5學習之自定義信號

    PyQ5已經(jīng)自動定義了很多QT自建的信號。但是在實際的使用中為了靈活使用信號與槽機制,可以根據(jù)需要自定義信號。本文就將為大家詳細講講PyQt5自定義信號,感興趣的可以了解一下
    2022-03-03
  • Python實現(xiàn)敲擊木魚積累功德小項目

    Python實現(xiàn)敲擊木魚積累功德小項目

    最近大家都很流行用手機敲擊電子木魚積累功德,這在很多短視頻中也常常見到。本文將用Python實現(xiàn)這一效果,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python Web程序部署到Ubuntu服務(wù)器上的方法

    Python Web程序部署到Ubuntu服務(wù)器上的方法

    在本文記錄了我在Ubuntu中部署Flask Web站點的過程, 其中包括用戶創(chuàng)建、代碼獲取、Python3環(huán)境的安裝、虛擬環(huán)境設(shè)置、uWSGI啟動程序設(shè)置,并將Nginx作為前端反向代理,需要的朋友參考下吧
    2018-02-02

最新評論

乌恰县| 西青区| 菏泽市| 沐川县| 和顺县| 什邡市| 额尔古纳市| 新建县| 偃师市| 五指山市| 云林县| 名山县| 襄汾县| 綦江县| 利辛县| 乐都县| 临邑县| 布拖县| 新化县| 察哈| 新河县| 紫阳县| 宜兴市| 商南县| 横峰县| 综艺| 清水县| 晋州市| 体育| 镇赉县| 淮南市| 安康市| 云霄县| 吉安县| 莲花县| 嘉定区| 美姑县| 富蕴县| 原平市| 阜宁县| 内江市|