详解CUDA核函数及运行时参数
生活随笔
收集整理的這篇文章主要介紹了
详解CUDA核函数及运行时参数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
詳解CUDA核函數(shù)及運(yùn)行時(shí)參數(shù)
核函數(shù)是GPU每個(gè)thread上運(yùn)行的程序。必須通過(guò)__gloabl__函數(shù)類(lèi)型限定符定義。形式如下:
? ? ? ? ? ? ? ? __global__ void kernel(param list){ ?}
核函數(shù)只能在主機(jī)端調(diào)用,調(diào)用時(shí)必須申明執(zhí)行參數(shù)。調(diào)用形式如下:
? ? ? ? ? ? ? ??Kernel<<<Dg,Db, Ns, S>>>(param list);
<<<>>>運(yùn)算符內(nèi)是核函數(shù)的執(zhí)行參數(shù),告訴編譯器運(yùn)行時(shí)如何啟動(dòng)核函數(shù),用于說(shuō)明內(nèi)核函數(shù)中的線程數(shù)量,以及線程是如何組織的。
<<<>>>運(yùn)算符對(duì)kernel函數(shù)完整的執(zhí)行配置參數(shù)形式是<<<Dg, Db, Ns, S>>>
- 參數(shù)Dg用于定義整個(gè)grid的維度和尺寸,即一個(gè)grid有多少個(gè)block。為dim3類(lèi)型。Dim3 Dg(Dg.x, Dg.y, 1)表示grid中每行有Dg.x個(gè)block,每列有Dg.y個(gè)block,第三維恒為1(目前一個(gè)核函數(shù)只有一個(gè)grid)。整個(gè)grid中共有Dg.x*Dg.y個(gè)block,其中Dg.x和Dg.y最大值為65535。
- 參數(shù)Db用于定義一個(gè)block的維度和尺寸,即一個(gè)block有多少個(gè)thread。為dim3類(lèi)型。Dim3 Db(Db.x, Db.y, Db.z)表示整個(gè)block中每行有Db.x個(gè)thread,每列有Db.y個(gè)thread,高度為Db.z。Db.x和Db.y最大值為512,Db.z最大值為62。 一個(gè)block中共有Db.x*Db.y*Db.z個(gè)thread。計(jì)算能力為1.0,1.1的硬件該乘積的最大值為768,計(jì)算能力為1.2,1.3的硬件支持的最大值為1024。
- 參數(shù)Ns是一個(gè)可選參數(shù),用于設(shè)置每個(gè)block除了靜態(tài)分配的shared Memory以外,最多能動(dòng)態(tài)分配的shared memory大小,單位為byte。不需要?jiǎng)討B(tài)分配時(shí)該值為0或省略不寫(xiě)。
- 參數(shù)S是一個(gè)cudaStream_t類(lèi)型的可選參數(shù),初始值為零,表示該核函數(shù)處在哪個(gè)流之中。
總結(jié)
以上是生活随笔為你收集整理的详解CUDA核函数及运行时参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二分法采用五五分平均复杂度最小(相比四六
- 下一篇: 淺談 CUDA