OpenMP学习笔记

2019-06-02  本文已影响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);
}

从这个小程序来看

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


#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是不变的

上一篇 下一篇

猜你喜欢

热点阅读