首页 文章

不明原因的Xeon-Phi开销

提问于
浏览
1

我试图在Xeon Phi KNC上运行这些不同n尺寸的代码 . 我正在获得表中所示的时间,但我不知道为什么我会遇到这些波动 . 你能指导我一下吗?提前致谢 .

码:

program prog
  integer, allocatable :: arr1(:), arr2(:)
  integer :: i, n, time_start, time_end
  n=481
  do while (n .le. 481000000)
    allocate(arr1(n),arr2(n))
    call system_clock(time_start)
    !dir$ offload begin target(mic)
    !$omp SIMD 
    do i=1,n
       arr1(i) = arr1(i) + arr2(i)
    end do
    !dir$ end offload 
    call system_clock(time_end)
    write (,) "n=",n," time=",time_end-time_start
    deallocate(arr1,arr2)
    n = n*10
  end do
end program

结果:

n=         481  time=        8881
 n=        4810  time=          75
 n=       48100  time=          53
 n=      481000  time=         261
 n=     4810000  time=        1991
 n=    48100000  time=       18912
 n=   481000000  time=      188203

1 回答

  • 1

    第一个卸载(n = 481)肯定会很慢,因为这是你卸载所有代码并在KNC上初始化进程的地方 . 如果您不希望在开始计时之前看到空卸载 .

    在高端(> = 481000),事情看起来很 Health ;每次运行比前一次运行慢约10倍,所以现在唯一的奇怪就是缩小了它们 . 其中一些可能与负载不 balancer 有关 . 如果你有一个60核处理器并运行4T / C(你没有给我们这个信息),4810次迭代=> ~20次迭代/核心,这意味着SIMD性能可能很差,因为你有16个通道 . 如果不对齐,您可能只执行导入和导出,而没有全宽度!)

相关问题