Accelerating Physics-Simulation Using GPUs
Our client was an organically grown SME working on engineering planning applications. Their founder was enthusiastic about the idea of using GPUs to accelerate physics simulations that were part of their pipeline, so he ordered a proof-of-concept to evaluate the amount of speed-up that could be achieved. Significant performance gains resulted in not only an improvement of their existing solutions but also the realisation of entirely new applications.
First our team analyzed the relevant literature and designed a novel algorithm that was meant to be inherently more efficient than the state-of-the-art. Such results were possible, because a sufficiently close approximation of the brute-force simulation was very viable, inspired by techniques that our engineers knew from different problem domains. Later several iterations of the original concept were developed to adopt the expanding requirements, and eventually most of them were implemented on GPUs too. TechnoLynx provided a family of algorithms with future-proofed design and great potential for further improvements depending on the strategic direction our client is willing to take with an on-demand level of readiness and optimization.
Despite being an R&D problem in nature, the project successfully incorporated commercial feedback and a few scope changes in an agile fashion. As a result of such changes, utility functions have also been developed alongside the simulation core.
For this project we almost exclusively relied on C++ , CUDA and CMake, although for fast prototyping we occasionally used Python/NumPy as well.
We used best practice task management techniques to achieve a high-level of multi-core utilization and optimized the feeding of the GPUs too. The code drops were compliant with different operating systems and compilers.
Finally, our team delivered implementations of a new simulation core for our client who was satisfied with its runtime performance, serving as a solid proof for the applicability of GPUs in this domain. The new simulation core could model the required physical phenomena in a visually pleasant way, enabling an improved UX, alongside with new features compared to the baseline. Later the project proceeded to a higher readiness level, hence rudimentary testing and utility tools were also developed with an on-demand basis, enabling the integration of the new core to the client’s existing system. Several different existing and new use-cases has been evaluated using these tools, and areas of future improvements have also been identified.