随笔分类 -  OpenMP

OpenMP 中的线程任务调度
摘要:OpenMP中任务调度主要针对并行的for循环,当循环中每次迭代的计算量不相等时,如果简单地给各个线程分配相同次数的迭代,则可能会造成各个线程计算负载的不平衡,影响程序的整体性能。如下面的代码中,如果每个线程执行的任务数量平均分配,有的线程会结束早,有的线程结束晚: 1 #include 2 #include 3 4 int main(){ 5 int a[100][100] = {0}; 6 #pragma omp parallel for 7 for (int i =0; i 2 #include 3 int main(){ 4 int a[100][100] ... 阅读全文

posted @ 2014-03-26 16:16 旭东的博客 阅读(12563) 评论(1) 推荐(1) 编辑

OpenMP 线程同步之临界区
摘要:多核/多线程编程中肯定会用到同步互斥操作。除了互斥变量以为,就是临界区。临界区是指在用一时刻只允许一个线程执行的一段用{...},包围的代码段。在OpenMP中临界区声明方法如下:#pragma omp critical [(name)] //[]表示名字可选{ //需要同一时刻只能有一个线程访问的代码}如下面的代码: 1 #include 2 #include 3 4 int main() 5 { 6 int sum = 0; 7 #pragma omp parallel 8 printf("Hello World!!!\n"); 9 10 #pragma omp pa. 阅读全文

posted @ 2014-03-21 17:52 旭东的博客 阅读(3850) 评论(0) 推荐(0) 编辑

OpenMP 线程互斥锁
摘要:OpenMP是跨平台的多核多线程编程的一套指导性的编译处理方案(Compiler Directive),指导编译器将代码编译为多线程程序。多线程编程中肯定会涉及到线程之间的资源共享问题,就可以使用互斥锁,就是只有获得互斥锁的线程可以执行,其他线程阻塞。1.OpenMP中的互斥锁函数 void om... 阅读全文

posted @ 2014-03-01 11:30 旭东的博客 阅读(9360) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示