《大規模並行處理器程式設計實戰》學習,其他章節關注專欄cuda c這章主要以 向量加法 vector add 為切入點,講述了如何把乙個 c 語言向量加法** 改寫為 cuda擴充套件的c語言向量加法。
傳統向量加法是通過迴圈實現的
cuda向量加法是通過多執行緒控制的cuda加法並行實現的,即同時開啟n個執行緒,每個執行緒計算1個加法,則長度為n的向量被同步計算。使用cuda擴充套件的程式,需要三個步驟:
先申請裝置(device, cuda)的記憶體(memory),將資料從主機(host)複製到裝置(device)
使用 裝置api 對申請到的記憶體進行操作。(裝置上的操作是以kernel函式的形式進行的)
把計算結果複製回主機
在以多執行緒的形式對向量進行操作時,多個執行緒以執行緒塊的方式存在。乙個執行緒塊中包含blockdim(例如256)個執行緒,每個執行緒執行相同的**。
加法**如下,其中threadidx.x表示該執行緒在本執行緒塊中的index,即在第i個塊中,該執行緒是第j個,0<=j<=blockdim-1。i的計算為該執行緒在所有塊中的index,即i=本塊index + 乙個塊blockdim個執行緒 * 第blockidx執行緒塊:
值得注意的是,在 cuda 交叉程式設計環境中,預設**是在主機 host 上執行,若要在裝置上執行,則需要 global 修飾,具體如:
重看kernel函式,配置引數在<<< >>>之間,分別表示
C 程式設計規範 第3章 命名規則
比較 著名的命名規則當推 microsoft 公司的 匈牙利 法,該命名規則的主要思想是 在變數和函式名中加入字首以增進人們對程式的理解 例如所有的字元變數均以ch為字首,若是指標變數則追加字首p。如果乙個變數由ppch開頭,則表明它是指向字元指標的指標。匈牙利 法最大的缺點是煩瑣,例如 inti,...
C語言程式設計課後習題 第3章
分析並寫出下列程式的執行結果 1 include intmain void 輸出 18.0 2 2 include intmain void 輸出 32 8033 80參考例3.1程式,從鍵盤任意輸入乙個3位整數,程式設計計算並輸出它的逆序數 忽略整數前的正負號 例如,輸入 123,則忽略負號,由1...
第3章 最簡單的c程式設計 順序程式設計
例3.1 有人用溫度計測量出用華氏法表示的溫度 如64 f 要求把它轉換為以攝氏度表示的溫度 如17.8 c include intmain 執行結果如下 執行結果如下 例3.3給定乙個大寫字母,要求用小寫字母輸出。include intmain 執行結果如下 例3.4給出三角形的邊長,求三角形的面...