【发布时间】:2021-06-11 23:03:52
【问题描述】:
我最近制作了numpy 代码的CuPy 版本,我只得到了x5-x15 的改进因子。当我检查我的 GPU 使用率时,它似乎很低(
一般来说,我想对cupy. ndarray 进行多次连续的CuPy 操作。
比如生成一个随机向量:
def randomUniformUnitary(N):
theta = cp.random.rand(N) * 2 * cp.pi
phi = cp.random.rand(N) * cp.pi
x = cp.sin(phi) * cp.cos(theta)
y = cp.sin(phi) * cp.sin(theta)
z = cp.cos(phi)
output = cp.stack((x, y, z), axis=-1)
return output
我有多个the docs 似乎没有回答的问题。 (他们确实说动态内核创建,但没有解释)
- 内核合并?
CuPy 是否会为 rand() 创建一个内核,然后将数据发回并创建一个内核用于与 2 的乘法运算,然后... 或者所有这些计算会合并到一个更快的内核中吗?
- 内核组合标准?
如果是这样,导致这种行为的标准是什么?一线运营?相同的array 操作?函数操作? def 单独的函数是否可以在性能方面只对数组进行一个 cupy 操作,还是在某些地方重复编写代码并将所有的 Cupy 函数合并到一个 Python 函数中更好?
- 自己的内核?
如果每个计算都是单独进行的,并且没有“内核合并”,那么我觉得我可能应该制作自己的内核来优化?它是实现GPU优化的唯一途径吗?
【问题讨论】: