CUDA for accelerating network applications

Hi,

I work on network applications which process high volume of message (which are transactions and orders) and i’m just curious if such scenarios lend itself to acceleration using GPUs?

Any pointers will be greatly appreciated!

Regards!

If the messages are independent from each other, then I think it can be mapped on GPU. The important think is that it should be SIMD (Single Instruction Multiple Data).

the network messages varies (there are 10-15 msg types) and each is decoded to objects encapsulating up to 50 different fields. depending on the fields, these objects are then send to different parts of the application for processing, some of them routed to other systems. i understand that crunching tons of numbers are the best type of tasks suited for GPUs. however in my case there are many if-then-else checks done on the messages to process them, so i’m not sure if this lends itself to computing using GPU.

You’re right, this might not be a perfect application for a GPU. Handling huge objects is tricky in CUDA too since it’s much better to have a structure of arrays over an array of structures - it’s related to how threads coalesce memory operations. It could mean big changes to the code or building some sort of a translation layer…

You might also run into performance issues due to copying stuff over to the card and back. It’s best if the data is copied to the GPU once per a whole lot of processing and you make it sound like the data’s going to be sent elsewhere.

ya… seems like it’s not too promising to use GPU in this case…

one thing to consider is like say if the message (stream of bytes) gotten over the wire is of the form of tag-value pairs, eg below,

|messagestart|a=b|c=d|e=f|g=h|i=j|…|me
ssageend|.

suppose there are hundreds of tag-value pairs, would it be faster to parse the message using cuda threads each taking the start (‘|’) index of the each of the tag-value pairs and parsing the tag and value info?