Skip to content

Instantly share code, notes, and snippets.

@nanmi
Last active January 13, 2021 08:32
Show Gist options
  • Save nanmi/c840e10c60893e3549cf068b083731e7 to your computer and use it in GitHub Desktop.
Save nanmi/c840e10c60893e3549cf068b083731e7 to your computer and use it in GitHub Desktop.
OpenMP Notes
apt-get install libomp-dev
//omp.cc
#include <iostream>
#include <omp.h>
int main()
{
    #pragma omp parallel for
    for (char i = 'a'; i <= 'z'; i++)
        std::cout << i << std::endl;
    return 0;
}
// g++ omp.cc -fopenmp -o omp

OpenMP 对可以多线程化的循环有如下五个要求:

  • 循环的变量(就是i)必须是有符号整形,其他的都不行。
  • 循环的比较条件必须是< <= > >=中的一种
  • 循环的增量部分必须是增减一个不变的值(即每次循环是不变的)。
  • 如果比较符号是< <=,那每次循环i应该增加,反之应该减小
  • 循环必须是没有奇奇怪怪的东西,不能从内部循环跳到外部循环,goto和break只能在循环内部跳转,异常必须在循环内部被捕获。OpenMP 负载均衡使用下面的语法
#pragma omp parallel for schedule(kind [, chunk size])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment