五月天亚洲色图_亚洲精品少妇_亚洲熟妇无码av另类本色_自拍高清综合中文_成年女人wwxx免费_国产高清视频在线观看三区_下载香蕉视频app_芒果视频下载_日韩AV综合无码中文一区_国产日产精品久久

在線幫助 ICP備案 合作機構 我要訂制
 
 7×24客服熱線:13663712063
您的位置:首頁  技術支持 Visual C++ 2010 新特性:并行計算
       越辰家政管理軟件
       越辰空調售后管理軟件
       越辰圖書銷售管理軟件
       越辰物業(yè)管理軟件
       越辰茶樓管理軟件
       越辰幼兒園管理軟件
       越辰餐飲管理軟件
       越辰病歷管理系統(tǒng)
       越辰洗浴管理軟件
       越辰住院管理系統(tǒng)
       越辰超市管理系統(tǒng)
  

Visual C++ 2010 新特性:并行計算

來源:yocin  時間:2010-12-18 14:30:05  欄目:技術支持  點擊率:1423

(越辰家政軟件新聞)

      性能,永遠是程序員要考慮的問題。在單核時代,甚至在雙核(多核)時代,一般是通過改善客戶使用的計算機性能來提升程序的性能,如增加服務器、內(nèi)存,配置負載均衡等手段來實現(xiàn),我們稱這個過程為享受性能免費大餐。天下沒有免費的午餐,性能免費大餐也不能毫無止境,實際上,已經(jīng)有了新的解決方案并行計算。并行計算就像是一道饕餮大餐而被人津津樂道,在本文中我們以烹飪?yōu)轭惐龋ㄟ^對性能免費大餐的分析,使用Visual Studio C++ 2010這把利器,應用并行編程模型大塊朵頤的進行并行開發(fā)。

  性能免費大餐已經(jīng)結束

  通過提升CPU的計算能力,確實能夠改善應用程序性能。但在實際情況中,無論處理器性能提升多少,軟件都有辦法迅速吞噬。況且,計算機硬件畢竟受物理極限的約束,處理器主頻的提升已經(jīng)遇到了瓶頸。所以,享受性能免費大餐的日子已經(jīng)結束,業(yè)界已經(jīng)不能提供指數(shù)級增長的更快的處理器,而只能選擇提供指數(shù)級增長的更多的處理器。多核將引領軟件研發(fā)發(fā)生基礎性的變化。

  目前的電腦市場上,多核計算機的銷量遠遠大于單核計算機,多核已經(jīng)成為了一種主流。在這樣的發(fā)展趨勢下,如果把在單核下實現(xiàn)的應用程序拿到一臺64核的機器上運行,你會看到任務管理器顯示如下的畫面只有1/64的計算能力得到了利用:

  

Visual C++ 2010 新特性:并行計算

圖 1 任務管理器顯示64核機器上運行單線程應用程序,只有一個核在計算

  通過上面的示例可以看出,傳統(tǒng)的應用程序再也無法順其自然地在更高端的硬件設備上獲得更高的性能回報,能夠充分發(fā)揮硬件設備性能的應用程序是未來軟件開發(fā)的主流,作為開發(fā)人員,我們面臨的抉擇是什么呢?Herb Sutter在他的原文中明確地給出了答案:并行計算。如果在四年前說“并發(fā)將是軟件開發(fā)史上的又一個重大變革”是一個預測,那么今天,并行計算已經(jīng)成為軟件開發(fā)的核心趨勢之一。對于程序員來說,享受免費大餐的日子結束后,只能親自下廚烹飪。

  親自下廚遇到了難題

  我們都知道,應用程序的開發(fā),有著完整的生命周期管理,從編寫需求說明書、程序設計說明書,到編碼、調試和性能優(yōu)化,再到測試、發(fā)布,以及后期維護等一系列的行為都有其復雜性。而并行計算是在程序開發(fā)原有的復雜性上,更添加了一個維度。在這個過程中,程序員會遇到各種各樣的問題,如下圖所示:

  

Visual C++ 2010 新特性:并行計算

