Menu

Acceleration?

Flash
2019-06-14
2019-06-17
  • Flash

    Flash - 2019-06-14

    I have a signal processing application that SigPack would seem to be perfect for. However, I want to take advantage of available GPU acceleration.

    NVidia provides both BLAS and FFTW interface layers that make this trivial. However, I'm wondering if some of the implementations in SigPack might defeat this. Granted, I'm very new to GPU programming (hence my desire for abstraction, but consider this implementation in the "window.h" header:

        arma_inline arma::vec cos_win( const arma::uword N, const arma::vec& a )
        {
            arma::vec h(N);
            for(arma::uword i=0; i<N; i++)
            {
                h[i] = a[0] - a[1]*std::cos(1.0*PI_2*i/(N-1)) + a[2]*std::cos(2.0*PI_2*i/(N-1)) \
                       - a[3]*std::cos(3.0*PI_2*i/(N-1)) + a[4]*std::cos(4.0*PI_2*i/(N-1));
            }
            return h;
        }
    

    Is there no way to apply a function to the entire vector such that it can be GPU'd? Seems like this block would necessarily be bound to the CPU.

     
  • Claes Rolen

    Claes Rolen - 2019-06-17

    Hi, glad that you are considering SigPack for your project. Unfortunately there is no support for GPU at this time, Conrad Sandersson, the creator of Armadillo, has a project for Armadillo GPU (https://coot.sourceforge.io/) but I think it is in a "resting" state. Many of the functions in SigPack has potential for improvement regarding performance and my intention is to review this for the different blocks. Meantime, I would recommend you to use OpenBlas and compile it natively on your computer, it has some good multi-thread support and is almost as fast as Intel MKL

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.