Function 如何提高MATLAB中gather()函数的速度,或者这是将数据从gpuArray传输到通用阵列的另一种方法?
我写了一个算法来解一组偏微分方程。在环的中间有一些很长的方程,我试图用GPU来计算这些方程以加快速度,然后进一步利用这些方程的结果。它运行成功,但是,Function 如何提高MATLAB中gather()函数的速度,或者这是将数据从gpuArray传输到通用阵列的另一种方法?,function,matlab,gather,Function,Matlab,Gather,我写了一个算法来解一组偏微分方程。在环的中间有一些很长的方程,我试图用GPU来计算这些方程以加快速度,然后进一步利用这些方程的结果。它运行成功,但是,gather()函数几乎占用了总时间的1/5(3000秒)。我试着在命令窗口中使用[dk1,dk2,dk3,dk4,dk5,dk6,dk7,dk8,dk9]=dkfunction(S,T),只需要0.001s 我不明白为什么这个代码在一个大循环中执行得很差?我想知道是否有一种方法可以加速gather()函数或其他函数?顺便问一下,mex文件中数组的
gather()
函数几乎占用了总时间的1/5(3000秒)。我试着在命令窗口中使用[dk1,dk2,dk3,dk4,dk5,dk6,dk7,dk8,dk9]=dkfunction(S,T)
,只需要0.001s
我不明白为什么这个代码在一个大循环中执行得很差?我想知道是否有一种方法可以加速gather()
函数或其他函数?顺便问一下,mex文件中数组的大小是否应该是常量
(注意:我的代码很长,所以我附加了我问题的分析器和核心部分(简化)。dkfunction
与cuda相关)
以下代码操作时间的探查器:
while t<n
%Omitted code for S and T calculation.
%%%
[dk1,dk2,dk3,dk4,dk5,dk6,dk7,dk8,dk9] = dkfunction(S,T);
[dkvTdT,dkvTdS,dkvhdT,dkvhdS,dphaivdT,dphaivdS,dkhdS,dkdS,dphaidS] = gather(dk1,dk2,dk3,dk4,dk5,dk6,dk7,dk8,dk9);
%%%
%Omitted code to use dkvTdt..... to calculate other variables and t steps.
%%%
end