电脑GPU/CPU资源查看及使用
生活随笔
收集整理的這篇文章主要介紹了
电脑GPU/CPU资源查看及使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
電腦GPU/CPU資源查看及使用
import torch ''' 1. 服務器GPU狀態查詢1) lspci | grep -i nvidia 可以查詢所有nvidia顯卡2) lspci -v -s [顯卡編號] 可以查看顯卡具體屬性3) nvidia-smi 可以查看顯卡的顯存利用率2. torch.cuda主要函數1) 查看是否有可用GPU、可用GPU數量: torch.cuda.is_available(), torch.cuda.device_count()2) 查看當前使用的GPU序號:torch.cuda.current_device()3) 查看指定GPU的容量、名稱:torch.cuda.get_device_capability(device), torch.cuda.get_device_name(device)4) 清空程序占用的GPU資源: torch.cuda.empty_cache()5) 為GPU設置隨機種子:torch.cuda.manual_seed(seed), torch.cuda.manual_seed_all(seed)'''def select_device(id):force_cpu = Falseif id == -1: force_cpu = Truecuda = False if force_cpu else torch.cuda.is_available() #如果電腦不存在GPU,即使id不為零,cuda也是Falsedevice = torch.device('cuda:{}'.format(id) if cuda else 'cpu')'''format()是python2.6新增的一個格式化字符串的方法,功能非常強大,有可能在未來完全替代%格式化方法,相比 % ,format()的優點有:1 .格式化時不用關心數據類型的問題,format()會自動轉換,而在%方法中,%s用來格式化字符串類型,%d用來格式化整型;2. 單個參數可以多次輸出,參數順序可以不同3. 填充方式靈活,對齊方式強大更多千位分隔符、百分數表示可見:https://blog.csdn.net/dcrmg/article/details/78188647?utm_source=blogxgwz3'''#打印電腦上已有的GPU/CPU設備if not cuda:print('Using CPU')if cuda:c = 1024 ** 2 # bytes to MBng = torch.cuda.device_count() #通過os.environ["CUDA_VISIBLE_DEVICES"]設置系統變量后,可能會使結果不準確x = [torch.cuda.get_device_properties(i) for i in range(ng)]print("Using CUDA device0 _CudaDeviceProperties(name='%s', total_memory=%dMB)" %(x[0].name, x[0].total_memory / c))if ng > 0:# torch.cuda.set_device(0) # OPTIONAL: Set GPU IDfor i in range(1, ng):print(" device%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" %(i, x[i].name, x[i].total_memory / c)) #%g根據值的大小決定使用%f或%ereturn device #返回本次代碼使用的設備if __name__ == "__main__":_ = select_device(0)'''[1]單前導下劃線 _var: 單個下劃線是一個Python命名約定,表示這個名稱是供內部使用的。 它通常不由Python解釋器強制執行,僅僅作為一種對程序員的提示。特例是使用通配符從模塊中導入所有名稱,則Python不會導入帶有前導下劃線的名稱(使用時會顯示:NameError: "name '_var' is not defined")[2]單末尾下劃線 var_: 單個末尾下劃線(后綴)是一個約定,用來避免與Python關鍵字產生命名沖突。[3]雙前導下劃線 __var: 名稱修飾(name mangling) - 解釋器更改變量的名稱,以便在類被擴展的時候不容易產生沖突。將類內__方法或__變量變為_類名__方法名(變量名)樣例如下:class Test:def __init__(self):self.foo = 11self._bar = 23self.__baz = 23>>> t = Test()>>> dir(t)[//'_Test__baz'//, '__class__', '__delattr__', '__dict__', '__dir__','__doc__', '__eq__', '__format__', '__ge__', '__getattribute__','__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__','__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__','__setattr__', '__sizeof__', '__str__', '__subclasshook__','__weakref__', //'_bar'//, //'foo'//][4] 雙前導和雙末尾下劃線 _var_: Python保留了有雙前導和雙末尾下劃線的名稱,用于特殊用途,這些dunder方法通常被稱為神奇方法(魔法方法)。最好避免在自己的程序中使用以雙下劃線(“dunders”)開頭和結尾的名稱,以避免與將來Python語言的變化產生沖突。[5]單下劃線 _: 按照習慣,有時候單個獨立下劃線是用作一個名字,來表示某個變量是臨時的或無關緊要的。也就是一個不感興趣的變量,不想花心思取名,本質上就是一個變量名。除了用作臨時變量之外,_表示由解釋器評估的最近一個表達式的結果>>> 20 + 323>>> _23>>> print(_)23>>> list()[]>>> _.append(1)>>> _.append(2)>>> _.append(3)>>> _[1, 2, 3]Python中下劃線的5種含義:https://blog.csdn.net/tcx1992/article/details/80105645'''運行結果
總結
以上是生活随笔為你收集整理的电脑GPU/CPU资源查看及使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想考个在职研究生学位,IT方向,学校越牛
- 下一篇: 下秒数据入驻用友云生态布局,全面升级数智