回 帖 发 新 帖 刷新版面

主题:关于Openmp和Mpi的选取

现在要做并行计算,只在一台双核电脑上进行,该选用哪一种编程模型呢?用openmp还是mpi?

回复列表 (共15个回复)

11 楼


我用的服务器是120核的。

12 楼

MPI啊MPI
你们看lz的电脑只有双核啊
Windows下这个通讯损耗……

OpenMP加入也不是你一点儿代码都不改啊,如果这样,还不如使用gcc的自动并行化,针对无依赖循环好牛B啊。

13 楼

openmp 是貌似很简单, 但是如果不认真学弄的话效率会很差.
单机多核心, 说句心里话openmp绝对比mpi效率高.

14 楼

void test()
{
    int a = 0;
    clock_t t1 = clock();
    for (int i = 0; i < 100000000; i++)
    {
        a = i+1;
    }
    clock_t t2 = clock();
    printf("Time = %d\n", t2-t1);
}
int _tmain(int argc, _TCHAR* argv[])
{    

    clock_t t1 = clock();
#pragma omp parallel for
    for ( int j = 0; j < 2; j++ ){
        test();
    }
    clock_t t2 = clock();
    printf("Total time = %d\n", t2-t1);

    test();
    int a;
    cin>>a;
    return 0;
}


测试结果:

Time = 813
Time = 844
Total time = 859
Time = 375

显然没有并行,我想知道真相。

15 楼

[quote]void test()
{
    int a = 0;
    clock_t t1 = clock();
    for (int i = 0; i < 100000000; i++)
    {
        a = i+1;
    }
    clock_t t2 = clock();
    printf("Time = %d\n", t2-t1);
}
int _tmain(int argc, _TCHAR* argv[])
{    

    clock_t t1 = clock();
#pragma omp parallel for
    for ( int j = 0; j < 2; j++ ){
        test();
    }
    clock_t t2 = clock();
    printf("Total time = %d\n", t2-t1);

    test();
    int a;
    cin>>a;
    return 0;
}


测试结果:

Time = 813
Time = 844
Total time = 859
Time = 375

显然没有并行,我想知道真相。[/quote]


知道原因了,我的电脑根本不是双核的,傻逼了我这次!

我来回复

您尚未登录,请登录后再回复。点此登录或注册