Still searching for inf bug in libcudcvt blurred_difference_likelihood.
Found it: my GPU-based log_sum routine had a bug. instead of subtracting the maximum value before exp-summing, it subtracted an arbitrary value. The find-max loop looked like this:
Real pi = v[0];
#pragma unroll
for(unsigned int i = 1; i < N; ++i)
{
pi = pi < v[0] ? v[0] : pi;
}
Obviously, the zeros should be i's.
A great bug to have found and fixed, but really frustrating that I let it slip through in the first place. So stupid! But it didn't affect correctness in the common case, so my tests didn't catch it. It makes a good case for randomized testing (as if a good argument was lacking...).
(semi-obvious) note to self: conditional gaussian mixture is not equal to mixture of conditional gaussians!
okay, a few more cleanup tasks, then on to real goals:
Thought some on birth moves. It seems like there are some possibilities for births larget than two by using the adjacency graph created by pair candidates.
for now, start with greedy
Posted by Kyle Simek