GPUs have soared in popularity tremendously over the past few years. They are primarily intended for graphics processing but can be used for multiple other applications including Machine Learning.
The biggest barrier parallel programmers face is usually maintaining memory consistency between processors. In the case of graphics applications, data movement can be mostly uni-directional. Data can be taken from common source structures (lists of shapes/etc) and frame information computed. Data dependency becomes less of an issue as it is simpler for each processor to address its own dependency needs, even if redundant calculation is necessary, than it is to coordinate between different processors and issue expensive semaphore or memory coherence calls.
Relevant work experience:
At Resi Media I POC’ed a SMPTE 2110 encoding system using a Mellanox Card and NVIDIA GPU.
Right now I have one BouncingBall project and am working others as time permits.
Projects I would like to pursue:
- OpenCL on ARM GPUs.
- Overlay Generation