![]() ![]() In particular, you may want to change your “view” of the problem as a 2D convolution… though this may depend on the convolution kernel itself.īut notice, horizontally, the 256 wide convolution is really a dot product since you don’t care about all the columns, just the center one. What other convolution algorithms are used depending on argument sizes?Ībsolutely this can be done in CUDA, though the exact best strategy will require some experiments. There are times it seems it’s not such a good idea to use FFTs in doing convolutions, such as when the kernel is just one element. So far, I’ve tried some of the cuFFT functions from Mathematica but am seeing no performance improvements (possibly due to inept compile settings). I was hoping for some pointers and advice on implementing this. I am adapting the sample convolutionFFT2D code to do this, though I don’t understand parts of the code (such as binding arrays to texture references) and am not sure if it’s all necessary. Is this a problem that is a good candidate for CUDA? The objective being optimized is a function of the sum of the 8993 elements in each convolution, so I have to be careful of accumulated errors. ![]() The movie will be fixed throughout but there will be batches of 50 kernels that will need to be convolved with the movie on each iteration, which are steps in a quasi-newton optimization with the kernel elements as parameters. The result of the convolution is a real vector of length 9000-8+1=8993, so no overhangs in the convolution. I have a 2D 8x256 kernel and would like to convolve it with a 9000x256 ‘movie’. For my first real CUDA attempt, I would like to convert some Mathematica code using ListConvolve to CUDA. ![]()
0 Comments
Leave a Reply. |