c - 简单的 OpenCL 随机生成器

标签 c opencl

我一直在网上寻找一个简单的在线 OpenCL 数字生成器。我找不到任何易于使用的东西。

我想要如下内容:

int generateRandomNumber(int fromNumber, int toNumber)
{
    int num = functionOfRandomness();
    return num;
}

如果有人知道我如何获得两个值之间的随机数的示例,将不胜感激。它不必是一个复杂的随机系统,只要能简单快速地工作就可以了

谢谢

最佳答案

我从 geeks3d 的实时 OpenCL 路径跟踪器中提取了以下代码。内核是纯文本的。这是我第一次学习如何使用 OpenCL 的方式。

http://www.geeks3d.com/20120502/laguna-real-time-opencl-path-tracer/

float4 rand(uint2 *state)
{
    const float4 invMaxInt = (float4) (1.0f/4294967296.0f, 1.0f/4294967296.0f, 1.0f/4294967296.0f, 0);
    uint x = (*state).x * 17 + (*state).y * 13123;
    (*state).x = (x<<13) ^ x;
    (*state).y ^= (x<<7);

    uint4 tmp = (uint4)
    ( (x * (x * x * 15731 + 74323) + 871483),
      (x * (x * x * 13734 + 37828) + 234234),
      (x * (x * x * 11687 + 26461) + 137589), 0 );

    return convert_float4(tmp) * invMaxInt;
}

关于c - 简单的 OpenCL 随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064591/

相关文章:

c - 如何在 visual studio 的线程窗口中填充线程名称?

c - 在C中制作函数树

c - 如何用比例而不是原始数字显示文本直方图

python - pyOpenCL 和 opencl4py 的区别

c# - Cloo OpenCL c# 问题

directx - 将 OpenCL 缓冲区绑定(bind)到 DirectX 缓冲区

c - 阻止 Linux 将 usb 条形码扫描器字符发送到控制台

c - 短类型可以在 C 中存储的最大和最小数字是多少?

parallel-processing - NVidia 是否支持 OpenCL SPIR?

python - 我可以将numpy与AMD的gpu加速blas库链接起来吗