並行程序學習

一、一些概念準備

1、一些概念

  1. 核心密集型:該類型不太依賴內存的訪問速度;
  2. 存儲密集型:該類型內存的訪問速度高度敏感;

比如,8核心8線程和8核心16線程,後者對訪問速度更加敏感。8核心16線程會公用一些資源,甚至出現爭搶資源的情況!

將數據讀取到內存這個比較耗時間,一般單線程程序就能達到I/O讀取的極限。編寫多線程程序時時刻注意,I/O是計算機中速度中最慢的部分;同時需要注意的是,從CPU到GPU的數據傳輸要通過I/O子系統的PCI express總線進行。

2、調試

在Unix-like系統中調試一般用gdb或者valgrind;或者古典調試法。

在調試c程序時gdb可能會更加方便些;在cuda編程中可以使用古典調試法和nvvp(nvidia內置調試工具)。古典方法,比如:使用assert()和printf()函數告訴我們程序內部發生了什麼;在程序之間加入return,如果沒有出錯,那麼rerun之前的代碼是正確的,這個可以快速定位;

 

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