美文网首页
OpenMP学习笔记

OpenMP学习笔记

作者: 红糖红糖 | 来源:发表于2019-06-02 00:49 被阅读0次

Hello World程序

#include <stdio.h>
#include <stdlib.h>
#include <omp.h>

void Hello(void);

int main(int argc,char* argv[])
{
    int thread_count=10;

    # pragma omp parallel num_threads(thread_count)
    Hello();

    return 0;
}

void Hello(void)
{
    int my_rank=omp_get_thread_num();
    int thread_count=omp_get_num_threads();
    printf("this is from %d of %d\n",my_rank,thread_count);
}

从这个小程序来看

  • # pragma omp parallel num_threads(thread_count)就是意味着它下面的内容要并行,并行的线程数为thread_count。和pthreads不同,开发者不需要在这里手动为线程分配内存并依次启动线程了,方便很多。

OpenMP并不会确保你能分配这么多线程,但是现在的计算机基本都可以满足你想要的线程数。

  • 在并行函数内部,omp_get_thread_num();可以获得当前线程是哪一条线程
  • 在并行函数内部,omp_get_num_threads();可以获取当前所有线程的数目

#pragma omp parallel for num_threads(THREAD_NUM) schedule(static, CHUNK_SIZE)
#pragma omp parallel for num_threads(THREAD_NUM) schedule(dynamic, CHUNK_SIZE)
#pragma omp parallel for num_threads(THREAD_NUM) schedule(guided, CHUNK_SIZE)

默认的情况下,是使用static,chunk_size为1
其中guided与dynamic的区别在于guided的chunk_size会指数级下降,而dynamic的chunk_size是不变的

相关文章

  • OpenMP学习笔记

    Hello World程序 从这个小程序来看 # pragma omp parallel num_threads(...

  • OpenMP笔记

    进程与线程 进程:进程是正在运行的程序实例线程:线程是进程中实际运作单位,一个进程可以并行多个线程 进程包含如下程...

  • OpenMP入门指南

    What's OpenMP The OpenMP API supports multi-platform shar...

  • OpenMP并行域学习

    参考学习文档:https://www.doc88.com/p-9708754893392.html[https:/...

  • Cython:OpenMP配置

    在Cython中使用parallel、prange或者OpenMP时,除了添加/openmp编译参数,还需要将vc...

  • openMP 函数总结(并行程序设计导论)

    本篇文章只是记录api的用法和回顾,方便记忆 openMP openMP提供“基于指令”的共享内存API。这就意味...

  • Windows上配置MPI环境

    本文目标:配置MS-MPI,mpich2, openmp的运行环境,openmp配置非常简单,关键是算法。 mpi...

  • 多线程 Windows MSVC OpenMP

    Thread affinity with Windows, MSVC, and OpenMP[https://st...

  • OpenMP并行编程

    目前很多移动端的深度学习前向运算框架都用到openmp,如ncnn、paddlelite、mace等。所以这篇来介...

  • Mac下安装OpenMP并完成编译

    OpenMP在Mac上的安装,涉及到一些编译器的历史。。。 OpenMP环境添加(Mac) 安装错误 安装错误参考...

网友评论

      本文标题:OpenMP学习笔记

      本文链接:https://www.haomeiwen.com/subject/naoztctx.html