在Matlab中的GPU时序

时间:2018-03-10 23:21:21

标签: matlab performance gpu

我正在使用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 执行计算会改变数据传输的速度吗?

1 个答案:

答案 0 :(得分:2)

我根本没有看到这种行为(R2017b,特斯拉K20c) - 对我而言,无论哪种方式,转移都需要0.012秒。请注意,如果你每次都在一个新的MATLAB会话中运行它,那么你第一次在GPU上运行任何东西需要几秒钟 - 也许这会占4秒?

通常,使用gputimeit来计算GPU上的时间,以确保您不会看到某些GPU操作的异步性质导致的奇怪结果。