多核编程框架 openMP

分享到:

OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性注释 (Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMP的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMP提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMP 时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。

OpenMP提供的这种对于并行描述的高层抽象降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本 身,而非其具体实现细节。对基于数据分集的多线程程序设计,OpenMP是一个很好的选择。同时,使用OpenMP也提供了更强的灵活性,可以较容易的适 应不同的并行系统配置。线程粒度和负载平衡等是传统多线程程序设计中的难题,但在OpenMP中,OpenMP库从程序员手中接管了部分这两方面的工作。

但是,作为高层抽象,OpenMP并不适合需要复杂的线程间同步和互斥的场合。

OpenMP的另一个缺点是不能在非共享内存系统(如计算机集群)上使用。在这样的系统上,MPI使用较多。

openmp_336x120.gif

项目主页:http://www.open-open.com/lib/view/home/1326961334624

昵    称:
验证码:

相关文档:

  • 轻量级的 C++ 库 UCommon
    UCommon 是一个轻量级的 C++ 库,使用 C++ 设计模式,适合用于嵌入式应用的开发,例如使用 uClibc 和 POSIX 线程支持。...
  • 开源编译器 Open64
    Open64最初的名字叫Pro64,后改名为Open64,采用GPL许可证,参与开发的机构包括了SGI、中科院、惠普和特拉华大学。...
  • Adobe FlasCC的开源版本:CrossBridge
    CrossBridge是Adobe FlasCC的开源版本,它提供了一个完整的C/C++开发环境,目的是把C/C++程序编译成Flash程序,运行于Flash Runtime之上。CrossBridge...
  • 嵌入式开发中的C容器类 FooLib
    FooLib 是一个用c实现了常用的容器,如果rbtree,hashtable,list,vector,deque,heap,map,以及定时器,os api,应用开发框架。 实现了一个基于btree索引...
  • 如何实现一个malloc
    任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但...
  • C编程语言的编译器:8cc C Compiler
    8CC是一个C编程语言的编译器。它的目的是支持所有C11语言功能,同时尽可能保持代码少而简单。...
  • C语言高级编程库:Cello
    Cello的高级结构受到了Haskell的启发;而语法与语义受到Python,Obj-C的启发。它不是关于C语言的面向对象的,而是提供一种工具将C语言转...
  • Google Sparse Hash 简介
    该包由2种类型和HashTable实现组成。 Sparse 设计的实现过程中考虑的是空间优先;dense 设计上考虑的是时间优先。设计的注重点不一样,...
  • C/C++代码静态分析插件:VisualStudio_Scan
    VisualStudio_Scan 是一款开源免费,集成在 Visual Studio 中的 c/c++ 代码静态分析插件,集成了cppcheck,coverity,pclint 等业界优秀的静态分析工具...
  • 编码格式转换库 libiconv
    iconv是一个计算机程序以及一套应用程序编程接口的名称。它的作用是在多种国际编码格式之间进行文本内码的转换。...
  • 解析程序参数的C语言库 - The Lean Mean C++ Option Parser
    The Lean Mean C++ Option Parser 是一个用来解析程序参数 (argc, argv) 的 C 库,支持短和长的参数格式 getopt(), getopt_long(), and getopt_long_only(), 但提供...
  • C++ 标准类库 STLPort
    STLport 是一个多平台的 ANSI C++ 标准类库实现,具备很多高级特征,并且为效率,异常安全性和线程安全性做了优化,还做了许多扩展,如...
  • BOOST 库中filesyatem 库的学习
    BOOST 库中filesyatem 库的学习...
  • 命令行参数处理的C函数库 longopt
    longopt是一个处理命令行参数的C函数库。...
  • C++集成开发工具 KDevelop
    KDevelop 是一个免费,开源的IDE(Integrated Development Environment) 。支持多种平台包括:MS Windows, Mac OS X, Linux, Solaris 和 FreeBSD....
  • C语言日志、事务API libjio
    libjio是一个C库做日志,交易为导向的I/O它提供了一个类UNIX的文件操作功能(如打开,读取和写入) ,这是装在一个交易框架,以使文件...
  • C++截图-二维码识别工具:BusyBoy.QReader
    实现截图和二维码识别的小工具 按下ctrl+alt+z截图 按下ctrl+alt+x识别二维码...
  • C++并发编程库:Theron
    Theron是一个轻量级的C++并发编程库,其实现了Actor模式,利用Theron可以轻松地实现并发编程。Theron的API清晰简洁,而且支持*NIX、windows、AR...
  • google开源的C++性能分析工具 - gperftools
    gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈。...
  • 多核编程框架 FastFlow
    FastFlow 是一个多核编程框架,实现了无锁的 MPMC FIFO 队列规范,用以支持多核的高级应用开发。速度比 TBB、OpenMP 都要快。...