7-pt模板中的3-D循环比较

时间:2016-03-09 14:02:16

标签: c arrays for-loop

我在两个3-D域上进行7点模板更新。第一个是258x130x258,第二个是130x258x258。它们都具有相同数量的元素被更新。在C中,它们表示为连续数组:a1[258][130][258]x1[130][258][258]。简单地说明了他们的x-dimensiony-dimension已经交换,但z-dimension(最快变化的指数)是相等的。

循环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);

循环2:

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);

a1, b1, c1具有相同的尺寸,x1, y1, z1具有相同的尺寸。 alphaOmega_6是常量。循环1比循环2运行0.5 seconds更快。为什么会发生这种情况?

0 个答案:

没有答案