多核程式設計文章彙總

2021-09-12 05:05:46 字數 2944 閱讀 4937

一、基礎篇

1、多核程式設計的幾個難題及其應對策略

主要講解多核程式設計時的序列化方面的難題及其應對策略。閱讀全文

2、多核程式設計中的鎖競爭難題

鎖競爭會導致加速係數隨cpu核數增多而下降的現象。核數增加到128時,加速係數只有0.78,還不如在單核cpu上執行的速度。 s(p) = (t +1)/ (p + t/p) = p*(t+1) / (p*p+t) (鎖競爭下的加速係數公式) 。閱讀全文

3、多核程式設計中的負載平衡難題

負載平衡的難度與cpu的核數成正比,cpu核數越多,負載劃分的難度就越大。 閱讀全文

二、openmp專題

1、openmp並行程式設計(一)

介紹openmp程式在平行計算時的效率,在雙核cpu上效率增加了整整一倍。 閱讀全文

2、openmp並行程式設計(二)

1、fork/join並行執行模式的概念 2、openmp指令和庫函式介紹 3、parallel 指令的用法 4、for指令的使用方法 5 sections和section指令的用法。閱讀全文

3、openmp中的資料處理子句

本文主要介紹了openmp中的private、firstprivate、lastprivate、threadprivate、reduction、copyin、copyprivate等資料處理子句的用法。 閱讀全文

4、openmp中的任務排程

本文主要介紹了openmp中任務排程子句schedule的使用方法。閱讀全文

5、openmp建立執行緒中的鎖及原子操作效能比較

主要比較了原子操作,windows criticalsection, openmp庫帶的鎖在單任務運**況下和多工運**況下的效能情況,在多核cpu上,多工的鎖競爭花費的時間是單任務時的鎖執行花費時間的18倍。鎖競爭帶來的效率下降完全出乎意料之外,由此也可見多核程式設計和單核多工程式設計是有很大區別的。 閱讀全文

6、openmp程式設計的兩個小技巧

講述了如何動態設定執行緒數量以適應硬體和軟體的擴充套件性,如何將巢狀迴圈並行化的技巧。 閱讀全文

三、效能篇

1、雙核cpu上的快速排序效率

在雙核cpu上執行後,列印出花費的時間為 234 ms , 單任務版的快速排序函式約需406ms左右,並行執行效率為:406/(2×234) = 86.7% 左右。執行速度快了172ms。 閱讀全文

2、多核系統中三種典型鎖競爭的加速比分析

本文主要討論了固定式鎖競爭、隨機鎖競爭、分布式鎖競爭三種典型鎖競爭情況下的加速比,並分析了任務粒度因子和鎖粒度因子對加速比的影響。結論: 分布式鎖競爭加速比隨cpu核數成正比,可以達到和單核多工時相當的效能,是多核程式設計的發展方向。 閱讀全文

3、無鎖程式設計與分布式程式設計那個更適合多核cpu?

本文重點比較了無鎖程式設計和分布式鎖競爭的效能,無鎖(原子操作)實際上是一種細粒度鎖。然後又從實現的功能,程式設計師掌握難易程度,現有軟體的移植等方面進行了比較,得出結論:無鎖程式設計遠不如分布式程式設計。分布式程式設計更適合多核cpu系統。 閱讀全文

四、多核程式設計模式專題

1、多核程式設計中的執行緒分組競爭模式

討論了使用任務分組鎖競爭方式來消除鎖競爭導致的cpu飢餓現象,佇列池就是任務分組競爭的乙個非常好的實踐任務分組競爭模式相對於無鎖程式設計具有更好的優勢。 閱讀全文

2、多核程式設計中的執行緒隨機競爭模式的概率分析

本文主要分析了多個任務在隨機分布式鎖競爭的情況下,有不少於cpu核數個數的任務在執行的概率。然後將隨機競爭和無鎖程式設計的效能進行了理論上的比較。閱讀全文

3、多核程式設計中的條件同步模式

