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

pytorch GPU計算比CPU還慢的可能原因分析

 更新時間:2024年02月22日 08:29:53   作者:Kevin Davis  
這篇文章主要介紹了pytorch GPU計算比CPU還慢的可能原因,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1. 張量(tensor)太小,難以并行化計算

我們先來做個簡單實驗:

import torch
import time

def train(size_list, epochs):

    for s in size_list:

        # CPU
        start_time1 = time.time()
        a = torch.ones(s,s)
        for _ in range(epochs):
            a += a
        cpu_time = time.time() - start_time1

        # GPU
        start_time2 = time.time()
        b = torch.ones(s,s).cuda()
        for _ in range(epochs):
            b += b
        gpu_time = time.time() - start_time2

        print('s = %d, CPU_time = %.4fs, GPU_time = %.4fs'%(s, cpu_time, gpu_time))

size_list = [8, 32, 128, 512]
epochs = 100000
train(size_list, 100000)

s = 8, CPU_time = 0.2252s, GPU_time = 0.6376s
s = 32, CPU_time = 0.3321s, GPU_time = 0.6468s
s = 128, CPU_time = 2.2634s, GPU_time = 0.6493s
s = 512, CPU_time = 9.6728s, GPU_time = 1.5587s

可以看到,在tensor維度比較低(s = 8, 32) 時,CPU的計算耗時比GPU少,這是因為把數(shù)據(jù)從CPU搬到GPU也是需要時間的,GPU加速帶來的收益被這部分搬運時間抵消了,完全展示不出cuda的加速功能。

當tensor維度達到128或以上時,GPU的計算耗時顯著低于CPU的計算耗時,這時GPU加速帶來的收益遠高于搬運數(shù)據(jù)所花費的時間,展示出GPU加速的強大能力(老黃牛批!)。

咳咳,分析一下:

GPU加速通過大量的計算并行化來工作。 GPU有大量的內核,每個內核都不是很強大,但是核心數(shù)量巨大。PyTorch可以使它們盡可能地并行計算,在tensor維度比較高的情況下,GPU能夠并行化更多的整體計算,顯著減少計算耗時。

因此,如果遇到pytorch 用CPU比GPU還快的情況時,可以看看dataloader里單次輸入的 x 維度是否太低,如果太低可以把 batch_size 調大一點,可以的話增加一下數(shù)據(jù)維度,單次輸入的tensor的shape越大,GPU越能并行化計算。

當然,也不要設的太大了,比如batch_size設個大幾萬啥的,再強的顯卡也遭不住這么折騰。

2. 模型太過簡單

GPU的強大體現(xiàn)在它的并行計算,數(shù)據(jù)越大,模型越復雜越能體現(xiàn)出來。

太過簡單的模型CPU一下子就算完了,此時的GPU可能才剛接收完數(shù)據(jù),沒法體現(xiàn)GPU的強大。

因此,解決方案也很簡單,換個復雜點的模型或者加深加寬現(xiàn)有的神經(jīng)網(wǎng)絡模型。

3. CPU 相對 GPU 強太多

在相同的、沒調好的參數(shù)情況下,有時候64核的CPU用60%的核心(也就是38個)也能達到一張2080ti顯卡(GPU)的效果。

如果CPU是個64核的芯片,而顯卡是老黃家的古董960,那CPU比GPU快也是完全有可能的,這時候瓶頸就在顯卡了。

總結

以上是我在寫bug代碼時遇到的情況及可能原因,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python傳遞參數(shù)方式小結

    python傳遞參數(shù)方式小結

    這篇文章主要介紹了python傳遞參數(shù)方式,實例總結了Python常用的參數(shù)傳遞方式,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • python中cryptography庫的實現(xiàn)

    python中cryptography庫的實現(xiàn)

    本文主要介紹了python中cryptography庫的實現(xiàn),包括Fernet、hash、AES、RSA等加密算法的使用,具有一定的參加價值,感興趣的可以了解一下
    2025-01-01
  • Python Sqlalchemy如何實現(xiàn)select for update

    Python Sqlalchemy如何實現(xiàn)select for update

    這篇文章主要介紹了Python Sqlalchemy如何實現(xiàn)select for update,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • PyQT中QTableWidget如何根據(jù)單元格內容設置自動寬度

    PyQT中QTableWidget如何根據(jù)單元格內容設置自動寬度

    這篇文章主要介紹了PyQT中QTableWidget如何根據(jù)單元格內容設置自動寬度問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 淺談Python xlwings 讀取Excel文件的正確姿勢

    淺談Python xlwings 讀取Excel文件的正確姿勢

    這篇文章主要介紹了淺談Python xlwings 讀取Excel文件的正確姿勢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python使用socket實現(xiàn)組播與發(fā)送二進制數(shù)據(jù)

    Python使用socket實現(xiàn)組播與發(fā)送二進制數(shù)據(jù)

    在工作中經(jīng)常會用到socket傳輸數(shù)據(jù),例如客戶端給服務器發(fā)送數(shù)據(jù)(雙方約定了數(shù)據(jù)格式),本文主要介紹了Python使用socket實現(xiàn)組播與發(fā)送二進制數(shù)據(jù),感興趣的可以了解一下
    2021-06-06
  • Python實現(xiàn)對一個函數(shù)應用多個裝飾器的方法示例

    Python實現(xiàn)對一個函數(shù)應用多個裝飾器的方法示例

    這篇文章主要介紹了Python實現(xiàn)對一個函數(shù)應用多個裝飾器的方法,結合實例形式分析了Python編程中一個函數(shù)使用多個裝飾器的簡單操作技巧,需要的朋友可以參考下
    2018-02-02
  • python屬于跨平臺語言碼

    python屬于跨平臺語言碼

    在本篇文章里小編給大家整理的是關于python是否跨平臺的相關知識點文章,有興趣的朋友們可以參考下。
    2020-06-06
  • Python深度學習實戰(zhàn)PyQt5布局管理項目示例詳解

    Python深度學習實戰(zhàn)PyQt5布局管理項目示例詳解

    本文具體介紹基本的水平布局、垂直布局、柵格布局、表格布局和進階的嵌套布局和容器布局,最后通過案例帶小白創(chuàng)建一個有型的圖形布局窗口
    2021-10-10
  • 通過Python代碼實現(xiàn)照片秒變藝術素描畫效果

    通過Python代碼實現(xiàn)照片秒變藝術素描畫效果

    這篇文章主要介紹了通過Python和OpenCV實現(xiàn)照片素描效果的“三步走”策略,并提供了示例代碼,步驟包括灰度化、反轉與模糊以及混合,最終生成類似鉛筆素描的藝術效果,需要的朋友可以參考下
    2025-11-11

最新評論

和田县| 英吉沙县| 勃利县| 通辽市| 金寨县| 永善县| 苍溪县| 兴国县| 陆良县| 望谟县| 九龙城区| 肥西县| 河北省| 锦州市| 张家口市| 新营市| 延庆县| 体育| 宿松县| 大庆市| 九龙坡区| 涪陵区| 巧家县| 武义县| 长岛县| 吴忠市| 米脂县| 玛纳斯县| 台山市| 颍上县| 马关县| 淮安市| 惠水县| 隆德县| 法库县| 云安县| 永丰县| 老河口市| 武胜县| 兴安盟| 漳浦县|