OpenMP是帮助程序人员能够方便编写并行程序的一种解决方案,程序编写人员主要的任务还是放在问题的空间结构与逻辑结构上。如何能够使程序并行运行,是OpenMP解决的问题(算法问题)。
OpenMP是通过将任务分配到不同的线程上完成的。
1. 设置线程数目omp_set_num_threads()
API。可以设置OpenMP能够控制的并行线程数目。一般情况下,该数目等于处理器核数。当然可以不等于。在使用OpenMP时,可以最先调用该API。如果不调用该API,可以使用num_threads() clause。
2. 最基本的并行处理:
2.1. #pragma omp parallel
#include <stdio.h>
#include <omp.h>
int main()
{
#pragma omp parallel
printf("OpenMP parallel threads test/n");
}
运行该代码,可以看见,"OpenMP parallel threads test“ 被输出的次数等于设置的thread的数目,也就是说,#pragma omp parallel之后的第一个代码块,将会分配给各个核去执行。可以改写上面的代码为:
#include <stdio.h>
#include <omp.h>
int
main()
{
#pragma omp parallel
{
printf("OpenMP
parallel threads test/n");
printf("OpenMP PARALLEL THREADS TEST/n");
}
}
虽然这个例子很简单,但它能够帮助理解OpenMP核心思想:将代码最终分配到不同的核(线程)上去运行。
2.2. #pragma omp parallel for
当在#pragma omp parallel 后增加for时,不再是将后面的代码段简单的交给不同的核去执行(这样的话,就没有必要这么多此一举),而是将for 循环这个整体循环任务交给不同的核去做。也就是说,每个核负责运行一部分循坏任务。这样,就可以加速循环处理,从而使得程序提高了时间方面的性能。OpenMP负责拆分for循环然后分配,有好几种不同的拆分算法。由于循环变量是由各个线程共享的,所以在多重循坏中,环变量如何保持同步,结果如何保持正确,是掌握for的关键。
分享到:
相关推荐
OpenMP编程.ppt
多核并行编程中,openmp作为一个不错的选择,此文档对openmp的特点,编程特性跟据例子进行讲解,有助于快速掌握openmp的编程
INTEL 软件学院讲解INTEL工具的PPT系列: 01 Intel 处理器结构 02 Intel 编译器、vtune ...*04 用OpenMP编程 05 Thread building block 06 Thread checker 07 Thread profiler 分开上传,大家看需求下载
OpenMP编程指南.ppt
简单的介绍OPenMP及它的语法。适合入门
OpenMP编程课件ppt 使用Visual Studio 2005编写OpenMP程序
康奈尔大学资源,mpi和openmp混合编程详解,有一定参考价值。
并行程序设计(openMP编程)
openMP学习
OpenMP编程技术总结[归类].pdf
并行计算机架构与编程上机实验程序 求矩阵行列式MPI+OpenMP多线程编程 MPI+OpenMP多线程编程的PBS
OPenMp多核编程命令详解包括:OpenMP简介,基本语法,以及相关练习
openmp 经典入门篇 介绍了openmp的入门,实例 给读者一个最简单的入门教学
OpenMP is a framework for shared memory parallel computing. OpenMP is a standard C/C++ and Fortran compilers. Compiler directives indicate where parallelism should be used. C/C++ use #pragma ...
MPI+OpenMP混合并行编程模型应用研究
不可多得OpenMP编程学习资料,非常珍贵,个人收藏的
OpenMp并行编程技术是并行编程技术中比较容易学的一种,相对MPI来说非常简单,但是效果却也是非常的理想。欢迎下载
很好的OpenMP多线程并行编程资料。
OpenMp.cpp;stdafx.cpp。主要内容在OpenMp.cpp文件中。实现的功能是:在一个元素个数为10000的随机数组中(元素值为0—9之间),在不同的线程数时,查找某一个数字出现的次数和查找所用到的时间。