相关疑难解决方法(0)

malloc如何在多线程环境中工作?

典型的malloc(对于x86-64平台和Linux操作系统)是否在开始时天真地锁定互斥锁并在完成时释放它,或者是否以更精巧的方式更智能地锁定互斥锁,从而减少锁争用?如果它确实是第二种方式,它是如何做到的?

c linux malloc gcc x86-64

48
推荐指数
2
解决办法
2万
查看次数

使用OpenMP并行化C++代码,计算实际上并行较慢

我有以下要并行化的代码:

int ncip( int dim, double R)
{   
    int i;
    int r = (int)floor(R);
    if (dim == 1)
    {   
        return 1 + 2*r; 
    }
    int n = ncip(dim-1, R); // last coord 0

    #pragma omp parallel for
    for(i=1; i<=r; ++i)
    {   
        n += 2*ncip(dim-1, sqrt(R*R - i*i) ); // last coord +- i
    }

    return n;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试并行化for循环时,没有openmp运行的程序执行时间是6.956s,我的执行时间大于3分钟(这是因为我自己结束了).在并行化此代码方面我做错了什么?

第二次尝试

    int ncip( int dim, double R)
{   
int i;
int r = (int)floor( R);
if ( dim == 1)
{   return …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing openmp

3
推荐指数
1
解决办法
290
查看次数

标签 统计

c ×1

c++ ×1

gcc ×1

linux ×1

malloc ×1

openmp ×1

parallel-processing ×1

x86-64 ×1