[Work Log] GPU debugging

October 22, 2013
Project Tulips
Subproject Data Association v3
Working path projects/​tulips/​trunk/​src/​matlab/​data_association_3
SVN Revision 15229
Unless otherwise noted, all filesystem paths are relative to the "Working path" named above.

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
blog comments powered by Disqus