我正在编写我的第一个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循环。