OpenMP的多线程for循环

时间:2017-08-30 05:06:43

标签: c++ multithreading openmp

我正在编写我的第一个OpenMP项目。这是我的工作:

myFooFunction{
   int64_t Gm = 0;
   double* dist = (double*)middleManDouble;
   int64_t LengthofData = Frames * Height * Width;
   mexEvalString("tic");
   if (BitDepth == 10){
       const unsigned __int16* src__int16 = (unsigned __int16*)middleMan;
       //#pragma omp parallel
       //#pragma omp for
       #pragma omp parallel for
       for (Gm = 0; Gm < LengthofData; ++Gm){
           dist[Gm] = (double)(src__int16[Gm]);
       }
   }
   else if (BitDepth == 8){
       const unsigned __int8* src__int8 = (unsigned __int8*)middleMan;
       //#pragma omp parallel
      // #pragma omp for
       #pragma omp parallel for
       for (Gm = 0; Gm < LengthofData; ++Gm){
           dist[Gm] = (double)(src__int8[Gm]);
       }
   }
   mexEvalString("toc");
}

但是我没有看到for循环的执行时间有所改善,尽管我的CPU核心利用率都高于95%。我的代码出了什么问题? 我是否以正确的方式使用OpenMp?我只想在多线程上执行for循环。

0 个答案:

没有答案