GPU signal processing

Mbyllur Postuar 6 vite mё parё Paguhet në dorëzim
Mbyllur Paguhet në dorëzim

Hello,

I'm interested in splitting the wideband signal into short channels, but I'm getting into a performance problem using PolyPhase Channelizer, which is part of GnuRadio for this purpose. I know that such operations (multiplication, working with vectors and floating-point numbers) fit well on gpgpu and fpga, which means that one single device can potentially cope with this task (as evidenced, for example, by this document [login to view URL] and other).

In any case, it is more preferable to use gpu because of the availability of them "at hand", at least from my side at the moment. As an option, we think to work with OpenCL. FPGA can be a good option for the final product due to less than gpu power consumption. We work with radar systems, in this project the band is from 80 to 160 MHz with channels in 800 kHz at 4 GHz (100-200 channels).

Also, I know about the existence of objectively too expensive Novator NC-10, and gr-theano / gr-clenabled projects, excellent gras, showing the ability to use gpu in signal processing. I'm interested in similar projects, and the development of a custom solution for my needs.

Ideally, i need a well-configurable channelizer, with the ability to set all possible properties: channel width, transition width, number of kernels, amount of data per core, and so on, since it should be universal.

Since the channels are always with the same width, it is intended to use the FFT / DFT Polyphase and / or their variations, at your discretion.

The result of the work is accepted in the form of a C ++ library providing approximately such an API:

/**

* Channelizer arguments

* @typedef channelizer_args {Object}

* @property sample_rate - Sample-rate of wideband signal

* @property channel_width - Width of channels

* @property channel_map - List of channels to produce. Example: [4,7,8,12]

* @property channel_map_size - Size of channel_map.

* @property kernels_count - Kernels count for current channelizer

* @property block_size - Count of samples per worker

* @property device_id - Identifer of device which is used for (index of gpu device)

*/

struct channelizer_args {

float sample_rate = 80e6;

float channel_width = 800e3;

int * channel_map;

int channel_map_size;

int kernels_count = 4095;

int block_size = 32760;

int device_id = 0;

};

/**

* @class Channelizer

*/

class ChannelizerImpl {

public:

/**

* @constructor

* @param args - Arguments

* @return Created channelizer instance

*/

ChannelizerImpl(channelizer_args args){}

/**

* Pass data to process into channelizer.

* Its blocking function. Frees up the process when it completes the data transfer to the video card.

* @param buf - Input samples buffer with wideband signal.

* I re-re-use the buffers that I pass here, bear in mind.

* @param size - Его размер.

*/

virtual void pass(

float * buf,

int size

) = 0;

/**

* Got the result from channelizer.

* In what form and how - as you prefer. As exeample, output samples can be interleaved or etc..

* I assume to get an array of buffers.

* I remind you that the output does not need all channels, but only those that are specified in channel_map.

*/

virtual ? receive(?) = 0;

};

Apparently, it is supposed to create several instances of the channelizer on different devices with different parameters.

It would be great to get your opinion on the possible details of the development, methods (FFT/DFT or Digital Down Converter), thoughts on the overall implementation.

Note: We are working with Linux.

Thanks for reading, I hope for cooperation,

Andrew.

Programim në gjuhën C++ GPGPU OpenCL

ID Projekti: #14928751

Rreth projektit

11 propozimet Projekti në distancë Aktiv 6 vite mё parё

11 profesionistë freelancer dërguan një ofertë mesatare prej $1309 për këtë punë

hbxfnzwpf

I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 6 years. My work is online game developing, and mainly focus on client side, using c++ under windows envir Më shumë

$800 USD për 14 ditë
(95 Përshtypje)
6.6
moeed10

Hi, I am an electrical engineer with major in Telecommunications. I have worked extensively with Gnu Radio on multiple projects. My projects involved OFDM Mod/DeMod, Cooperative communication, Channel coding and most Më shumë

$1750 USD për 10 ditë
(11 Përshtypje)
6.2
ThanassisKalv

hello I have experience optimizing OpenCL/Cuda kernels for algorithms related to Electrical Engineering (because of university background) This seems a truly interesting project for me, I would like to discuss more a Më shumë

$1000 USD për 20 ditë
(50 Përshtypje)
5.4
BeautiCG

hello,dear. It's my pleasure meeting you. I have read your requirements and I fully went through it. I am confident and I am sure that I can do your project. Please contact me for further discussing. Thanks for your in Më shumë

$1250 USD për 8 ditë
(14 Përshtypje)
4.4
prashushinde9

Hello, Greetings! Your requirements are at a very high level and we would like to interact with you to discuss the insights and then recommend a best solution. We are team of highly qualified professionals with p Më shumë

$1764 USD për 20 ditë
(2 Përshtypje)
4.0
enamovic

Hello there! I noticed your project in the last moment. First, did you consider DSP for the task? I worked for a company where we used DSPs for real-time signal processing. Second: in your code you are using Më shumë

$1000 USD për 20 ditë
(4 Përshtypje)
4.2
vitalybrenner

A proposal has not yet been provided

$1250 USD për 20 ditë
(0 Përshtypje)
0.0
king18yat

In the bid amount, You get website version, desktop, android and ios apps. with daily work updates , daily communication, 1 year complete (maintenance , updates , changes), id No advance needed, SEO//

$1833 USD për 44 ditë
(0 Përshtypje)
0.0