在主機側使用隨機數生成的庫函式大致分為三個步驟:
1,宣告隨機數指標,指定隨機數生成演算法。
2,為生成演算法設定初始值。
3,指定隨機數生成個數,生成隨機數,並儲存在global memory中。
宣告隨機數指標,指定隨機數生成演算法
使用curandgenerator_t 生成相應的隨機數指標,使用curandcreategenerator(curandgenerator_t* generator, curandrngtype_t rng_type)
generator: 指向隨機數的指標變數。
rng_type:演算法型別
rng_type的不同型別如下:
巨集定義
演算法型別
curand_rng_pseudo_xorwow
xorwow
curand_rng_pseudo_mrg32k3a
mrg32k3a
curand_rng_pseudo_mtgp32
梅森・費爾拖斯特
curand_rng_quasi_sobol32
sobol32
curand_rng_quasi_scrambled_sobol64
scrambled sobol64
curand_rng_quasi_default
xorwow
為生成演算法設定初始值
使用curandsetpseudorandomgeneratorseed(curandgenerator_t generator, unsigned long long seed)
generator: 隨機數變數
seed: 初始值
在這裡說明一下指定初始值的意義:因為所有的隨機數生成演算法都是按照即定的順序來生成隨機數,所以,如果不設定初值或者不改變初始值的話。那每次生成的隨機數將不會發生改變。
指定隨機數生成個數,生成隨機數,並儲存在global memory中
使用curandgenerateuniform(curandgenerator_t generator, float* outputptr, size_t num)函式來生成多個隨機數,並將它們存放到global memory中
generator:隨機數變數
num:生成隨機數的個數
最後,需使用curanddestroygenerotor將生成的隨機數指標變數釋放掉.
示例:#include
#include
#include
#include
#include
#pragma comment(lib, "cudart.lib")
#pragma comment(lib, "curand.lib")
#define cuda_call(x) do } while(0)
#define curand_call(x) do } while(0)
int main(int argc, char *argv)
printf("\n");
/* cleanup */
curand_call(curanddestroygenerator(gen));
cuda_call(cudafree(devdata));
free(hostdata);
getchar();
return exit_success;
}
cuda 函式指標 CUDA常用函式介紹
cudamalloc void p,int size 分配size位元組的儲存器,並將其首位址賦給 至於引數為什麼是二級指標,可在 語言中找到答案 cudamallochost 這個方法是在主機上分配空間,可以加快傳輸速度,因此在寫cuda時,應該使用此函式取代malloc,引數同上一函式 cuda...
Yii框架整合Zend庫函式生成Web Feed
web feed是一種用於為使用者提供經常更新內容的資料格式。在這篇文章中,我們描述了怎樣使用元件zend feed,它是乙個優秀框架zend framework的優秀元件,可以為乙個yii應用生成web feed。這篇文章同樣是一篇如何使用zend framework的元件的教程。首先,我們 ze...
Linux下生成動態庫函式及呼叫簡述
生成一般的動態庫函式 一般的庫函式指的是只是單純的編譯的 比如自己利用標準標頭檔案編寫的c cpp程式,for example 加減乘除函式 具體如下,以求和為例,找到乙個目錄開始操作,首先新建檔案 touch sum.cpp 儲存生成庫的原始碼 touch sum.h 儲存生成庫的標頭檔案,標頭檔...