1. 程式人生 > >Visual C++ 本地多核程式設計

Visual C++ 本地多核程式設計

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) {……}

編譯指導語句的功能是將序列的程式逐步地改造成一個並行程式,達到增量更新程式的目的,減少程式編寫人員一定的負擔。