利用curand的host API生成均匀分布的随机数
来源:互联网 发布:java 乘法溢出 编辑:程序博客网 时间:2024/05/16 06:47
利用cuda生成随机数其实很简单,分为以下几步:
1. 准备相应的内存(device端)
2. 创建生成器
3. 设置生成器的种子
4. 调用对应均匀分布的生成函数
5. 拷贝回主存(可选)。
其中核心是234步,以下是一个简单的示例:
#include <iostream>#include "cuda_runtime.h"#include "device_launch_parameters.h"#include "curand.h"#include "time.h"#include <stdio.h>using namespace std;int main(){cudaError_t cudaStatus;double* dev_tmp_u = 0;double* tmp_u = 0;tmp_u = new double[20];curandGenerator_t gen;cudaStatus = cudaMalloc((void**)&dev_tmp_u, 20* sizeof(double));if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMalloc failed!");goto Error;}curandCreateGenerator(&gen, CURAND_RNG_PSEUDO_DEFAULT);curandSetPseudoRandomGeneratorSeed(gen, time(NULL));curandGenerateUniformDouble(gen, dev_tmp_u, 20); // Copy output vector from GPU buffer to host memory. cudaStatus = cudaMemcpy(tmp_u, dev_tmp_u, 20 * sizeof(double), cudaMemcpyDeviceToHost); if (cudaStatus != cudaSuccess) { fprintf(stderr, "cudaMemcpy failed!"); goto Error; }for (int i = 0; i < 20; i++){cout << tmp_u[i] << " " << endl;}Error: cudaFree(dev_tmp_u);delete[] tmp_u; return cudaStatus;}
0 0
- 利用curand的host API生成均匀分布的随机数
- 均匀分布随机数的生成算法简介
- “利用值域为1到7整数的随机数发生器(均匀分布),生成均匀分布的1到10的整数。”
- 验证scala.math.random生成的随机数是均匀分布的
- 【算法分析】随机数的生成:均匀分布、正态、泊松 、瑞利
- CUDA 库函数-----cuRAND生成随机数
- cuda之curand生成随机数
- 均匀分布随机数产生的程序
- .net实现的随机数均匀分布
- 利用Java API生成50到100之间的随机数
- 生成均匀分布次序统计量的伪随机数 生成删失伪随机样本
- 数字信号产生之均匀分布的随机数
- C++均匀分布U(0,1)的随机数
- C++中如何产生均匀分布的随机数
- 随机数生成(一):均匀分布
- 【MATLAB】高斯分布 均匀分布 以及其他分布 的随机数生成函数
- 使用均匀分布随机数产生器构造任意分布的随机数产生器
- C++实现生成均匀分布的数字
- 环信sdk与支付宝的冲突
- Session监听
- 对MobSF的源码进行分析
- 模拟BootStrap的弹框功能
- C#连接数据库的方法
- 利用curand的host API生成均匀分布的随机数
- 【arduino】通过Esp8266-01模块实现的WiFi通信(3)使用TCP协议进行局域网通信(client篇)
- Leetcode - Isomorphic Strings
- Spring Mvc那点事---(1)开发环境搭建
- 19.Remove Nth Node From End of List(7.54%)
- Android-SQLiteDatabase数据存储
- Cortex-M3 内部寄存器
- java源码分析--Enumeration接口和Iterator接口
- 自动释放池简单原理