小编Bes*_*ssa的帖子

CUDA C/C++:计算每点距离的平均值(相互作用能量,也许?)

我一直在尝试编写一个内核,用于计算N个给定点之间距离的倒数之和.C中的串行尾声就像

    average = 0;
for(int i = 0; i < Np; i++){
    for(int j = i + 1; j < Np; j++){
        average += 1.0e0f/sqrtf((rx[i]-rx[j])*(rx[i]-rx[j]) + (ry[i]-ry[j])*(ry[i]-ry[j]));
    }
}
average = average/(float)N;
Run Code Online (Sandbox Code Playgroud)

其中rx和ry分别是x和y坐标.

我通过使用随机数生成器的内核生成点.对于内核,我使用每块128(256)个线程来获得4k(8k)点.在它上面,每个线程执行内部的内部循环,然后将结果传递给reduce sum函数,如下所示

生成点数:

__global__ void InitRNG ( curandState * state, const int seed ){
    int tIdx = blockIdx.x*blockDim.x + threadIdx.x;
    curand_init (seed, tIdx, 0, &state[tIdx]);
}

__global__
void SortPoints(float* X, float* Y,const int N, curandState *state){

    float rdmn1, rdmn2;

    unsigned int tIdx = blockIdx.x*blockDim.x + threadIdx.x;
    float …
Run Code Online (Sandbox Code Playgroud)

cuda particle-system

3
推荐指数
1
解决办法
930
查看次数

标签 统计

cuda ×1

particle-system ×1