為什么要使用共享內(nèi)存呢,因?yàn)楣蚕韮?nèi)存的訪問速度快。這是首先要明確的,下面詳細(xì)研究。
cuda程序中的內(nèi)存使用分為主機(jī)內(nèi)存(host memory) 和 設(shè)備內(nèi)存(device memory),我們在這里關(guān)注的是設(shè)備內(nèi)存。設(shè)備內(nèi)存都位于gpu之上,前面我們看到在計(jì)算開始之前,每次我們都要在device上申請內(nèi)存空間,然后把host上的數(shù)據(jù)傳入device內(nèi)存。cudaMalloc()申請的內(nèi)存,還有在核函數(shù)中用正常方法申請的變量的內(nèi)存。這些內(nèi)存叫做全局內(nèi)存,那么還有沒有別的內(nèi)存種類呢?常用的還有共享內(nèi)存,常量內(nèi)存,紋理內(nèi)存,他們都用一些不正常的方法申請。
他們的申請方法如下:
共享內(nèi)存:__shared__ 變量類型 變量名;
常量內(nèi)存:__constant__ 變量類型 變量名;
紋理內(nèi)存:texture<變量類型> 變量名;
存儲類型 | 寄存器 | 共享內(nèi)存 | 紋理內(nèi)存 |
網(wǎng)友評論 |