Silicon, the building block of all computers, has finally shown its limits. Our components can no longer get any faster; instead we must use more. The future of computing and Moore's law now lies in parallelism- on a massive scale. The challenge lies in how to leverage such architectures.
How does one design for parallelism however? How do we avoid deadlocks, synchronisation errors, and other such problems? How do we efficiently divide the workload among processors? An excellent problem for a final year project I thought...
The design employed by this application addresses these issues. It also aims to simplify multi-threaded programming. The final demo consists of terrain tessellation, batch rendering and visibility determination- all done in parallel. It could also be extended to include physics, AI and other tasks easily. Most importantly however it can scale, to both current and future processors; a key design goal of the project.