資源簡介
一種基于矩陣分解方法的電影推薦算法
代碼片段和文件信息
import?numpy?as?np
from?numba?import?cuda?float64?jit
from?scipy?import?sparse
import?os
import?time
time_start=time.time()
cuda.select_device(0)
#?使用jit模式加速單一元素乘法運算
@jit(nopython=True)
def?multiply(c?d):
????return?c?*?d
#?使用jit模式加速單一元素減法運算
@jit(nopython=True)
def?subtract(e?f):
????return?e?-?f
#?使用jit模式加速梯度下降算法
@jit(nopython=True)
def?gradient_descent(err?p?la?lr?q):
????return?q?+?((err?*?p)?-?(la?*?q))?*?lr
#?Thread?Per?Block
TPB?=?int(32)
#?使用cuda.jit模式,用gpu加速矩陣的乘法運算
@cuda.jit
def?fast_matmul(a?b?c):
????sa?=?cuda.shared.array(shape=(TPB?TPB)?dtype=float64)
????sb?=?cuda.shared.array(shape=(TPB?TPB)?dtype=float64)
????x?y?=?cuda.grid(2)
????tx?=?cuda.threadIdx.x
????ty?=?cuda.threadIdx.y
????#?bpg?=?cuda.gridDim.x
????if?x?>=?c.shape[0]?and?y?>=?c.shape[1]:
????????#?Quit?if?(x?y)?is?outside?of?valid?C?boundary
????????return
????tmp?=?0
????for?i?in?range(hid):
????????sa[tx?ty]?=?a[x?ty?+?i?*?TPB]
- 上一篇:凸多邊形內角和計算
- 下一篇:爬取頭條美女圖片(僅供參考思路已不能用)
評論
共有 條評論