CUDA 常用的函式
cudaMalloc(void**,int):allocate int memory to void**
cudaMallocHost():這個方法是在主機上分配空間,可以加快傳輸速度,因此在寫cuda時,應該使用此函式取代Malloc
cudaMemcpy(void* dest,void* source,int size,enum direction):copy size data form. source to dest,direction must be right,you must be careful。關於這個函式要注意的是:如果最後一個引數的型別不匹配也不會出錯,相比sun microsoft,nVidia的工程師真爛。
cudaMemcpyToSymbol:將資料複製到__constant__變數中
cudaMemcpyFormSymbol: 同上相反
CudaThreadSynchronize():強制等待所有在此句之前啟動的runtime 任務完成。此後再進行下一個任務,有時如果下一個任務使用前一個任務的資料,而前一個任務並沒有處理完資料的話,也有可能導致失敗。
cudaMallocPitch(void**,int*,widthInBytes,height):這個函式是線上性記憶體中分配二維陣列,因此在使用時,還是用一維的方式使用。注意,width的單位是位元組,而height單位是資料型別,而第二個引數的含義下面一段話說明了。
c語言申請2維記憶體時,一般是連續存放的。a[y][x]存放在第y*widthofx*sizeof(元素)+x*sizeof(元素)個位元組。 但在cuda的global memory訪問中,從256位元組對齊的地址(addr=0, 256, 512, ...)開始的連續訪問是最有效率的。這樣,為了提高記憶體訪問的效率,有了cudaMallocPitch函式。cudaMallocPitch函式分配的記憶體中,陣列的每一行的第一個元素的開始地址都保證是對齊的。因為每行有多少個資料是不確定的,widthofx*sizeof(元素)不一定是256的倍數。故此,為保證陣列的每一行的第一個元素的開始地址對齊,cudaMallocPitch在分配記憶體時,每行會多分配一些位元組,以保證widthofx*sizeof(元素)+多分配的位元組是256的倍數(對齊)。這樣,上面的y*widthofx*sizeof(元素)+x*sizeof(元素)來計算a[y][x]的地址就不正確了。 而應該是y*[widthofx*sizeof(元素)+多分配的位元組]+x*sizeof(元素)。而函式中返回的pitch的值就是widthofx*sizeof(元素)+多分配的位元組。 說明:widthInBytes作為輸入引數,應該是widthofx*sizeof(元素);這樣的話,複製內容時也要作相應的修改。
cuda中的數學函式,普通的和標準c中一樣,如果是對int操作,直接使用本名,如果操作long型別對數,在本名前加l,如果操作雙精度浮點數,在本名前加f,如果操作單精度,在本名前後都加上f,如 max(int,int),lmax(long,long),fmax(double,double),fmaxf(float,float),同時要記住的是:有些函式並沒有某些型別引數存在,也就沒有相應的函式。
在std名稱空間內,利用過載,以統一的風格定義了所有的函式,這和java一致。
向量操作
cuda對於向量在cutil_math.h中過載了很多操作符,如負號,+, -, *(包括向量乘和數乘),/(向量的對應座標相除和數除),+=,-=,*=,lerp(三個引數,含義為求一個值,使得該值和第一個引數的距離與每一個引數和第二個引數的距離的比值是第三個引數,型別於高中的線段的分割點), dot(點乘),length(返回二範數),normalize(對向量進行單位化),rsqrtf(求開方的倒數)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-665041/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- cuda 核函式函式
- cuda函式庫介紹函式
- 關於cuda中的函式問題函式
- CUDA函式的概念、種類和示例函式
- Mysql 常用函式(1)- 常用函式彙總MySql函式
- Js常用的函式JS函式
- 常用的Css函式CSS函式
- python的常用函式Python函式
- 常用函式函式
- Mysql 常用函式(20)- ceiling 函式MySql函式
- Mysql 常用函式(15)- upper 函式MySql函式
- Golang 常用的 strings 函式Golang函式
- MySQL 常用函式MySql函式
- kotlin常用函式Kotlin函式
- js 常用函式JS函式
- Oracle常用函式Oracle函式
- 常用函式整理函式
- TensorFlow常用函式函式
- PHP 常用函式PHP函式
- QT常用函式QT函式
- 常用助手函式函式
- loadrunner常用函式函式
- PHP常用函式PHP函式
- MySQL 常用函式。MySql函式
- 常用函式集合函式
- excel中最常用的30個函式 excel表格常用函式技巧大全Excel函式
- Hive常用函式及自定義函式Hive函式
- 核函式 多項式核函式 高斯核函式(常用)函式
- 手寫JavaScript常用的函式JavaScript函式
- 總結常用的字串函式字串函式
- 字串比較的常用函式字串函式
- 15個常用excel函式公式 excel函式辦公常用公式Excel函式公式
- python 的幾個常用的函式Python函式
- javascript常用函式大全JavaScript函式
- PHP常用函式篇PHP函式
- Carbon 類常用函式函式
- Hyperf 常用助手函式函式
- 常用啟用函式函式
- 常用函式彙總函式