October 22, 2013

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:

- cleanup and commit version 0.1 of the likelihood server -- done
- split training into it's own directory. -- done
- Get likelihood server connecting reliably with matlab on different computers.
- implement likelihood importance sampling into maltlab's curve_ml procedure

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