User:Fyodorser/sandbox

Title
Fast JPEG Image Codec FVJPEG on the GPU

Introduction
FVJPEG, which stands for Fastvideo JPEG codec, is the first high speed lossy JPEG codec on NVIDIA GPU that shows extremely fast image compression and decompression according to Baseline JPEG algorithm.

History
High speed codec FVJPEG was implemented by F. L. Serzhenko and V.D. Podlozhnyuk from Fastvideo (Russia) in 2011. Compression and decompression rates on NVIDIA GeForce GTX 580 with CUDA technology are 7 times faster in comparison with the best commercial multithreaded JPEG codecs for multicore CPU. FVJPEG is much more faster than the best JPEG compression IP cores for FPGA.

Principle
High speed compression and decompression according to JPEG algorithm could be achieved due to parallel approach and usage of appropriate hardware. JPEG algorithm has very important features - image partitioning to blocks 8 x 8 pixels together with independent data processing for these blocks. This leads to really high level of parallelism and one could achieve outstanding performance for both compression and decompression.

JPEG algorithm corresponds well to high speed lossy compression/decompression because it meets the following conditions:
 * All stages of algorithm could be done in parallel
 * Reasonable image quality at 10x-20x compression ratio
 * Moderate computational intensity
 * Task division to maximum number of sub-tasks
 * Minimum amount of memory for one thread
 * Popular open standard with multiple encoders and decoders available on different platforms

Performance
Tests with standard images on NVIDIA GeForce 580 GTX GPU (512 cores, total memory 1.5 GB GDDR5) shown more than 7-x speed up in comparison with the best commercial JPEG codecs on Intel Core i7.
 * Encoding data rate 3.4 GB/s (times for Host-to-Device and Device-to-Host transfers included, CR = 13)
 * Decoding data rate 3.2 GB/s (times for Device-to-Host and Host-to-Device transfers included, CR = 13)
 * Computation throughput 10 GB/s and more (only calculations according to JPEG algorithm)

Applications for fast JPEG codec

 * High speed cameras and scanners
 * GPU cloud computing services
 * Fast JPEG image resize for web applications
 * Medical imaging systems
 * Surveillance systems
 * Scientific applications
 * Software development including PC games