在Pytorch中,對於device為CUDA的tensor的所有運算操作都是由GPU完成的嗎?

時間 2021-05-05 20:51:22

1樓:Lanking

一般操作來說,要不全用cpu要不全用gpu。減少轉到前端的時間,cpu2gpu和gpu2cpu的記憶體複製都是及其昂貴的。預設device為cuda執行運算元也會用gpu,除非某些必須在cpu才能完成的操作。

2樓:

據我所知只有極少數運算會不經使用者指定,偷偷把cuda tensor拿到cpu去算。

我自己遇到的只有兩個。乙個是pytorch裡乙個計算對稱矩陣特徵值的函式,在矩陣較小時(印象中是小於100*100這個數量級),因為cuda演算法比較低效,是偷偷呼叫cpu計算的。當時是在github的犄角旮旯裡看到的。

另外乙個是某個基於pytorch的第三方庫,計算稀疏卷積需要對稀疏座標計算hash,這部分是放在cpu算的。真正的卷積(也就是GEMM)呼叫gpu。

這種運算子非常少,而且應該都是冷門的東西。常見的加減乘除卷積絕對會使用使用者指定的處理器。

你說的cpu比gpu快的情況,我感覺是網路十分簡單,batch size十分小的時候,gpu的平行計算能力不能發揮導致的。這種情況下cpu因為單核能力強大,確實有可能比gpu快。

pytorch中binary cross entropy損失函式中weight引數是如何設定的?

趙彤 首先我們看下BCEloss的計算公式 假設input x,target y,batch size N BCELoss x,y 其中M表示input中元素的個數,如果是二維影象,M height width 表示元素i求loss時所佔的比重。nn.BCELoss 函式中weight預設為None...

pytorch中的 contiguous 是如何設計的

說乙個應用,在pytorch的ShuffleNet實現中,需要進行通道的shuffle操作 def channel shuffle x,groups type torch.Tensor,int torch.Tensor batchsize,num channels,height,width x.da...

學習caffe中,是否轉戰pytorch?

遇見 先學好caffe吧,轉戰tensorflow和轉戰pytorch都是一樣的學習套路,掌握好了一套框架後面再去學tensorflow,再去學pytorch都很快的,沒必要什麼熱門學什麼,caffe真的很適合工程入門 蟹蟹蟹柴柴 現在是2020年7月,學術圈的主流已經是pytorch了,一部分堅持...