- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 CURAND 库 API,我是 CUDA 的新手,我想看看是否有人真的可以向我展示一个使用 CURAND 库生成随机数的简单代码。我正在研究生成大量数字以用于离散事件模拟。我的任务只是开发使用 GPGPU 加速随机数生成的算法。我已经在标准 C 语言编程中实现了 LCG、乘法和 Fibonacci 方法。但是我想将这些代码“移植”到 CUDA 中并利用线程和 block 来加速生成随机数的过程。
链接 1:http://adnanboz.wordpress.com/tag/nvidia-curand/
那个人有我需要的两种方法(LCG 和 Mersenne Twister),但代码没有提供太多细节。我想知道是否有人可以扩展这些初始实现,从而为我指明正确使用它们的正确方向。
谢谢!
最佳答案
您的问题具有误导性 - 您说“为傻瓜使用 cuRAND 库”,但您实际上并不想使用 cuRAND。如果我理解正确的话,您实际上想要从头开始实现您自己的 RNG,而不是使用 cuRAND 中可用的优化 RNG。
作为旁注,请记住虽然简单的 LCG 快速且易于跳过,但它们通常具有 fairly poor statistical properties特别是在使用大量绘图时。当您说您需要“Mersenne Twister”时,我假设您指的是 MT19937。引用的 Gems 书讨论了并行化 MT19937,但最初的开发人员创建了 MTGP 生成器(也在上面引用),因为 MT19937 实现跳过相当复杂。
另请注意,仅使用不同的种子来实现并行化通常不是一个好主意,从统计上讲,您无法保证独立性。您需要跳过或蛙跳,或者使用其他一些技术(例如 DCMT )来确保序列之间没有相关性。
关于CUDA - 为傻瓜使用 CURAND 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728714/
我正在使用 CURAND 库在 CUDA 中编写随机生成代码。我读到的关于随机生成的内容让我相信,如果我使用相同的种子,我将得到相同的随机数集。但是当我测试它时,情况并非如此。请解释我做错了什么。我粘
我正在为一个项目学习 C++,对于我的项目,我需要在 GPU 上生成一个随机数。 为此,我决定使用 cuRAND。 但是,我在这条线上遇到了一个小问题: random > >(time(NULL),
我的动机:我正在使用一种算法来模拟种群动态,我希望使用 CUDA 以便能够在数值模拟中考虑大量节点。虽然这是我第一次在 GPU 上运行代码,但到目前为止结果看起来很有希望。 背景:我需要考虑随机噪声,
我正在尝试使用 CURAND 库生成从 0 到 100 之间完全独立的随机数。因此我将时间作为每个线程的种子并指定“id = threadIdx.x + blockDim.x * blockIdx.x
我正在阅读 CURAND 库 API,我是 CUDA 的新手,我想看看是否有人真的可以向我展示一个使用 CURAND 库生成随机数的简单代码。我正在研究生成大量数字以用于离散事件模拟。我的任务只是开发
我想在 .cu 格式文件中使用 drand48 获得随机统一数,为什么我总是给我 3.90799e-14 这个值 我的代码在 ran_uniform_test.cu 中 #include int m
上下文:我目前正在学习如何正确使用 CUDA,特别是如何使用 CURAND 生成随机数。我学会了here当我需要随机数时,在我的代码中执行核心计算的内核中直接生成随机数可能是明智的。 在 docume
如何为 CURAND_RNG_QUASI_SCRAMBLED_SOBOL64 生成器播种?因为它每次运行时都会给我相同的数字,而且我不能使用 curandSetPseudoRandomGenerato
是否可以在设备仿函数中将 CURAND 与 Thrust 一起使用?最小代码示例可以是: #include struct Move { Move() {} using Positio
我正在使用我们组织内开发的大型 CUDA 矩阵库。我需要保存 CUDA RNG 的状态以获取长时间运行的模拟的快照,并能够在以后恢复它。这很简单,例如,python+numpy: state = nu
我正在考虑将我的计算卡从 nvidia 切换到 amd,因为我需要 double 支持。在这样做之前,我决定在我的 nvidia 卡上学习 opencl,看看我是否喜欢它。我想将以下代码从 CUDA
我正在 NVIDIA CUDA GPU 上研究马尔可夫链蒙特卡罗 (MCMC) 算法实现。 CPU MCMC 算法使用高质量的 Mersenne twiner 随机数生成器,我想在我编写的 GPU 内
对于安全(或错误检查)的 CUDA 调用(例如 cudaMemcpy、cudaMalloc、cudaFree 等函数),我们可以定义一个 wrapper ,像这样的东西: #define cuSafe
我有以下代码,我正在尝试使用 nvcc 进行编译。 代码: #include #include #include #include int main(void) { size_t n
问题我正在尝试使用 OpenACC 和 cuRAND 库生成随机数。我有一段简单的代码(只是尝试了一些事情),它基本上是 pgi cuRAND 示例 (/opt/pgi/linux86-64/2018
我花了很多时间试图找出这个问题的原因。以下代码尝试在 device 上使用 curand 生成一系列正态分布的随机变量。它似乎成功生成了一些,但随后因“遇到非法内存地址错误”而崩溃。非常感谢任何帮助。
我研究了几个小时, MSDN Microsoft - Linker Tools Error LNK2019 How to solve the error LNK2019: unresolved ext
我是一名优秀的程序员,十分优秀!