并行计算omp
来源:互联网 发布:quick report软件下载 编辑:程序博客网 时间:2024/06/03 22:40
对于一些比较消耗时间的for循环,采用openMP的优化代码
首先编译器是vs2017的基础上,项目右键—>属性—>c/c++—>语言—>支持omp
常见指令包括
#pragma omp parallel
{
每个线程执行大括号内的代码
}
带有for制导的语句:
1. #pragma omp parallel for for() //作用域只是紧跟着的那个for循环2.#pragma omp parallel{ #pragma omp for for()}//在整个并行块中可以出现多个for制导指令
如果不使用for制导语句,则每个线程都执行整个for循环。所以,使用for制导语句将for循环拆分开来尽可能平均地分配到各个线程执行
int main(){ omp_set_num_threads(2); //四个线程 不超过CPU核心数#pragma omp parallel for (int i = 0; i < 10; i++) { //cout << "i = " << i << ", I am Thread " << omp_get_thread_num() << endl; printf("i = %d, I am Thread %d\n", i, omp_get_thread_num()); } cout << endl; return 0;}
i = 0, I am Thread 0i = 0, I am Thread 1i = 1, I am Thread 0i = 1, I am Thread 1i = 2, I am Thread 0i = 2, I am Thread 1i = 3, I am Thread 0i = 3, I am Thread 1i = 4, I am Thread 0i = 4, I am Thread 1i = 5, I am Thread 0i = 5, I am Thread 1i = 6, I am Thread 0i = 6, I am Thread 1i = 7, I am Thread 0i = 7, I am Thread 1i = 8, I am Thread 0i = 8, I am Thread 1i = 9, I am Thread 0i = 9, I am Thread 1
int main(){ omp_set_num_threads(6); //四个线程 不超过CPU核心数#pragma omp parallel for for (int i = 0; i < 10; i++) { //cout << "i = " << i << ", I am Thread " << omp_get_thread_num() << endl; printf("i = %d, I am Thread %d\n", i, omp_get_thread_num()); } cout << endl; return 0;}
i = 0, I am Thread 0i = 2, I am Thread 1i = 4, I am Thread 2i = 3, I am Thread 1i = 5, I am Thread 2i = 1, I am Thread 0i = 6, I am Thread 3i = 9, I am Thread 5i = 7, I am Thread 3i = 8, I am Thread 4
阅读全文
0 0
- 并行计算omp
- vs上C/C++并行计算#pragma omp
- omp计算时间(高精度)
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- OpenMP #pragma omp parallel for并行化小探究
- 云计算+并行计算
- Mac系统升级后eclipse菜单无法使用解决方案
- 深搜专题(DFS大法好!)
- Microsoft SQL Server学习(五)--操作符聚合函数
- 排队论中的常见分布:泊松分布、指数分布与爱尔朗分布
- 大话数据结构读书笔记(3)----栈和链表
- 并行计算omp
- 排序算法总结
- 流媒体直播之一流媒体直播实现的整体方案和思路
- 一场简单前端讲座
- 助教工作体会
- Java计算圆周率
- idea常用快捷键
- 【面向HTML5--地理定位】
- 2017年10月8日周记