Visual Studio 2010並行編程及調試診斷功能詳解

 

Visual Studio2010 Beta 1發佈後,開發人員從其新特性,新功能中得到了不少的幫助。這裏將介紹Visual Studio 2010並行編程方面的改進,較Visual Studio 2008有了極大的提高。

每當出現新的編程模型時,開發人員便需要一個用來學習、編寫、調試以及優化代碼的健壯的工具,以便能更好的利用該模型。由於並行計算在公式中添加了新的變量,對於工具的需求便更爲突出。

Visual Studio 2010大幅度的提升了並行調試的用戶體驗。其中大部分的功能在Visual Studio 2008中也可通過插件獲得。這裏我將給大家介紹在Visual Studio 2008以及即將發佈的Visual Studio2010並行編程、調試以及診斷等功能。

調試

雖然Visual Studio 2005有一個內建的MPI程序的簡單調試器,但並未提供完整的“F5”體驗。在新的Visual Studio 2008 插件(同時也將集成到Visual Studio 2010中)中,您只需選擇一個集羣頭節點以及您需要多少核,然後按F5就可以對您的MPI程序進行調試了。

調試MPI程序

除了調試團隊所作的很棒的核心工作以外,並行調試技術的領先供應商Allinea還將他們的環境導入到了Visual Studio中。Allinea的插件提供了針對集成的MPI程序的調試,包括基於排名的上下文切換、組單步調試、暫停及運行、並行棧視圖和迭合。下面是Allinea的MPI調試環境:

Allinea的MPI調試環境

面向服務的架構調試

Windows HPC Server 2008的一個重要的新的編程模型是集羣系統面向服務體系架構 (Cluster SOA),它是基於WCF構建的,幷包含由HPC的調度器和代理節點提供的高級調度和負載平衡功能。目前爲止,對面向服務架構的集羣系統的調試還僅僅限於基本的WCF/.Net方式的調試,並無集羣的集成。在Visual Studio 2010中,一個集羣面向服務架構插件將提供SOA設置標籤,在這裏您可以選擇頭節點、調試節點和服務、部署運行時類庫並自動進行清理。現在來看一下Visual Studio 2010中新的SOA調試器吧:

SOA調試器

剖析 (Profiling)

Windows Server HPC 1.0中沒有集成針對MPI程序的剖析功能。在Windows HPC Server 2008中,XPerf等工具提供了MPI的剖析以及系統級別的剖析和故障排查的功能。但即使是XPerf也對MPI消息流量等細節所知甚少,目前爲止也沒有消息流量的瀏覽器。自那以後,消息流量瀏覽器Vampir被導入到Windows並完整地集成在事件跟蹤日誌(ETW)中。Vampir提供了對消息順序和延遲進行故障排查的功能。還有更多的開源HPC工具,比如JumpShot是一個免費的基於Java的MPI消息瀏覽器。

在很多時候,VS內置的剖析器就能提供性能問題的分析。在Visual Studio 2010中,這一功能與HPC工作調度器進行了完整的集成,用來分析一個特定的MPI排名或節點的性能。Visual Studio MPI 剖析功能提供了行級別的剖析信息,包括與源代碼視圖並排的執行過程中的溫度視圖:

溫度視圖

剖析器還顯示多個運行或版本的結果比較報告,這樣您就可以輕鬆地瞭解您的修改所帶來的效果。

修改後的效果

MPI 運行時分析

除了調試器和剖析器之外,有時您還需要專門的分析工具來幫助分析大規模並行程序的複雜度。位於斯圖加特的HLRS/ZIH是德國的一個在該領域領先的機構,將他們自己的MPI分析工具Marmot導入到了Visual Studio 2008。Marmot可以用來檢查MPI調用的輸入參數的合法性、檢測無法再生性、死鎖和對資源的不正確管理。下面是運行中的Marmot:

運行中的Marmot

從Printf到集成的剖析和調試

不久前我們還在printf風格的調試世界裏,“藝術級”的調試和剖析工具將此往前推進了一大步。

在Visual Studio裏,您可以調試和剖析高性能MPI程序以及擁有成百到上千個核的集羣SOA應用程序。您可以使用XPerf和事件跟蹤日誌來獲取應用程序在整個系統環境中的全局視圖。Visual Studio 2010裏新增的多核剖析和調試工具也可以有效地用於集羣的節點級別分析。

Visual Studio正成爲越來越豐富和有效的編寫各種並行程序的開發環境。訪問Windows HPC Server 開發人員資源中心您能找到更多關於Windows HPC的開發模型。在CodePlex的Parallel Dwarfs站點上您能找到許多使用各種Visual Studio 2010並行編程模型的示例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章