工作筆記第五天
時鐘頻率(又譯:時鐘頻率速度,英語:clock rate),是指同步電路中時鐘的基礎頻率。它是評定CPU性能的重要指標。CPU的主頻和外頻間存在這樣的關系:主頻=外頻×倍頻。
著色器(Shader)是用來實現圖像渲染的,用來替代固定渲染管線的可編輯程序。其中Vertex Shader主要負責頂點的幾何關系等的運算,Pixel Shader主要負責片源顏色等的計算。
CUDA架構的所有功能是為了是GPU不僅能執行傳統的圖形計算,還能高效的執行通用計算。
在GPU設備上執行的函數通常稱為核函數(Kernel)
__global__ void kernel (void) {
}
int main (void) {
kernel<<<1,1>>>();
printf("hello,world! \n");
return 0;
}
CUDA C為標準C增加的__global__修飾符,這個修飾符將告訴編譯器函數應該編譯為在設備而不是在主機上運行。(註釋:本書將CPU以及系統的內存稱為主機,而將GPU及其內存稱為設備)
尖括號表示要將一些參數傳遞給運行時系統。這些參數並不是傳遞給設備代碼的參數,而是告訴運行時如何啟動設備代碼。第一個參數表示設備在執行核函數時使用的並行線程塊的數量。(註釋:將每個並行執行環境稱為一個線程塊(Block) )
要釋放cudaMalloc()分配的內存,需要調用cudaFree(),這個函數的行為與free()的行為非常相似。
extern void *memcpy(void *dest, void *src, unsigned int count); 由src所指內存區域復制count個字節到dest所指內存區域。
cudaMemcpyDeviceToHost,這個參數將告訴運行時源指針是一個設備指針,而目標指針是一個主機指針。
要獲得CUDA設備的數量,可以調用cudaGetDeviceCount()。
void *memset(void *str, int c, size_t n)
在計算機的系統中有四個內存區域:1)棧:在棧裏面儲存一些我們定義的局部變量以及形參(形式參數);2)字符常量區:主要是儲存一些字符常量,比如:char *p_str=”cgat”;其中”cgat”就儲存在字符常量區裏面;3)全局區:在全局區裏儲存一些全局變量和靜態變量;4)堆:堆主要是通過動態分配的儲存空間,也就是我們接下需要講的動態分配內存空間。
blockIdx是一個內置變量,在CUDA運行時中已經預先定義了這個變量,變量中包含的值就是當前執行設備代碼的線程塊的索引。
工作筆記第五天