With more workstation applications utilizing more efficient rendering pipelines and rendering larger scenes with more complex fragment shaders, GPUs can become the bottleneck in a system. The first part of this talk will be a refresher on multi-gpu programming basics to scale your rendering tasks. We show how to target individual APIs programmatically as well as structure your application by using multiple threads, OpenGL contexts and handle the synchronization and data transfer. The second part will dive in to details of designing a rendering pipeline that can efficiently utilize a multi-GPU setup by splitting rendering tasks into a set of phases. These phases represent a set of threads that distribute the rendering load across a set of GPUs. The talk will comprise how to set up a multithreaded application using C++11 constructs, how to analyze/debug the performance of a graphics application, how to do PCIe transfers efficiently and how to optimally distribute workload across different GPUs.