Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 7-pt模具中的三维回路比较_C_Arrays_For Loop - Fatal编程技术网

C 7-pt模具中的三维回路比较

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

我在两个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; 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);