這篇文章主要介紹“怎么用GPU編寫Hello World”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“怎么用GPU編寫Hello World”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)是專業(yè)的富寧網(wǎng)站建設(shè)公司,富寧接單;提供網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行富寧網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
??在GPU編程中,有三種函數(shù)的聲明:
Executed on | Only callable from | |
---|---|---|
__global__void KernelFunc() | device | host |
__device__float DeviceFunc() | device | device |
__host__float HostFunt() | host | host |
這里的host
端就是指CPU,device
端就是指GPU;使用__global__
聲明的核函數(shù)是在CPU端調(diào)用,在GPU里執(zhí)行;__device__
聲明的函數(shù)調(diào)用和執(zhí)行都在GPU中;__host__
聲明的函數(shù)調(diào)用和執(zhí)行都在CPU端。
??在講GPU并行計(jì)算之前,我們先講一下使用GPU后能提高性能的理論值,即Amdahld定理,也就是相對串行程序而言,并行程序的加速率。
??假設(shè)程序中可并行代碼的比例為p
,并行處理器數(shù)目是n
,程序并行化后的加速率為:
??Hello World
程序是我們學(xué)習(xí)任何編程語言時(shí),第一個(gè)要完成的,雖然cuda c并不是一門新的語言,但我們還是從Hello World
開始Cuda編程。
#include
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void hello_world(void)
{
printf("GPU: Hello world! Thread id : %d\n", threadIdx.x);
}
int main(){
printf("CPU: Hello world!\n");
hello_world <<<1, 10>>>();
// cudaDeviceReset must be called before exiting in order for profiling and
// tracing tools such as Nsight and Visual Profiler to show complete traces.
cudaDeviceReset();
return 0;
}
??程序中的具體語法我們后面會講到,這里只要記住<<<1, 10>>>
是調(diào)用了10個(gè)線程即可,執(zhí)行上面的程序,會打印出10個(gè)GPU的Hello World
,這個(gè)就是SIMD,即單指令多線程,多個(gè)線程執(zhí)行相同的指令,就像程序中的這個(gè)10個(gè)線程同時(shí)執(zhí)行打印Hello Wolrd
的這個(gè)指令一樣。
關(guān)于“怎么用GPU編寫Hello World”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。