CUDA 庫函式 cuRAND生成隨機數

2021-06-19 18:46:26 字數 1700 閱讀 5771

在主機側使用隨機數生成的庫函式大致分為三個步驟:

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 儲存生成庫的標頭檔案,標頭檔...