我正在使用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 执行计算会改变数据传输的速度吗?
答案 0 :(得分:2)
我根本没有看到这种行为(R2017b,特斯拉K20c) - 对我而言,无论哪种方式,转移都需要0.012秒。请注意,如果你每次都在一个新的MATLAB会话中运行它,那么你第一次在GPU上运行任何东西需要几秒钟 - 也许这会占4秒?
通常,使用gputimeit
来计算GPU上的时间,以确保您不会看到某些GPU操作的异步性质导致的奇怪结果。