【问题标题】:Cuda filling array in GPU [duplicate]GPU中的Cuda填充数组[重复]
【发布时间】:2013-04-03 22:22:06
【问题描述】:

我想在 GPU 端填充我的数组:

为了做到这一点:

首先我为主机端和设备端创建了数组:

int *d_A = NULL;
int *h_A = NULL;

然后我为主机数组分配内存:

h_A = (int *)malloc(numOfData*sizeof(int));

然后我为设备数组分配:

cudaMalloc((void **) &d_A, numOfData * sizeof(int));

然后我将 d_A 传递给 gpu 端

cudaMemcpy(d_A, h_A, numOfData, cudaMemcpyHostToDevice);

调用函数

  generateVector<<<1,2>>>(d_A,numOfData);

生成函数如下:

_global__ void generateVector(int * d_Data,int count) {

    for (int i = 0; i < count; i++) {
        d_Data[i] = rand_from_0_to_100_gen();
    }
}

我知道 GPU 端现在允许我使用 rand 函数来填充我的数组。那我该怎么办?有什么可能的解决方案?

【问题讨论】:

  • 这里是an example,展示了如何在 GPU 上创建随机数。请注意,在这种特殊情况下,每个线程都会生成相同的随机序列,但这很容易通过将可能基于 threadIdx.x 的不同种子传递给每个线程来更改。
  • 请编辑您现有的问题,而不是添加新问题。

标签: cuda


【解决方案1】:

我相信,到目前为止,最简单的方法是使用 CURAND 库。您可以在 CUDA SDK 中找到一些示例 - 看看 Monte-Carlo 的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2020-01-12
    • 2015-03-08
    • 2018-05-03
    • 2018-05-07
    相关资源
    最近更新 更多