资源简介

一种基于矩阵分解方法的电影推荐算法

资源截图

代码片段和文件信息

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]

评论

共有 条评论