OpenCL for signal processing

493 Views Asked by At

I'm looking to write signal processing code that will need the usual parallel primitives (e.g., scan(), reduce(), map(), and sort()) along with efficient routines for FFTs and dense vector/matrix operations to support stuff like principal component analysis, which would include finding eigenvectors & eigenvalues. Plenty of matrix inverses and multiplications as well. Host code will be C++11.

I'd like to use OpenCL to stay platform agnostic, but a few days of experimentation aren't given me confidence in the maturity of the tools. I like Boost.Compute in terms of the programming model and primitives, but am not sure if a LAPACK library like clMAGMA and FFT library FFTcl would play well with it in terms of data types, shared context, and async operations. I'm also seeing that the last update to clMAGMA was two years ago.

ViennaCL covers the FFTs and some matrix operations but doesn't help with LAPACK. VEXcl is only for sparse vectors/matrices.

None of this seems tricky with CUDA—install Nvidia's dev tools and go. All the up-to-date libraries are there, plus there's stuff like NPP to cover other things I may need. I'm not seeing much risk of incompatibilities between the libraries.

I'm curious if anyone else has gone this route with OpenCL. I'd like to do that, but I feel it's higher risk than going with CUDA, which appears to offer much less chance of running into unforeseen snags.

0

There are 0 best solutions below