【发布时间】:2018-08-19 06:43:50
【问题描述】:
我正在使用 GeForce GT 720 在 Matlab 中进行一些基本计算。
我只是在做矩阵乘法:
A = rand(3000,3000); % Define array using CPU
tic; % Start clock
Agpu = gpuArray(A); % Transfer data to GPU
Bgpu = Agpu*Agpu; % Perform computation on GPU
time = toc; % Stop clock
在这段代码中,我的时钟正在计时数据传输到 GPU 和 GPU 上的矩阵乘法,我得到的时间约为 4 秒。我怀疑数据传输比乘法花费的时间要多得多,所以我用计时器将其隔离:
A = rand(3000,3000); % Define array using CPU
tic; % Start clock
Agpu = gpuArray(A); % Transfer data to GPU
time = toc; % Stop clock
Bgpu = Agpu*Agpu; % Perform computation on GPU
确实需要大约 4 秒。但是,如果我注释代码的最后一行,这样就不会进行任何乘法运算,我的代码速度会提高到 ~0.02 秒。
在将数据传输到 GPU 之后使用 GPU 执行计算会改变数据传输的速度吗?
【问题讨论】:
-
在评论乘法时,我怀疑会产生这个奇怪的结果,因为字节码优化没有看到声明的数组
Agpu没有使用,甚至没有执行传输......这只是一个假设,但我无法验证,因为我的显卡不支持。
标签: matlab performance gpu