Visual C++ 本地多核编程

来源:互联网 发布:矩阵diag是什么意思 编辑:程序博客网 时间:2024/06/06 06:48

Visual C++从2005版开始支持OpenMP 2.0的多核编程(2008和2010版也只支持2.0版)。
Visual C++ 2010 Beta 1版支持本地C++的PPL(Parallel Pattern Library,并行模式库)编程。
本小节介绍OpenMP多核编程,主要内容包括:OpenMP简介、OpenMP编程技术、OpenMP应用程序设计的考虑因
素和Visual C++的OpenMP多核编程。
OpenMP的MSDN帮助文档位于:开发工具与语言\Visual Studio\Visual C++\参考信息
\Libraries Reference\OpenMP\(为英文版)。

OpenMP (Open Multi-Processing,开放多处理)是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程
语言,是一种能够被用于显示指导多线程、共享内存并行的应用程序编程接口(API),包含一组编译器指令、库程序、
和影响运行时行为的环境变量。OpenMP具有良好的可移植性,支持多种编程语言C/C++ 和Fortan等。支持OpenMP
的编译器包括Sun Compiler、GNU Compiler、Intel Compiler和Microsoft Visual C++等。OpenMP能够支持49
多种平台,包括大多数的类UNIX系统以及Windows NT系统(Windows 2000、Windows XP、Windows Vista、
Windows 7等)。
penMP不包含的性质有:不是建立在分布式存储系统上的、不是在所有的环境下都是一样的、不是能保证让多数共享存储器均能有效的利用

编译指导语句
在编译器编译程序的时候,会识别特定的注释,而这些特定的注释就包含着OpenMP程序的一些语义。

#pragma omp <directive> [clause[ [,] clause]…] newline #pragma(编译指示/附注/注记/杂注)为编译指令,omp 表示OpenMP;<directive>(指导/指令/指示/指向)部分就包含了具体的编译指导语句,包括:parallel、for、parallel for、section、sections、single、master、critical、flush、ordered和atomic;clause(子句)为可选的若干子句,子句间可以用逗号或白空符分隔;newline为换行符,每个OpenMP语句必须以换行符结束。例如: #pragma omp parallel private(var1, var2) shared(var3) {……} 

编译指导语句的功能是将串行的程序逐步地改造成一个并行程序,达到增量更新程序的目的,减少程序编写人员一定的负担。

原创粉丝点击