ocorrência de contagem de impulsos [duplicado]
Duplicata Possível:
Contando ocorrências de números no array cuda
Existe uma maneira de usar thrust ou cuda para contar a ocorrência das duplicatas em uma matriz?
por exemplo, se eu tiver um vetor de dispositivo {11, 11, 9, 1, 3, 11, 1, 2, 9, 1, 11} eu deveria obter 1: 3 2: 1 3: 1 9: 2, 11: 4
se o impulso não pode fazer isso, como posso usar um kernel para fazer isso?
Obrigado! Eu estou fazendo cálculo de concentração. é por isso que estou fazendo esta pergunta. suponha que existem 100000 partículas no domínio que tem nx X ny X nz células, eu preciso calcular a concentração de cada célula (quantas partículas em cada célula)
Meu kernel é esse
__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];
}