圖 2 開發(fā)并發(fā)應用程序面臨的需要考慮的問題

  開發(fā)并行應用程序,一直是令廣大程序員頭痛的事情,現(xiàn)如今我們又有哪些準備了呢。俗話說的好,巧媳婦難為無米之炊,一些準備好的食材、一本可供參考的菜譜、一套方便使用的廚具是必不可少的,希望這些必備品能為我們的烹飪帶來便利。

  食材、菜譜和廚具都很重要

  2007年,微軟宣布成立并行計算平臺組,致力于簡化并行應用程序的開發(fā)。隨著Visual Studio 2010和.NET Framework 4的發(fā)布,微軟為并行計算提供了完整的解決方案。

  

Visual C++ 2010 新特性:并行計算

圖 3 Visual Studio 2010和.NET Framework 4對并行開發(fā)的支持

食材-并發(fā)運行時

  不論是任務并行、數(shù)據(jù)并行,還是管道并行,都意味著需要把一個耗時的任務或數(shù)據(jù)分割成更小的單位。分割的顆粒度往往是由任務的性質決定的。細顆粒度并行的好處主要體現(xiàn)在可擴展性和負載平衡上。假設一個耗時的任務只被粗略分割成四個子任務并發(fā)執(zhí)行,那么它對于多于四核的機器的擴展性就不夠好;即使是在四核的機器上運行,也無法做到實時動態(tài)的負載平衡,可能發(fā)生三個子任務早早完成,而另一個任務還在一個核上苦苦等待的悲劇性事件。

  為了支持細粒度并行,在Visual C++ 2010中提供了一套并發(fā)編程框架,支持常用的協(xié)同任務調度和硬件資源(CPU和內(nèi)存)管理。.NET Framework 4也在已有的線程池(Thread Pool)基礎上,實現(xiàn)了協(xié)同任務調度和工作竊取(work-stealing)算法。工作竊取算法充分利用了細顆粒度并行的優(yōu)勢,保證空閑的線程依照一定的順序,從本地、全局,甚至是其他線程的任務隊列中“偷取”任務執(zhí)行。當然,默認的任務調度器可以被擴展或配置以支持特殊的調度策略。

  并發(fā)運行時是 C++ 并發(fā)編程框架,使用該框架,可以簡化并行編程,能夠幫助我們編寫可靠、可伸縮且具有響應能力的并行應用程序。

  菜譜-編程模型

  高抽象級別的、統(tǒng)一的編程模式是簡化并行程序開發(fā)的一個重要方向。因此在Visual Studio 2010和.NET Framework 4中看到許多新的語言和庫功能,以及一系列面向任務的并行結構和算法。

  在Visual C++ 2010中,并行模式庫(Parallel Pattern Library)引入了支持任務并行的任務(Tasks)和任務組(Task Groups)概念。任務是一類計算,可將其分解為多個更精細的計算。在并行模式庫中,task_handle包含執(zhí)行細顆粒度的代碼,用來代表一個任務。任務句柄(task_handle)非常重要,因為它們將管理封裝的工作函數(shù)的生存期。 例如,將 task_handle 對象傳遞給任務組時,該 task_handle 對象必須保持有效,直到任務組完成為止。任務組是用來組組織、調度、等待或者取消某個或某些任務,它會將任務推入工作竊取隊列, 計劃程序從該隊列中移除任務,并用可用的計算資源執(zhí)行任務。下面示例代碼并發(fā)執(zhí)行若干個任務

  

Visual C++ 2010 新特性:并行計算


  為了方便將串行應用程序改為并行應用程序,并行模式庫提供了parallel_for和parallel_for_each,我們可以很容易將自己寫的for和for_each循環(huán)代碼改寫為并發(fā)執(zhí)行,并且不會降低代碼的可讀性;同樣,對于管道并行,代理庫(Agents Library)提供了基于數(shù)據(jù)流編程模型的C++模板庫,通過使用消息傳遞在對象之間傳輸狀態(tài)更改,可以隔離對共享資源的訪問,從而提高可伸縮性。消息傳遞的優(yōu)點就是它將同步綁定到數(shù)據(jù),而不是綁定到外部的同步對象。這樣就簡化了組件之間的數(shù)據(jù)傳輸,可以消除應用程序中的編程錯誤。

  在托管代碼方面,任務并行庫(Task Parallel Library)引入System.Threading.Tasks.Task類,以及Parallel.For和Parallel.ForEach來支持任務或數(shù)據(jù)并行。

  

