customGBEnergyPerParticle.cl 754 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * Reduce the derivatives computed in the N^2 energy kernel, and compute all per-particle energy terms.
 */

__kernel void computePerParticleEnergy(int bufferSize, int numBuffers, __global float* energyBuffer
        PARAMETER_ARGUMENTS) {
    float energy = 0.0f;
    unsigned int index = get_global_id(0);
    while (index < NUM_ATOMS) {
        // Reduce the derivatives

//        int totalSize = bufferSize*numBuffers;
//        float sum = valueBuffers[index];
//        for (int i = index+bufferSize; i < totalSize; i += bufferSize)
//            sum += valueBuffers[i];

        // Now calculate the per-particle energy terms.

        COMPUTE_ENERGY
        index += get_global_size(0);
    }
    energyBuffer[get_global_id(0)] += energy;
}