【问题标题】:CUDA - parallelism - logic processCUDA - 并行性 - 逻辑过程
【发布时间】:2015-07-24 14:08:22
【问题描述】:

我是 CUDA 和并行性的新手。我希望得到一些理解。您应该熟悉标准 SumArrayOnGPU :

__global__ void
vectorAdd(const float *A, const float *B, float *C, int numElements)
{
    int i = blockDim.x * blockIdx.x + threadIdx.x;

    if (i < numElements)
    {
        C[i] = A[i] + B[i];
    }
}

我要做的是不断增加一个数字,通过任意网格运行该数字,并且只关心返回给我特定答案的增加的数字。

因此,并行性将在递增的数字上运行相同的例程。

  1. 这样的事情可能吗?
  2. 什么是正确的逻辑?
  3. 是否仍需要将其放入阵列设置中?

思想例子:

__global__ void
vectorfind(long long unsigned *nbr, int numElements)
{
    long long unsigned tnbr;

    int i = blockDim.x * blockIdx.x + threadIdx.x;

    if (i < numElements)
    {
        tnbr = nbr + i;
        tnbr = hash(tnbr);
        if (tnbr = arbitraryresult) { printf("found");
    }
}

【问题讨论】:

  • 我不清楚你想做什么;你的“思想例子”有什么问题?
  • 我传入的 nbr 是一个起点。然后,我想从那个起点迭代。所以,我从 500,000,000 开始,我想迭代 100,000 次。因此,它将是 500,000,000 + 1,2 ..... 最多 +100,000 。然后我想通过哈希例程运行那个递增的数字。然后我想检查结果以查看它是否与设定值匹配。这有意义吗?我的思维过程正确吗?我的想法有问题吗?
  • 你的想法似乎是正确的。这个想法是通过蛮力计算找到一个散列整数。但是你为什么不试试呢?
  • 好的,初步测试似乎不错。

标签: cuda parallel-processing nvcc


【解决方案1】:

我想确保逻辑是合理的。感谢几个用户的回复,我得到了我的回答,逻辑是好的。我想发布这个,以免有悬而未决的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2014-07-30
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多