Openmp问题请教
一:环境
Ubuntu 10.04(lucid) 内核Linux 2.6.32-30-generic
内存:2G 处理器: Pentium(R) Dual-Core cpu
#include<stdio.h>
#include<omp.h>
#include<time.h>
int main()
{
int N =1;
int i;
clock_t t0 =clock();
#pragma omp parallel for num_threads(5)
for(i=1;i<=100000;i++)
{
printf("total thread num is %d\n",omp_get_num_threads());
N *= i;
printf("the thread num is:%d\n",omp_get_thread_num());
}
clock_t t1 = clock();
printf("%d & %d\n",t0,t1);
printf("total time is %d\n",(int)(t1-t0));
printf("最后结果 = %d\n",N);
return 0;
}
很困惑使用OpenMP竟然更慢了,在这段程序中我只用了最基本的"parallel for",并没有很复杂的指令呀, 到底是什么原因变慢了呢,希望某位对OpenMP有研究的高手指点迷津!
Ubuntu 10.04(lucid) 内核Linux 2.6.32-30-generic
内存:2G 处理器: Pentium(R) Dual-Core cpu
#include<stdio.h>
#include<omp.h>
#include<time.h>
int main()
{
int N =1;
int i;
clock_t t0 =clock();
#pragma omp parallel for num_threads(5)
for(i=1;i<=100000;i++)
{
printf("total thread num is %d\n",omp_get_num_threads());
N *= i;
printf("the thread num is:%d\n",omp_get_thread_num());
}
clock_t t1 = clock();
printf("%d & %d\n",t0,t1);
printf("total time is %d\n",(int)(t1-t0));
printf("最后结果 = %d\n",N);
return 0;
}
很困惑使用OpenMP竟然更慢了,在这段程序中我只用了最基本的"parallel for",并没有很复杂的指令呀, 到底是什么原因变慢了呢,希望某位对OpenMP有研究的高手指点迷津!
...全文
相关推荐
MPI OpenMP混合编程解决N-Body问题
由于问题的复杂性,随着N的增大,计算量呈指数增长,因此需要高效的并行计算方法来解决。【MPI/OpenMP混合编程】MPI/OpenMP混合编程结合了这两种并行编程模型的优点。
基于OpenMP_MPI并行编程模型的N体问题的优化实现
通过与传统的N体问题并行算法对比,文章中的优化算法在执行时间和加速比上都有显著提升。综合上述内容,本文的研究为那些刚接触openmp+mpi混合编程的人提供了宝贵的参考。
timetabling-ga-mpi-openmp:使用MPI和OpenMP的遗传算法解决了时间表问题
《使用MPI和OpenMP的遗传算法解决时间表问题——深入解析C++实现》时间表问题,一个典型的组合优化问题,常在教育、资源分配、生产计划等领域出现,旨在找到最优的分配方案以满足各种约束条件。
C 代码 演示特定电路的详尽搜索 对于电路满足问题的解决方案, 使用 OpenMP 进行并行执.rar
标题 "C 代码演示特定电路的详尽搜索:对于电路满足问题的解决方案,使用 OpenMP 进行并行执行" 提供了两个关键知识点:电路满足问题(也称为布尔满足问题或SAT问题)以及OpenMP并行化。
TSP问题2-opt算法的串行与OpenMP并行实现代码包
提供旅行商问题(TSP)经典局部搜索算法2-opt的两种完整实现:标准C语言串行版本(2opt.c)和基于OpenMP的多线程并行版本(2opt-pa.c),附带一键运行脚本run.sh,支持Linu


