C 7-pt模具中的三维回路比较
我在两个3-D域上执行7点模具更新。第一个是C 7-pt模具中的三维回路比较,c,arrays,for-loop,C,Arrays,For Loop,我在两个3-D域上执行7点模具更新。第一个是258x130x258,第二个是130x258x258。它们都有相同数量的被更新元素。在C中,它们表示为连续数组:a1[258][130][258]和x1[130][258][258]。简单地说,它们的x维和y维是交换的,但是z维(变化最快的索引)是相等的 循环1: for(i = 1; i <= 256 ; i++) for(j = 1; j <= 128 ; j++) for(k = 1; k <= 256
258x130x258
,第二个是130x258x258
。它们都有相同数量的被更新元素。在C中,它们表示为连续数组:a1[258][130][258]
和x1[130][258][258]
。简单地说,它们的x维
和y维
是交换的,但是z维
(变化最快的索引)是相等的
循环1:
for(i = 1; i <= 256 ; i++)
for(j = 1; j <= 128 ; j++)
for(k = 1; k <= 256; k++)
a1[i][j][k] = alpha * b1[i][j][k] + (Omega_6) *(b1[i-1][j][k] + b1[i+1][j][k] +
b1[i][j-1][k] + b1[i][j+1][k] +
b1[i][j][k-1] + b1[i][j][k+1] +
c1[i][j][k] * H);
用于(i=1;我有单独测量过它们吗?多次,即差异在统计上是否显著?这可能与缓存有关。@DanielJour:是的,它们的计时是单独测量的。每个循环在实际程序中执行三次。是的,差异在统计上显著,因为在多重网格中,即使0.5秒也是一个很好的d差异(当您看到执行时间少于5秒时)。我怀疑它的缓存,但不知道如何缓存。我的L1d缓存为32KB,L2为256KB,共享L3缓存为每个核心2.5MB。感谢您的评论:)。您是否单独测量了它们?多次,即差异是否具有统计意义?这可能与缓存有关。@DanielJour:是的,它们的计时是单独测量的。每个循环在实际程序中执行三次。是的,差异具有统计意义,因为在多重网格中,即使0.5秒也是一个很好的差异(当您看到执行时间少于5秒时)。我怀疑它的缓存,但我不知道如何缓存。我的L1d缓存为32KB,L2为256KB,共享L3缓存为每个核心2.5MB。感谢您的评论:)。
for(i = 1; i <= 128 ; i++)
for(j = 1; j <= 256 ; j++)
for(k = 1; k <= 256; k++)
x1[i][j][k] = alpha * y1[i][j][k] + (Omega_6) *(y1[i-1][j][k] + y1[i+1][j][k] +
y1[i][j-1][k] + y1[i][j+1][k] +
y1[i][j][k-1] + y1[i][j][k+1] +
z1[i][j][k] * H);