Date: Jan 25, 2014 4:28 PM
Author: Christian
Subject: histc for gpu

Hi,

I hope to use histc on CUDA, but it's not a supported function. So I tried a workaround because I'm actually just interested in the second output argument:

[~,ind] = histc(x,x_grid);

is more or less equivalent to the following code (except for points outside the grid).

ind=ones(size(x));
for j=1:length(x_grid)-1
ind(x>=x_grid(j) & x<x_grid(j+1)) = j;
end

But this latter code is much slower than histc, probably due to the loop. For instance, for my inputs the first code requires 0.03 seconds, the latter needs 1.8 seconds.

Is it possible to speed up the second code so that I can still run it on CUDA?

Thanks,
Christian