一起来学OpenMP(2)——常用的库函数

一、引言

第一节通过一个简单的示例程序演示了OpenMP,这一节介绍常用的四个库函数,来进一步认识OpenMP。

 

二、常用的库函数

函数原型                                        功能

int omp_get_num_procs(void)     返回当前可用的处理器个数

int omp_get_num_threads(void)  返回当前并行区域中的活动线程个数,如果在并行区域外部调用,返回1

int omp_get_thread_num(void)    返回当前的线程号(个人感觉这里为omp_get_thread_ID好一些)

int omp_set_num_threads(void)  设置进入并行区域时,将要创建的线程个数

 

三、并行区域

输入结果:

   

 

系统为双核,所以默认创建了两个线程来执行并行区域,所以打印了两次OpenMP。

 

若将系统环境变量做如下设置:

 

重启VS2008,则输出

 

这是因为默认情况下,有几个核,则创建几个线程,但是可以通过环境变量来指定可以创建的线程个数。其实omp_set_num_threads函数也可以做到这一点,后面再做描述。

 

四、常用库函数示例

下面的示例代码同时演示了四个库函数。

 

输出:

 

第一个并行区域默认创建两个线程,线程ID分别为0和1,由于是并行输出,所以打印有些乱,但可以看到最后的01分别代表线程ID 0和ID 1。

第二个并行区域中指定创建线程个数为4,线程ID分别为0、1、2、3。

 

 

五、小节

演示了常用OpenMP库函数的使用方法,下一节讲解for循环的并行化。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/donhao/article/details/5651782
个人分类: 多核编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