本文講解了一種減少鎖使用的方法,將每次都加鎖改為滿足一定條件時才加鎖,非常適合具有狀態機性質的場合使用。 閱讀全文

五、多核資料結構與演算法專題

1、多核分布式佇列的實現:偷與自私的運用

本文講述了多核系統中分布式佇列的實現方法,所謂分布式佇列指的是每個執行緒除了可以訪問執行緒池外還自動擁有乙個本地佇列。實現分布式佇列的基本方法就是「偷」與「自私」。 閱讀全文

2、多核查找-順序查詢也瘋狂

用陣列進行查詢,由於其插入和刪除需要按順序進行,需要移動較多的資料,對於大資料量的查詢是無法使用的。然而,在多核時代,一切都改變了,大資料量的查詢結構也可以用陣列來實現。並且用陣列實現的大資料量查詢結構有著比其他查詢結構更明顯的優勢:效率高、記憶體占用少、並且容易避免偽共享問題。 閱讀全文 3、

多核中的並行字首和計算

字首和計算在平行計算中很有用,因為在處理負載平衡問題時,經常需要將若干段資料重新平分,而計算字首和通常是一種有效的將資料平分的方法。 閱讀全文

六、多核程式設計思想專題1、

多核新觀念-象使用記憶體一樣使用cpu?

象使用記憶體一樣使用cpu? 閱讀全文 2、

「老子」是偉大的多核計算科學家

本文主要論述道家的「小國寡民」,「無為」「大道自然」等思想與多核計算中使用的思想的異曲同工之處,給出了道家思想在多核計算中的實踐例項分析。大道自然,「貪心」,「自私」,「偷竊」這些大自然賦給人類的自然力量,在多核計算中得到了廣泛的使用。 閱讀全文

3、多核程式設計的四層境界

從先天方法策略、目標需求評價、本質根源保障、演算法實現執行四個層面闡述多核計算的含義    閱讀全文

4、高房價與多核分布式計算

本文主要從多核計算的角度來論述高房價問題及其對社會的影響,並給出了高房價問題的最終解決措施。 閱讀全文

5、道家·老子的演算法思想分析

將道家老子的思想與軟體中的思想進行對比分析,得出結論,道家追求穩定可靠性。所以歷代在撥亂反正時期,用的都是道家思想。歷史上最典型的三個朝代漢、唐、明為例,漢朝時張良等人都是好黃老之術(也就是道家思想),唐朝的宰相魏徵也是道家人物,明朝的劉伯溫也是屬於道家人物。 閱讀全文

6、屈原·漁父的演算法追求

屈原與漁父兩種不同的思想,相當於軟體中的兩種不同演算法思想。「世人皆濁,眾人皆醉」可以理解為軟體執行的場景。 閱讀全文

多核程式設計文章彙總

一 基礎篇 1 多核程式設計的幾個難題及其應對策略 主要講解多核程式設計時的序列化方面的難題及其應對策略。閱讀全文 2 多核程式設計中的鎖競爭難題 鎖競爭會導致加速係數隨cpu核數增多而下降的現象。核數增加到128時,加速係數只有0.78,還不如在單核cpu上執行的速度。s p t 1 p t p ...

多核程式設計

一 實驗目的 1 掌握microsoft visual studio 2012配置openmp的方法 2 掌握microsoft visual studio 編寫編譯簡單openmp程式的方法。二 實驗內容 1 配置visual studio 2012使支援openmp 配置環境變數,確定執行緒的數...

併發程式設計筆記及文章彙總

1.c語言 執行緒一些基本概念及相關基礎函式 2.c語言 執行緒終止與執行緒屬性 3.c語言 父子程序實現交替同步數數測試 4.c語言 測試乙個程序中可以建立多少個執行緒 5.c語言 標準輸出也可以是乙個共享資源 6.c語言 執行緒中的死鎖 7.c語言 併發程式設計之執行緒的讀寫鎖 8.基本概念 各...