A compute device for adaptive processing of multiple buffers, the compute device comprising: a serial buffer processor configured to process buffers serially using single instruction, single data, SISD, instructions; a parallel buffer processor configured to process a maximum of M number of buffers in parallel using single instruction, multiple data, SIMD, instructions; a buffer queue; a buffer queue manager configured to: determine the number of buffers in the buffer queue, wherein a buffer is a block of data to be processed; and determine an algorithm to be applied for processing the buffers in the buffer queue; an algorithm throughput determiner configured to: determine a first throughput of the algorithm based on processing the buffer queue by the parallel buffer processor; and determine a second throughput of the algorithm based on processing the buffer queue by the serial buffer processor; and a buffer assigner configured to assign, based on the first throughput, the second throughput, and the number of buffers in the buffer queue, the buffers in the buffer queue to the serial buffer processor or the parallel buffer processor for processing, wherein if it is faster to process the buffers by the serial buffer processor, the buffer assigner assigns the buffers to the serial buffer processor; or if it is faster to process the buffers by the parallel buffer processor, the buffer assigner assigns the buffers, up to the maximum of M number, to the parallel buffer processor. a serial buffer processor configured to process buffers serially using single instruction, single data, SISD, instructions; a parallel buffer processor configured to process a maximum of M number of buffers in parallel using single instruction, multiple data, SIMD, instructions; a buffer queue; a buffer queue manager configured to: determine the number of buffers in the buffer queue, wherein a buffer is a block of data to be processed; and determine an algorithm to be applied for processing the buffers in the buffer queue; determine the number of buffers in the buffer queue, wherein a buffer is a block of data to be processed; and determine an algorithm to be applied for processing the buffers in the buffer queue; an algorithm throughput determiner configured to: determine a first throughput of the algorithm based on processing the buffer queue by the parallel buffer processor; and determine a second throughput of the algorithm based on processing the buffer queue by the serial buffer processor; and determine a first throughput of the algorithm based on processing the buffer queue by the parallel buffer processor; and determine a second throughput of the algorithm based on processing the buffer queue by the serial buffer processor; and a buffer assigner configured to assign, based on the first throughput, the second throughput, and the number of buffers in the buffer queue, the buffers in the buffer queue to the serial buffer processor or the parallel buffer processor for processing, wherein if it is faster to process the buffers by the serial buffer processor, the buffer assigner assigns the buffers to the serial buffer processor; or if it is faster to process the buffers by the parallel buffer processor, the buffer assigner assigns the buffers, up to the maximum of M number, to the parallel buffer processor.