在Pytorch中,所有對tensor的操作,都是由GPU-specific routines完成的。tensor的device屬性來控制tensor在計算機中存放的位置。
我們可以在tensor的構造器中顯示的指定tensor存放在GPU上
也可以用 to 方法把一個CPU上的tensor復制到GPU上
這行代碼在GPU上創建了一個新的,內容一致的tensor。
在GPU上的tensor的計算,就可以被GPU加速了。同樣的,在GPU上的tensor會對應一個新的類型。如 torch.FloatTensor 對應 torch.cuda.FloatTensor.
基本,CPU和GPU上的tensor對應的API都是一樣的,這樣降低了開發成本。
對於多GPU的電腦,也可以通過0起始的索引顯式的指定使用的GPU
指定device后,所有對tensor的操作都會在GPU上執行
要注意的是:points_gpu 在計算完成后不會被移回CPU。上面這行代碼,做的事情是:
1 把points復制到GPU
2 在GPU上創建一個新的tensor,用來接收計算結果
3 返回一個指定計算結果的句柄
所以,如果對結果加一個常數,還是在GPU上進行的,而不會返回到CPU
如果想把tensor返回給CPU,需要顯式的指定device參數
調用 to方法太麻煩了,我們可以使用簡寫的 cuda 方法 和 cpu 方法來對tensor進行移動。
但是,使用 to 方法,我們可以通過指定 dtype和device參數,實現同時改變tensor的數據類型和存儲位置。