使用open mp时减慢其他部分

时间:2015-06-08 17:27:26

标签: visual-studio-2012 parallel-processing openmp

我正在实施简单的" for子句"在visual studio 2012中使用open mp。 此实现文件是由nvcc编译的.cu文件。 当使用omp时," for子句"变得快,但其他部分变慢。 虽然浏览了许多相关问题,但我无法找到答案。 代码如下。

void Test()
{
unsigned char* pbDest = (unsigned char*)malloc(1000000);
unsigned char* pbSrc = (unsigned char*)malloc(3000000);
#pragma omp parallel for shared(pbDest, pbSrc)
    for (int i = 0; i < 1000000; i ++)
    {
        pbDest[i] = (unsigned char)((299 * pbSrc[3 * i] + 587 * pbSrc[3 * i + 1] + 114 * pbSrc[3 * i + 2]) / 1000);
    }
...//other part
free(pbDest);
free(pbSrc);
}

这&#34;测试&#34;函数在没有omp的情况下执行100ms,但是使用它,它在120ms内执行。 所以,我怀疑使用omp的for子句,但是在使用omp时它被正确优化,从50ms到20ms 问题是什么。 如果你帮助我,我将不胜感激。

0 个答案:

没有答案