OpenMP学习 第九章 通用核心回顾

第九章 通用核心回顾


  • 创建线程组:
    • shared(list)
    • private(list)
    • firstprivate(list)
    • default(none)
    • reduction(operator:list)
#pragma omp parallel [clause[,clause]...]
{
    //body of parallel
}
  • 共享工作循环构造:
    • private(list)
    • firstprivate(list)
    • nowait
    • reduction(operator:list)
    • schedule(kind[,chunk_size])
#pragma omp for [clause[,clause]...]
    //for-loop
  • single构造:
    • private(list)
    • firstprivate(list)
    • nowait
#pragma omp single [clause[,clause]...]
{
    //body of single
}
  • 组合式并行共享工作循环构造:
    • shared(list)
    • private(list)
    • firstprivate(list)
    • reduction(operator:list)
    • schedule(kind[,chunk_size])
#pragma omp parallel for [clause[,clause]...]
    //for-loop
  • 创建显式任务:
    • shared(list)
    • private(list)
    • firstprivate(list)
    • default(none)
#pragma omp task [clause[,clause]...]
{
    //body of task
}
  • 任务等待指令:
#pragma omp taskwait
  • 栅栏指令:
#pragma omp barrier
  • 临界区构造:
#pragma omp critical
{
    //body of critical
}
  • 常用的数据环境子句:

    • shared(list)
    • private(list)
    • firstprivate(list)
  • 归约子句:

    • reduction(operator:list)
运算符 初始值
+ 0
* 1
- 0
min 最大正数
max 最大负数
  • 设置默认并行区域请求线程数的环境变量:
OMP_NUM_THREADS list
  • 设置后继并行区域的默认请求线程数:
void omp_set_num_threads(int num_threads);
  • 返回最内围并行区域当前组的线程数:
int omp_get_num_threads(void);
  • 返回最内围并行区域当前组内调用线程的线程号:
int omp_get_thread_num(void);
  • 返回经过的墙钟时间:
double omp_get_wtime(void);
posted @ 2024-01-24 21:36  Mesonoxian  阅读(11)  评论(0编辑  收藏  举报