Effective Extensible Programming: Unleashing Julia on GPUs
arXiv:1712.03112 · doi:10.1109/TPDS.2018.2872064
Abstract
GPUs and other accelerators are popular devices for accelerating compute-intensive, parallelizable applications. However, programming these devices is a difficult task. Writing efficient device code is challenging, and is typically done in a low-level programming language. High-level languages are rarely supported, or do not integrate with the rest of the high-level language ecosystem. To overcome this, we propose compiler infrastructure to efficiently add support for new hardware or environments to an existing programming language. We evaluate our approach by adding support for NVIDIA GPUs to the Julia programming language. By integrating with the existing compiler, we significantly lower the cost to implement and maintain the new compiler, and facilitate reuse of existing application code. Moreover, use of the high-level Julia programming language enables new and dynamic approaches for GPU programming. This greatly improves programmer productivity, while maintaining application performance similar to that of the official NVIDIA CUDA toolkit.
Cited by in corpus (43)
- Variational Quantum Eigensolver with Fewer Qubits
- Yao.jl: Extensible, Efficient Framework for Quantum Algorithm Design
- Julia Language in Machine Learning: Algorithms, Applications, and Open Issues
- Adaptive numerical simulations with Trixi.jl: A case study of Julia for scientific computing
- A high-performance code for EPRL spin foam amplitudes
- KomaMRI.jl: An Open-Source Framework for General MRI Simulations with GPU Acceleration
- Evaluation of OpenAI Codex for HPC Parallel Programming Models Kernel Generation
- Molecular photodissociation enabled by ultrafast plasmon decay
- Computing solution space properties of combinatorial optimization problems via generic tensor networks
- How-To compute EPRL spin foam amplitudes
- The effect of boson-boson interaction on the Bipolaron formation
- QuantumToolbox.jl: An efficient Julia framework for simulating open quantum systems
- Markov Chain Monte Carlo methods for graph refinement in Spinfoam Cosmology
- Macroscopic Hyperpolarization Enhanced with Quantum Optimal Control
- QuantumDynamics.jl: A modular approach to simulations of dynamics of open quantum systems
- Automated Translation and Accelerated Solving of Differential Equations on Multiple GPU Platforms
- Stability analysis and attractor dynamics of 3D dark solitons with localized dissipation
- GroupCDL: Interpretable Denoising and Compressed Sensing MRI via Learned Group-Sparsity and Circulant Attention
- WaterLily.jl: A differentiable and backend-agnostic Julia solver for incompressible viscous flow around dynamic bodies
- GRASS II: Simulations of Potential Granulation Noise Mitigation Methods
- JuliQAOA: Fast, Flexible QAOA Simulation
- A Hilbertian projection method for constrained level set-based topology optimisation
- Bring the BitCODE -- Moving Compute and Data in Distributed Heterogeneous Systems
- Regimes of Steady-State Turbulence in a Quantum Fluid
- Phase diagram of a ferromagnetic semiconductor. The origin of superparamagnetism
- Comparing Llama-2 and GPT-3 LLMs for HPC kernels generation
- Thermodynamic signature of the spin-orbital liquid and symmetry fractionalization from the Lieb-Schultz-Mattis theorem
- MetaFEM: A Generic FEM Solver By Meta-expressions
- Spatial and color hallucinations in a mathematical model of primary visual cortex
- EBIC.JL -- an Efficient Implementation of Evolutionary Biclustering Algorithm in Julia
- Dynamic dimensional reduction in the Abelian sandpile
- Characterizing GPU Energy Usage in Exascale-Ready Portable Science Applications
- FdeSolver: A Julia Package for Solving Fractional Differential Equations
- Self-consistent tensor network method for correlated super-moiré matter beyond one billion sites
- Engineering artificial atomic systems of giant electric dipole moment
- On the Effect of Nucleation Undercooling on Phase Transformation Kinetics
- Simple yet Accurate Stochastic Approach to the Quantum Phase Noise of Nanolasers
- Julia in HEP
- Dynamic Hologram Generation with Automatic Differentiation
- FreeBird.jl: An Extensible Toolbox for Simulating Interfacial Phase Equilibria
- A Monte Carlo Method for 3D Radiative Transfer Equations with Multifractional Singular Kernels
- A GPU-Parallelized Interpolation-Based Fast Multipole Method for the Relativistic Space-Charge Field Calculation
- On the performance of GPU accelerated q-LSKUM based meshfree solvers in Fortran, C++, Python, and Julia