This paper presents an OpenMP-style parallelism API for Uxntal, the stack-based assembly-style language for the Uxn platform, and demonstrates that exemplar code using this API can run at comparable performance even on an integrated GPU.
Abstract
One of the main reasons compute hardware becomes obsolete is software bloat: resource requirements increase for every iteration of a software product. Resource constrained VMs are one way to combat software bloat as they post a hard limit on the resources and so force the programmer to be frugal. In this paper we explore the deployment of one such resource constrained VM, Uxn, on GPU. We show that for competitive performance it is essential to make use of the GPU data parallelism. We present an OpenMP-style parallelism API for Uxntal, the stack-based assembly-style language for the Uxn platform. We demonstrate that exemplar code using our API can run at comparable performance even on an integrated GPU. Specifically, our evaluation results show that using this approach improves performance on the compute-intensive Stencil benchmark with 19x and frame rate on the graphics-intensive Bunnymark benchmark with 7x. In practice, all laptops and desktops and even mobile devices have a GPU and our work shows that they can be used to execute frugal workloads effectively.
Heterogeneous architectures featuring CPUs and GPUs in one system are increasingly adopted for high-performance data processing, yet interconnect bandwidth and memory capacity remain primary bottlenecks on the GPU side. While high-end solutions like NVIDIA Grace Hopper mitigate these issues via specialized interconnects, their high cost limits widespread adoption. We investigate the memory capabilities of the NVIDIA DGX Spark, a novel platform featuring a unified memory architecture where DDR memory is located on the CPU and is fully accessible from the GPU. We analyze the performance and tuning of such a system and explore how data processing workloads can be best run on such shared memory architectures. The demonstration will showcase how memory is allocated, the performance implications of different configurations, the results of running a data analytics benchmark, and the tools used to run the benchmarks, insert instrumentation, and analyze the results.
Silvia R. Alcaraz, S. Hepkema, Vasilis Mageirakos et al.· Proceedings of the 4th Works...· 0 citations
FitFloat is presented, a drop-in floating-point array replacement supporting user-specified precision on GPUs with the goal of reducing storage requirements of scientific applications while maximizing performance over Unified Memory.
Recent research has focused on developing GPU-accelerated algorithms for solving linear programs (LPs), with results that are nothing short of extraordinary. But a complete solver pipeline consists of more than the core algorithm, and the elephant in the room is that stages such as presolve have remained on the CPU, where they have become an increasingly large bottleneck. Presolve has stayed on the CPU because of the longstanding view, held by academic and industrial developers alike, that it is inherently sequential and irregular, and therefore difficult to parallelize efficiently. In this paper we challenge this view and show that presolving can benefit substantially from GPU acceleration. We describe simple design principles that avoid severe load imbalance and expose parallelism in reductions that appear inherently sequential. We implement these principles in cuPSLP, a GPU-accelerated version of PSLP, a CPU-based presolver that is itself several times faster than a state-of-the-art commercial presolver. In our experiments, cuPSLP reduces the shifted geometric mean presolve time of PSLP by a factor of 11 on the Mittelmann LP benchmark set and 42 on the GAMS large-scale LP benchmark set, with similar reduction quality.
Valk, a performance analysis tool that combines data from multiple profilers, shows that when memory bandwidth is increased, kernels become compute bound, and makes three recommendations to fully utilize the GPUs' potential for relational workloads when the memory wall is removed.
S. Hepkema, Bo-Wen Wu, Christos Kozyrakis et al.· 0 citations
Currently, most supercomputers are equipped with GPUs from manufacturers such as NVIDIA, AMD, or Intel, which provide substantial parallelism and high throughput. It is common for a single compute node (intranode) to host multiple GPUs, typically four or more. Therefore, effectively leveraging all these GPUs within a single compute node is essential for applications in scientific and engineering domains. However, several factors must be considered before utilizing these GPUs for scientific computing, including the implementation of data communication, the programming models available for use across these GPUs, and the level of performance that can be achieved with a single codebase across different GPU architectures and configurations within a single compute node. OpenMP Offloading is a prominent directive-based programming model that can be executed on all three GPU types: NVIDIA, AMD, and Intel. In this research, we present an analysis of the benefits and performance challenges of using OpenMP Offloading to address the 3D heat equations, which involve both primary computation, as well as halo computation and communication. For additional comparison and scalability study, we also consider the Conjugate Gradient method. We investigate how performance varies in relation to native GPU programming models-CUDA for NVIDIA, HIP for AMD, and SYCL for Intel. Furthermore, we demonstrate that OpenMP Offloading can achieve performance improvements of approximately 2x for 2 GPUs and around 4x for 4 GPUs when compared to single-GPU OpenMP Offloading implementations across all three GPU types. This analysis is conducted systematically through various OpenMP Offloading implementations that utilize different low-level APIs for memory allocation, memory transfer options (synchronous, asynchronous, and peer-to-peer), and other native GPU programming models such as CUDA(NVIDIA),HIP(AMD),and SYCL(Intel).