安裝網上有教程,ps: 如果是win系統的話, 最好先安裝vs, 在安裝cuda
匯入必要的庫
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import sourcemodule
建立乙個4*4的陣列, 並且轉換成float型別(若顯示卡支援計算double型別的浮點數可不進行轉換)
import numpy as np
a = np.random.randn(4,
4).astype(np.float32)
申請a陣列大小的顯示卡空間,並將陣列a複製到顯示卡裡面
a_gpu = cuda.mem_alloc(a.nbytes)
cuda.memcpy_htod(a_gpu, a)
編寫核心函式 下面的threadidx.x, threadidx.y, blockdim都是cuda中的關鍵字,有固定的用法可參考這篇blog
mod = sourcemodule(
""" __global__ void doublify(float *a)
""")
向核函式裡面傳入a_gpu陣列, 並且呼叫核函式進行進行計算
func = mod.get_function(
'doublify'
)func(a_gpu, block=(4
,4,1
))
取出計算結果並列印
a_doubled = np.empty_like(a)
cuda.memcpy_dtoh(a_doubled, a_gpu)
print
(a_doubled)
# 計算結果
print
(a)# 原本的
所有的**
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import sourcemodule
import numpy as np
# 隨機建立乙個4*4的陣列
a = np.random.randn(4,
4)# 將雙精度浮點數轉換成單精度浮點數
a = a.astype(np.float32)
# 顯示卡中分配一段視訊記憶體 a.nbytes是陣列a的大小
a_gpu = cuda.mem_alloc(a.nbytes)
#把生成的陣列a轉移到顯示卡裡面
cuda.memcpy_htod(a_gpu, a)
# 執行乙個核心函式(kernel)
mod = sourcemodule(
""" __global__ void doublify(float *a)
""")
# 把顯示卡中陣列a_gpu作為引數傳過去,同時設定塊大小為4*4
func = mod.get_function(
"doublify"
)func(a_gpu, block=(4
,4,1
))# 建立乙個空的陣列
a_doubled = np.empty_like(a)
# 將gpu中的陣列a_gpu取回放入a_doubled中
cuda.memcpy_dtoh(a_doubled, a_gpu)
print
(a_doubled)
print
(a)
pycuda 一些計算函式
評估gpuarray例項上涉及的表示式可能有些低效,因為為每個中間結果建立了乙個新的臨時表。模組pycuda.elementwise中的功能包含有助於生成核心的工具,這些核心在一次傳遞中評估乙個或多個運算元上的多階段表示式。classpycuda.elementwise.elementwiseker...
Linux驅動篇之hello
一 環境 a ubuntu18.04 b arm linux gnueabi gcc 7.5.0 gcc 7.5.0 c friendlyarm tiny4412 標準版 d linux 5.5 二 目標 a hello驅動 b hello應用 三 步驟 a hello驅動 1 在drivers目錄...
HELLO一 如何開始DSP的學習
by eys417 摘錄一些,分享下.以下為各學習dsp的一些經驗 fxw451 大家先大體上看一遍書,把大體的知識了解一下。其次就是看例子了,例子是關鍵,例子裡有你學的所有的東西,這次你再拿出一本書來看,這次是有針對性的看,比如你做的spi的,你就直接看spi那張,一邊看例子一邊看書,這樣你就可以...