cuda簡單使用(一)

2021-10-21 13:52:00 字數 1932 閱讀 1673

本人筆記本所帶的gpu是gtx 1650

import torch

print

(torch.cuda.get_device_name(

))

geforce gtx 1650
import torch 

print

(torch.cuda.device_count(

))

1
import torch

print

(torch.cuda.current_device(

))

0
import torch

x = torch.tensor([[

1,2,

3],[

4,5,

6]])

print

(x.device)

cpu
5.1法一 在進行tensor變數命名的時候定義好device即可
import torch

x = torch.tensor([[

1,2,

3],[

4,5,

6]],device = torch.device(

'cuda'))

print

(x.device)

cuda:0
5.2法二 提前在外部定義好cuda,然後每次定義tensor的時候直接引用變數
import torch

cuda0 = torch.device(

'cuda:0'

)x = torch.tensor([[

1,2,

3],[

4,5,

6]],device = cuda0)

print

(x.device)

cuda:0
應用tensor.to(device) 其中device應該是torch.device的物件

import torch

device0 = torch.device(

'cuda:0'

)x = torch.rand((2

,3))

print

(x.device)

y = x.to(device0)

print

(y.device)

cpu

cuda:0

在網路計算中,參與計算的主要是兩個部分,乙個是模型的引數,乙個是實際輸入的訓練資料。將這兩部分的資料都移動到gpu中進行計算才能將網路搬移到gpu中

這句話的本質是將某乙個模型的引數以tensor的形式輸入到device中,這樣引數的計算就是在gpu裡面了

import torch

device = torch.device(

'cuda:0'

)m = torch.nn.linear(10,

10)m = m.to(device)

linear(in_features=10, out_features=10, bias=true)
for batch_idx,

(inputs, targets)

inenumerate

(trainloader)

: inputs, targets = inputs.to(device)

, targets.to(device)

CUDA記憶體使用

cuda執行緒可以在執行過程中從多中記憶體空間訪問資料,分為三個層次 1,區域性記憶體 每乙個執行緒有其私有的區域性記憶體。2,共享記憶體 每乙個執行緒塊 thread block 有乙個共享記憶體,可以被該執行緒塊中的所有執行緒訪問。3,全域性記憶體 所有的執行緒都能訪問。此外還有兩個能被所有執行...

cuda 本地記憶體使用 cuda實戰入門

cuda compute unified device architecture 是 nvidia 所推出的一種平行計算平台和平行計算 api。cuda 在平行計算上可以大顯神威,因此,我們先要找到乙個可並行的問題。乙個很簡單的可並行問題就是計算無窮級數 infinite series 圓周率 pi...

CUDA使用筆記(一)矩陣乘法

簡介 本文介紹cublassgemm 函式的使用。在c c 中,通常我們將2維矩陣按行儲存為一維陣列。但是在視訊記憶體中,矩陣是按列儲存的。因此,我們在實際使用時,對cublassgemm 中的各個引數的賦值可能會搞不清楚。本文,以乙個具體的矩陣乘法案例為例子,介紹cublassgemm 函式的使用...