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程序進行調試了。
除了調試團隊所作的很棒的核心工作以外,并行調試技術的領先供應商Allinea還將他們的環境導入到了Visual Studio中。Allinea的插件提供了針對集成的MPI程序的調試,包括基于排名的上下文切換、組單步調試、暫停及運行、并行棧視圖和迭合。下面是Allinea的MPI調試環境:
面向服務的架構調試
Windows HPC Server 2008的一個重要的新的編程模型是集群系統面向服務體系架構 (Cluster SOA),它是基于WCF構建的,并包含由HPC的調度器和代理節點提供的高級調度和負載平衡功能。目前為止,對面向服務架構的集群系統的調試還僅僅限于基本的WCF/.Net方式的調試,并無集群的集成。在Visual Studio 2010中,一個集群面向服務架構插件將提供SOA設置標簽,在這里您可以選擇頭節點、調試節點和服務、部署運行時類庫并自動進行清理。現在來看一下Visual Studio 2010中新的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:
從Printf到集成的剖析和調試
不久前我們還在printf風格的調試世界里,“藝術級”的調試和剖析工具將此往前推進了一大步。
在Visual Studio里,您可以調試和剖析高性能MPI程序以及擁有成百到上千個核的集群SOA應用程序。您可以使用XPerf和事件跟蹤日志來獲取應用程序在整個系統環境中的全局視圖。Visual Studio 2010里新增的多核剖析和調試工具也可以有效地用于集群的節點級別分析。
Visual Studio正成為越來越豐富和有效的編寫各種并行程序的開發環境。訪問Windows HPC Server 開發人員資源中心您能找到更多關于Windows HPC的開發模型。在CodePlex的Parallel Dwarfs站點上您能找到許多使用各種Visual Studio 2010并行編程模型的示例。
【編輯推薦】