快速入門 CUDA C 混編

2021-10-05 21:47:30 字數 1231 閱讀 2087

教程:

kernel是cuda中乙個重要的概念,kernel是在device上線程中並行執行的函式

乙個kernel所啟動的所有執行緒稱為乙個網格(grid)

每個執行緒塊有包含共享記憶體(shared memory),可以被執行緒塊中所有執行緒共享,其生命週期與執行緒塊一致。

此外,所有的執行緒都可以訪問全域性記憶體(global memory)。還可以訪問一些唯讀記憶體塊:常量記憶體(constant memory)和紋理記憶體(texture memory)

cuda中使用cudamallocmanaged函式分配託管記憶體

localmem:執行緒register資源不足時 自動為local memory

local men 讀寫慢於register,儲存位置和global mem在一起 有些

shared mem 每乙個執行緒內部 有一塊 宣告週期與block一致 部分執行緒退出不會釋放 比較稀缺資源

每乙個shared 都很大

cons mem host寫到裡面 在device只進行讀取 可以多個執行緒讀取時 效果比較好

texture mem 紋理記憶體 專門儲存影象等二維結構 一般不會用到

global mem 視訊記憶體 對於 整個grid可見 延遲最高 延遲最大

cuda core 也叫 sp:

sm(streaming multiprocessor),流式多處理器

乙個執行緒塊在乙個sm

warp scheduler

執行緒 以 warp為單位進行排程 32個執行緒數

32個執行緒構成乙個執行緒束

執行緒分化

聯絡的32bit劃分到乙個bank

shared mem 分 bank

先用前16個執行緒去請求shared men 然後用後16個執行緒請求bank

所以前16個執行緒 和後16個執行緒不會發生bank衝突

baseindex+s*tid n

s和n不互素

_shared_

512每乙個的結果放在 shared 陣列裡面

q&a:

對於不變的資料只拷貝一次是否可以

c++和c相比cuda編寫哪個容易

共享記憶體和全域性記憶體:存多份相同的共享vs乙份全域性 效率方面的影響

核函式呼叫核函式開銷大嗎

評估的點與執行緒id的對應關係怎麼確定

long long 比int慢嗎

規約操作在gpu還是cpu做

快速定位 xcode 混編時的問題

場景 引入很多新的 檔案,編譯時 xcode 報告錯誤,但是又沒告訴我們是哪個檔案的錯誤。類似如下 這個時候無從下手的樣子。不用急,編譯是有個過程的,檢視一下編譯到哪個步驟出現這個錯誤即可。xcode 不熟悉的話,可能還不能馬上找到檢視所有的編譯日誌。檢視所有編譯日誌的方式 然後按日期檢視選擇最近的...

Flask入門二 快速入門

from flask import flask 路由裝飾器 defhello world 檢視函式 return hello world 返回乙個字串 if name main 把程式儲存為hello.py 用python直譯器執行 python hello.py running on訪問 會看見 ...

adb shell 入門 ADB快速入門

一 簡介 android debug bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform tools資料夾中,它是乙個非常強大的命令列工具,通過這個工具用來連線電腦和android裝置 手機 電腦 電視 平板 電視盒子等 二 安裝 提取碼 54zh 2.解壓檔案包到固定...