]> AND Private Git Repository - book_gpu.git/blob - BookGPU/Chapters/chapter17/code/collem_kernel_reduc.cl
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ch15
[book_gpu.git] / BookGPU / Chapters / chapter17 / code / collem_kernel_reduc.cl
1 #include "collem_structures.h"
2
3 kernel void reduce(
4     global CollemWorld *world,
5     global int *populations,
6     global int *patchesOwners,
7     global int *plotsPopulations)
8 {
9     const int i = get_global_id(0);
10     const int j = get_global_id(1);
11     
12     // Retrieve the owner parcel
13     const int plotId = CELL(world, patchesOwners, i, j);
14     if (plotId == -1) return;
15     
16     // Add cell population to the owner parcel population 
17     atomic_add(plotsPopulations + plotId, CELL(world, populations, i, j));
18 }