熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 應用方案 > 如何創建及諧調支持多核的LabVIEW x86客戶DLL

如何創建及諧調支持多核的LabVIEW x86客戶DLL

時間:2009-05-20 14:39:52來源:ronggang

導語:?在不修改源代碼的條件下,通過Intel C++ 編譯器在單核PC上實現2.5 倍提速,通過編譯器中的各類最優化選項在雙核PC 上實現超過4.5 倍提速

The Challenge:

對NI LabVIEW軟件自動生成的外部代碼進行最優化,在x86構架下獲得最大性能,進而測量目標系統中DLL性能。

The Solution:

在不修改源代碼的條件下,通過Intel C++ 編譯器在單核PC上實現2.5 倍提速,通過編譯器中的各類最優化選項在雙核PC 上實現超過4.5 倍提速。

"VTune能夠監測許多不同種類的構架事件。VTune調諧助手能夠給出如何更好使用這些事件的建議。"

本應用包括了兩個組件——用于計算Pi 值的DLL、調用DLL 庫函數的LabVIEW 應用,可將結果顯示在圖形用戶界面中。

為計算Pi 值,我們采用了近似綜合技術,需要在單個循環中完成數百萬次浮點計算。選擇該范例是因為它是CPU 密集型的,并且是可優化的應用。如下所示為外部代碼的主循環結構,CPU的主要計算量是處理CalcSum 函數。

for(i=0; i

sum = CalcSum(i, sum, step);

我們的目標是通過編譯器中的優化選項以最快速度完成上述計算。

應用中有4 個函數,均包含于獨立源文件中。我們采用不同優化開關來編譯每個源文件。如圖1 所示。

表1.應用中的函數

“即插即用”的Intel C++ 編譯器

我們采用即插即用的Intel C++ 來代替Microsoft 編譯器,它可以輕松地集成到現有Microsoft Visual Studio DLL 工程中。更多關于Intel 編譯器,請訪問intel.com/software。

默認設置

測量首先以/O2選項創建應用,許多優化都是在這個層面上進行的。本文在此不討論其細節問題。表2顯示了/O2選項集成的各個優化設置。

表2./O2 選項中集成的最優化列表

自動向量化

自動向量化得益于新一代CPU 中集成的復雜指令集。多數現代CPU構架可擴展支持數據操作及多數據計算。擴展包括支持以單一指令實現多重計算(單指令多數據流,或稱SIMD)。Intel 編譯器能夠分析代碼,并通過SIMD 指令顯著提高代碼的效率。

本范例中,編譯器通過\QT 選項生成適合Core 2 構架的代碼,編譯器報告以下創建時間信息:

注釋:循環未作向量化處理

反匯編生成代碼后可看到編譯器插入了SIMD擴展指令集(SSE)。該指令集的使用直接提升了應用的運行性能,代碼運行速度提高了2倍。

這類優化可應用于目前大多數CPU 上,這里我們在Core 2 處理器上運行,當然您也可以在單核或早期CPU 上應用。

自動并行化

因為采用多核PC,我們會更感興趣如何通過\QParallel 選項,讓代碼在兩核上同時運行,以獲得進一步提速。該選項在編譯目標中插入了庫調用。庫調用提供了運行時所需的控制,使應用中的組件得以并行。

在首次運行中,編譯器并未顯著提高運行性能。通過開啟編譯器的報告功能,可以看到它并未進行優化。

注釋:循環未作并行化處理,循環無需并行化

Intel編譯器要對一段代碼進行自動并行化時,首先決定是否有值得進行并行化的代碼部分。在我們的代碼中由一個主循環完成所有工作。編譯器不能確定循環的重復次數,循環計數值只有在運行時得到。于是編譯器采取謹慎選擇,不對循環進行并行化處理。

我們可以通過在命令行輸入/Qpar-threshold:n 來進行試探優化,這里n 是介于0(總是并行處理)到100(不進行并行處理)的數,這個值決定了試探優化的程度。

輸入/Qpar-threshold:0 后,編譯器對代碼并行化,并輸出報告:

注釋:循環已作自動并行化處理

使用該優化后,程序的運行速度比默認設置下提高了近2 倍。

其它優化選項

本范例中,我們關注自動向量化及自動并行化。Intel C++ 編譯器利用一系列其它優化技術,包括高層優化、交叉過程優化、配置向導優化、速度優化、代碼大小優化、快速浮點處理等。

Intel 編譯器同時支持OpenMP 這個基于pragma 的標準,用于實現應用代碼的并行化。

測量性能

本范例中我們采用Win32 API 的定時函數,并將定時計算嵌入外部代碼。計算時間在LabVIEW 應用GUI 中顯示。

作為備選,我們還可采用LabVIEW的定時工具,或采用外部工具,如Intel VTune 性能分析器。

VTune能夠監測許多不同種類的構架事件。VTune調諧助手能夠給出如何更好使用這些事件的建議。

結論

不同開關的優化結果在表3 中列出。我們在雙核PC 上運行,并通過默認優化(/O2)作為基準來計算提速。

表3.不同優化方式下的速度提高

在應用自動向量化時可達到2.5倍速,該優化專用于非多核處理器,可用于目前多數CPU。

在應用自動并行化后可實現接近2 倍的提速。結合兩種優化更可達到4.6 倍。

以上結果是在不修改源代碼的前提下實現的。盡管我們選擇了模擬應用(計算Pi值),但這類優化技術能夠用于各類實際應用。從Intel編譯器用戶反饋中了解到,使用這些優化方式可顯著提高代碼執行速度。

如果您有任何問題,請留言給NI工程師,我們會盡快給您回電!

標簽:

點贊

分享到:

上一篇:利用LabVIEW實時模塊縮減F-35...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 镇平县| 江油市| 唐河县| 偏关县| 鲁山县| 榆社县| 莆田市| 潮安县| 怀仁县| 白水县| 四会市| 定兴县| 富阳市| 洪泽县| 德庆县| 上杭县| 高陵县| 宁河县| 晋宁县| 阜平县| 延长县| 临沧市| 尼玛县| 阳曲县| 璧山县| 九龙城区| 克东县| 启东市| 淮南市| 永州市| 屏南县| 冀州市| 抚顺市| 清流县| 镶黄旗| 巢湖市| 栾川县| 邻水| 胶州市| 蓝山县| 缙云县|