Schubzählung Vorkommen [Duplikat]
Mögliche Duplikate:
Zählen von Vorkommen von Zahlen in einem cuda-Array
Gibt es eine Möglichkeit, Thrust oder Cuda zu verwenden, um das Auftreten der Duplikate in einem Array zu zählen?
Wenn ich beispielsweise einen Gerätevektor {11, 11, 9, 1, 3, 11, 1, 2, 9, 1, 11} habe, sollte ich 1: 3 2: 1 3: 1 9: 2, 11: 4 erhalten
Wenn Thrust das nicht kann, wie kann ich einen Kernel verwenden, um das zu tun?
Vielen Dank! Ich mache Konzentrationsberechnung. Deshalb stelle ich diese Frage. Angenommen, es gibt 100000 Partikel in der Domäne, die nx X ny X nz Zellen hat. Ich muss die Konzentration jeder Zelle berechnen (wie viele Partikel in jeder Zelle).
Mein Kernel ist das
__global__ void concentration_kernel(float3* posPtr, uint* device_cons)
{
__shared__ uint cache[256];
uint x = threadIdx.x + blockIdx.x * blockDim.x;
uint y = threadIdx.y + blockIdx.y * blockDim.y;
uint offset = x + y * blockDim.x * gridDim.x;
float3 posf3 = posPtr[offset];//make_float3(43.5,55,0.66);//
uint cellIndex = (uint)(posf3.z+1)*153*110 + (uint)(posf3.y)*153 + (uint)posf3.x;
cache[threadIdx.x] = device_cons[cellIndex];
__syncthreads();
uint a = cache[threadIdx.x];
a++;
cache[threadIdx.x] = a;
__syncthreads();
device_cons[cellIndex] = cache[threadIdx.x];
}