1

我写了一个算法来解决一组 PDE。在while循环中间有一些很长的方程,我试图通过GPU计算这些方程以加快速度,然后进一步利用这些方程的结果。它运行成功,但是,该gather()功能几乎占总时间的 1/5(3000 秒)。我尝试[dk1,dk2,dk3,dk4,dk5,dk6,dk7,dk8,dk9] = dkfunction(S,T)在命令窗口中使用,它只花费了 0.001 秒。

我很困惑为什么这个大循环中的代码表现不佳?我想知道是否有办法加快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
4

0 回答 0