Intel多核程式設計培訓的基本體系

2021-08-22 04:19:18 字數 1786 閱讀 3933

上週去上海intel參加了乙個多核程式設計的技術培訓。一般來說大公司的專項技術培訓都經過精心的設計,體系比較完整,知識點覆蓋比較全,強調實驗和動手環節。intel這次的多核技術培訓也是這樣,從執行緒基礎知識到多執行緒程式設計的方法模型,從openmp到vtune工具,體系還是很完整的,試驗環節設計得很到位,ppt很用心。當然因為時間畢竟只有兩天,所以不可能非常深入。不過總體上我對這個培訓的質量是很滿意的,畢竟師傅領進門,修行在個人,深入的東西還要靠個人鑽研。

跟很多其他的技術不同,多執行緒程式設計這樣的主題是需要專門突擊的,光靠一般性的實踐解決不了根本問題。很多人可能寫多年程式都搞不清楚這個領域,一碰到多執行緒就發憷,或者自以為ok,其實寫出來的**問題很多。解決的辦法就是專門抽出一段時間來研究這個領域的理論、方法和工具,一次性入門,然後在實踐中磨礪。培訓的目的也就是讓人入這個門。自學當然也可以,其實相關的資料和書籍很多,自學難度也不大。不過自學最大的問題是不知道要學些什麼,而且進度不容易把握。有的人學得太慢,畢竟業餘時間是有限的,所以很快就疲了,知識體系還沒有覆蓋完整。有的人學得太快,囫圇吞棗,事後忘光光。更多的人不知道知識體系的全貌,所以用力不均衡,在某些點上花了很大的工夫,學得很深,卻對另一些重要問題幾乎沒有涉及,一條腿長一條腿短,實踐中還是難免出問題。

雖然intel的課程內容我不能透露,不過這個課程體系的整體架構,並非秘密。我想在這裡公布出來,對於想自學多核程式設計的朋友是有幫助的。起碼你應該知道,學習這個主題要覆蓋那些點才算完整。

1. 執行緒和程序的基本知識。這個不必多說。但是要弄清楚多執行緒與多核的關係。一般來說,想要用好多核的威力,就要寫多執行緒程式,但是多核上的多執行緒,與單核上的多執行緒,目的有所差別,因此技術手段也就有所不同。這個要搞清楚。

2. 流行的threading api。應該說有兩個體系,win32和pthread。一般來說了解乙個就可以了。這其中的重點是一系列的同步機制。以win32來說(我對pthread幾乎一無所知),critical section, mutex, semaphore,event各自的應用場合是應該清楚的。更基本的能力是識別哪些變數需要保護,在什麼地方需要保護,如何保護對效能的衝擊最小。

3. openmp。openmp是專門針對共享位址空間的並行計算機提供的平行計算庫,在intel c++和visual c++ 8.0裡通過#pragma支援。用openmp,可以不必去寫諸如createthread之類的執行緒管理**,多執行緒程式寫起來比較簡潔。而且openmp提供了很豐富的指令,對於同步共享變數、合理分配負載等任務,都提供了有效的支援,很值得一學。不過因為這個東西用起來很輕鬆,稍一疏忽就能釀成愚蠢錯誤,所以肯定是要經常用才能駕馭好的。一開始用它,犯錯誤是難免的。培訓課上有人說,還不如用粗笨的win32 api來做,起碼精神高度緊張,不會犯愚蠢錯誤,雖然是玩笑,也不無道理。不過長遠來講,openmp的優勢是明顯的。

4. 多執行緒程式的設計理論和方法。包括任務的合理劃分,動態劃分的幾個基本模型,效能提公升方面的理論和測量標準等等。intel有人總結出乙個多執行緒程式設計的方法學,教你怎樣一步步從單執行緒變成高效能的多執行緒。課上是沒講的,網上應該能找到乙個文件,有興趣的人可以自己到intel的**去搜一搜。

5. 工具的使用。這一部分當然跟intel自己的軟體工具掛鉤,主要是vtune/thread checker/thread profiler三個工具。現在後面兩個工具被融入了vtune之中,所以從產品來講,就只有乙個vtune。平心而論,vtune確實是非常好的調優工具,真正要搞產品開發,恐怕離不開這樣的工具。任你是多厲害的程式設計師,寫出東西來總要在實踐中檢驗,所以調優工具是不可少的。vtune與thread checker/thread profiler結合,其意義遠遠超過了調優工具,對於多核程式開發來說,這種工具的意義實在是太大了。

大致就是這些。

Intel多核培訓感想

intel多核培訓感想 今天是參加intel多核和多執行緒培訓的第一天,感觸頗深。因為目前我們正在開發乙個分布式的多執行緒系統,前不久也做過一些優化,聽了今天的課程,能產生一點點共鳴。在培訓之前,intel就已經將教材發給了我們,當時看了一下student book的內容,都是針對於它們的多核cpu...

Intel多核培訓感想

intel多核培訓感想 今天是參加intel多核和多執行緒培訓的第一天,感觸頗深。因為目前我們正在開發乙個分布式的多執行緒系統,前不久也做過一些優化,聽了今天的課程,能產生一點點共鳴。在培訓之前,intel就已經將教材發給了我們,當時看了一下student book的內容,都是針對於它們的多核cpu...

kafka的基本體系結構

使用場景 大資料 資料量和速率激增,資料型別越來越複雜 應用開發 訊息引擎,應用解耦,分布式儲存,流處理 topic 主題 訊息的邏輯分類 客戶端 細分為生產者 朝主題傳送訊息 消費者 讀取主題的訊息 服務端 broker 1 處理客戶端傳送和提供消費支援 2 訊息持久化 訊息架構 1,乙個主題可以...