Visual C++ 2010 新特性:并行計算


  此外值得一提的是PLINQ(Parallel Language-Integrated Query)。PLINQ作為LINQ的并行實現(xiàn),對內(nèi)存內(nèi)的IEnumerable數(shù)據(jù)源進行分區(qū),隨后利用系統(tǒng)內(nèi)的多核,并行在子數(shù)據(jù)源上操作。

  無論是任務的組織、調度、執(zhí)行,還是資源分配、內(nèi)存共享,Visual C++ 2010為編寫并發(fā)應用程序都給予了幫助,通過充分利用多核CPU性能來提升軟件的性能,真正享受到親自烹飪的性能大餐。

  廚具-開發(fā)工具

  子曰:“工欲善其事,必先利其器”。好的開發(fā)工具是成功的一半。在Visual Studio 2010里包含了兩個新的調試器窗口和一個新的性能可視化剖析器(Profiler)。有了這兩個調試器窗口,我們可以在代碼同等的抽象層面上也就是任務進行調試,看到任務的狀態(tài),彼此之間的關系,調用堆棧等等。當然如果感興趣的話,也可以看到任務對應的線程,并利用一個全局的統(tǒng)一視圖來查看所有線程的調用堆棧,以及彼此之間的關系。

  

Visual C++ 2010 新特性:并行計算

圖4 并行堆棧窗口

Visual C++ 2010 新特性:并行計算

圖 5 并行任務窗口 

  性能優(yōu)化是軟件開發(fā)過程中一項重要的工作,那么一個功能全面的性能探察器自然是必不可少的了。Visual Studio 2010里的并行性能可視化探查器可以看到應用程序對資源的利用情況,程序的哪個部分是受計算量限制的;也可以看到線程的執(zhí)行情況,阻斷的原因,線程在不同的核之間切換的情況,等等;同時還可以在線程執(zhí)行的不同時間點上,跳轉到相應的調用堆棧,去研究造成線程阻斷的根本原因。

  

Visual C++ 2010 新特性:并行計算

圖6 探測器視圖CPU利用率

Visual C++ 2010 新特性:并行計算

圖7 探測器視圖線程

小結

  我們習慣了串行思考問題,這叫思維定勢,對于突如其來的并行思維,是需要一段時間才能夠接受;其次,并行應用程序開發(fā)相對普通程序要難一些。改變串行(順序)編程的這種思維方式并接受這樣的編程挑戰(zhàn),還需要一個認識和學習的過程。就目前來說,對于大多數(shù)開發(fā)并發(fā)應用程序的程序員來說,仍是先從串行應用著手,確定了性能瓶頸后,針對關鍵代碼段再進行并行化。有了Visual Studio 2010和.NET Framework 4這樣利器,有了并行編程模型這樣的好食材,編程就像烹飪,只有動手才能體會到其中的無窮樂趣,您還等什么呢?趕快行動起來吧!

Copyright ◎2008-2018鄭州越辰科技有限公司 版權所有 網(wǎng)站地圖
地址:中國·河南鄭州市文化路交北環(huán)路北晨e時代B座505室 
電話:0371-63399049 13663712063 備案號:豫ICP備19031456號
我們專注于 軟件開發(fā)| 網(wǎng)站制作  返回歡迎頁 
  
點擊這里給我發(fā)消息 越辰業(yè)務
點擊這里給我發(fā)消息 越辰業(yè)務
點擊這里給我發(fā)消息 越辰代理
點擊這里給我發(fā)消息 越辰技術
 ,頁面執(zhí)行時間:15.625毫秒        
up close

返回頂部

越辰科技微信
微信掃一掃