首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解释的Xeon-Phi开销

无法解释的Xeon-Phi开销
EN

Stack Overflow用户
提问于 2018-07-06 17:59:25
回答 1查看 109关注 0票数 1

我尝试在Xeon Phi KNC上运行这段不同大小的代码。我得到了表中显示的时间,但我不知道为什么我会遇到这些波动。你能给我指点一下吗?提前谢谢。

代码:

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
 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
EN

回答 1

Stack Overflow用户

发布于 2018-07-09 16:29:30

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

在高端(>=481000),事情看起来很正常;每次运行都比以前慢了大约10倍,所以现在唯一奇怪的是低端运行的缩放。这其中有可能与负载不平衡有关。如果你有一个60核的处理器,并且运行4T/C (你没有给我们这个信息),4810次迭代=> ~20次迭代/核心,这意味着单指令多核的性能可能会很差,因为你有16个通道。如果没有对齐,您可能只执行入刀和退刀,而不是全宽!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51207834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档