主题:关于Openmp和Mpi的选取
feiyuno1987
[专家分:10] 发布于 2011-09-02 20:31:00
现在要做并行计算,只在一台双核电脑上进行,该选用哪一种编程模型呢?用openmp还是mpi?
回复列表 (共15个回复)
11 楼
bshine1225 [专家分:720] 发布于 2011-09-03 21:56:00
我用的服务器是120核的。
12 楼
dongyuanxun [专家分:7180] 发布于 2011-09-03 22:04:00
MPI啊MPI
你们看lz的电脑只有双核啊
Windows下这个通讯损耗……
OpenMP加入也不是你一点儿代码都不改啊,如果这样,还不如使用gcc的自动并行化,针对无依赖循环好牛B啊。
13 楼
yeg001 [专家分:14390] 发布于 2011-09-04 00:37:00
openmp 是貌似很简单, 但是如果不认真学弄的话效率会很差.
单机多核心, 说句心里话openmp绝对比mpi效率高.
14 楼
feiyuno1987 [专家分:10] 发布于 2011-09-04 21:10:00
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 楼
feiyuno1987 [专家分:10] 发布于 2011-09-04 21:24:00
[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]
知道原因了,我的电脑根本不是双核的,傻逼了我这次!
我来回复