none
下面的代码运行时间为何有时会很慢? RRS feed

  • 问题

  • #pragma loop(hint_parallel(0))
    #pragma loop(ivdep)
    for(int r=0; r<mRhoSamples; r++)
    {
      for(int t=currentSubset; t<mThetaSamples; t+=totalOSEMSubset)
      {
        for(int p=0; p<mNumsOfPlanes; p++)
        {
          for (int bin=0; bin<mTOFBins; bin++)
         {
          mProjectionTOF[(t*mNumsOfPlanes*mRhoSamples+r*mNumsOfPlanes+p)*mTOFBins+bin] = 
          (&temp)[(t*mNumsOfPlanes*mRhoSamples+r*mNumsOfPlanes+p)*mTOFBins+bin]
          /mAttenuationPointer[t*mNumsOfPlanes*mRhoSamples + r*mNumsOfPlanes + p];
          }
        }
      }
    }

    请问:多数情况下上面的代码运行时间是1.9 s左右,但是有些时候会慢至7.5 s? 不知道是什么原因导致的?


    • 已编辑 the_key 2015年1月12日 9:52
    2015年1月12日 9:50

全部回复

  • 不用#pragma loop(hint_parallel(0))需要多少时间呢,会不会也是7.5s左右。。

    我没用过这个指令不是很清楚,是不是可能并行化执行循环没有起作用呢,从文档上来看某些情况下#pragma loop(hint_parallel(0))给编译器的提示不一定成功。

    http://msdn.microsoft.com/zh-cn/library/hh923901.aspx


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月13日 2:18
  • 不用自动并行大约3 s左右,但是仍然有时候会出现7s多的情况。会和cpu相关吗,我的cpu是E5-2650 v2。
    2015年1月13日 6:52