{'fraction_non_alphanumeric': 0.013806706114398421, 'fraction_numerical': 0.0, 'mean_word_length': 5.588744588744588, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Multi-GPU Load Balancing for In-Situ Simulation and Visualization

Multiple-GPU systems have become ubiquitously available due to their support of massive parallel computing and more device memory for large scale problems. Such systems are ideal for In-Situ visualization applications, which require significant computational power for concurrent execution of simulation and visualization. While pipelining based parallel computing scheme overlaps the execution of simulation and rendering among multiple GPUs, workload imbalance can cause substantial performance loss in such parallel configuration. The aim of this paper is to research on the memory management and scheduling issues in the multi-GPU environment, in order to balance the workload between this two-stage pipeline execution. We first propose a data-driven load balancing scheme which takes into account of some important performance factors for scientific simulation and rendering, such as the number of iterations for the simulation and the rendering resolution. As an improvement to this scheduling method, we also introduce a dynamic load balancing approach that can automatically adjust the workload changes at runtime to achieve better load balancing results. This approach is based on an idea to analytically approximate the execution time difference between the simulation and the rendering by using fullness of the synchronization data buffer. We have evaluated our approaches on an eight-GPU system and showed significant performance improvement.