Good idea! By using exp(log(x)), the functional form becomes exp(dot(A,log(parents))). By making A sparse, I was able to get the execution time down to less than 10 minutes (much better than the multiple hours it was estimating before!).
Thanks for the tip.