gpt4 book ai didi

matlab - 从 MATLAB Low Performance 调用内核

转载 作者:行者123 更新时间:2023-12-02 03:54:26 25 4
gpt4 key购买 nike

我已经从我的 MATLAB 实现中调用了一个 CUDA 内核;但是我的 CPU 结果比我的 GPU 实现更快。我知道更大的矩阵可以获得更好的性能,但是当我也尝试大尺寸时,我的 GPU 性能很低。

结果是:中央处理器:0.000006显卡:0.00134我的内核和 MATLAB 代码如下:

提前致谢!

matrix.cu

__global__ void matrix_mult2(double *A, double *B, double * C) {
int x = threadIdx.x;

C[x] = A[x] * B[x];


}



main.m
kernel = parallel.gpu.CUDAKernel( 'matrix_mult2.ptx', ...
'matrix_mult2.cu' );


kernel.ThreadBlockSize = [25,1,1];
kernel.GridSize = [1,1];


A = parallel.gpu.GPUArray.rand(5,5,'double');
B = parallel.gpu.GPUArray.rand(5,5,'double');
C = parallel.gpu.GPUArray.zeros(5,5);

C = feval(kernel,A,B,C);

最佳答案

您需要给 GPU 一些真正的工作要做。在您当前的示例中,唯一耗时的操作是将数据复制到 GPU 并返回。由于 CPU 不必执行这些步骤,因此它在这方面具有明显的优势。尝试例如大矩阵的实数矩阵乘法(不是逐元素乘法)。

用更正式的术语来说,您的内核受 PCIe 带宽限制。为了分摊来回复制 N 个元素所花费的时间,您需要执行一些比数据复制昂贵得多的操作。按元素乘法很便宜,并且与 N 成线性比例。 N×N 矩阵的乘法与 N3 成比例,而数据传输仅与 N 成比例2,因此对于足够大的矩阵,GPU 上的矩阵乘法将比 CPU 上的更快。

关于matlab - 从 MATLAB Low Performance 调用内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13302987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com