Javascript must be enabled to continue!
Julia for Geophysical Fluid Dynamics: Performance Comparisons between CPU, GPU, and Fortran-MPI
View through CrossRef
Some programming languages are easy to develop at the cost of slow
execution, while others are lightning fast at run time but are much more
difficult to write. Julia is a programming language that aims to be the
best of both worlds—a development and production language at the same
time. To test Julia’s utility in scientific high-performance computing
(HPC), we built an unstructured-mesh shallow water model in Julia and
compared it against an established Fortran-MPI ocean model, MPAS-Ocean,
as well as a Python shallow water code. Three versions of the Julia
shallow water code were created, for: single-core CPU; graphics
processing unit (GPU); and Message Passing Interface (MPI) CPU clusters.
Comparing identical simulations revealed that our first version of the
single-core CPU Julia model was 13 times faster than Python. Further
Julia optimizations, including static typing and removing implicit
memory allocations, provided an additional 10–20x speed-up of the
single-core CPU Julia model. The GPU-accelerated Julia code is extremely
fast, with a speed-up of 230-380x compared to the single-core CPU Julia
code if communication with the GPU occurs every 10 time steps.
Parallelized Julia-MPI performance was identical to Fortran-MPI
MPAS-Ocean for low processor counts, and ranges from 2x faster to 2x
slower for higher processor counts. Our experience is that Julia
development is fast and convenient for prototyping, but that Julia
requires further investment and expertise to be competitive with
compiled codes. We provide advice on Julia code optimization for HPC
systems.
Title: Julia for Geophysical Fluid Dynamics: Performance Comparisons between CPU, GPU, and Fortran-MPI
Description:
Some programming languages are easy to develop at the cost of slow
execution, while others are lightning fast at run time but are much more
difficult to write.
Julia is a programming language that aims to be the
best of both worlds—a development and production language at the same
time.
To test Julia’s utility in scientific high-performance computing
(HPC), we built an unstructured-mesh shallow water model in Julia and
compared it against an established Fortran-MPI ocean model, MPAS-Ocean,
as well as a Python shallow water code.
Three versions of the Julia
shallow water code were created, for: single-core CPU; graphics
processing unit (GPU); and Message Passing Interface (MPI) CPU clusters.
Comparing identical simulations revealed that our first version of the
single-core CPU Julia model was 13 times faster than Python.
Further
Julia optimizations, including static typing and removing implicit
memory allocations, provided an additional 10–20x speed-up of the
single-core CPU Julia model.
The GPU-accelerated Julia code is extremely
fast, with a speed-up of 230-380x compared to the single-core CPU Julia
code if communication with the GPU occurs every 10 time steps.
Parallelized Julia-MPI performance was identical to Fortran-MPI
MPAS-Ocean for low processor counts, and ranges from 2x faster to 2x
slower for higher processor counts.
Our experience is that Julia
development is fast and convenient for prototyping, but that Julia
requires further investment and expertise to be competitive with
compiled codes.
We provide advice on Julia code optimization for HPC
systems.
Related Results
New approaches for resource management and job scheduling for HEP grid computing
New approaches for resource management and job scheduling for HEP grid computing
(English) The Large Hadron Collider (LHC) ALICE (A Large Ion Collider Experiment) experiment uses grid computing for its extensive data processing and analysis. The ALICE Grid is c...
Multidimensional Prognostic Index (MPI) in elderly patients with acute myocardial infarction
Multidimensional Prognostic Index (MPI) in elderly patients with acute myocardial infarction
Abstract
Background
Management of elderly patients with acute myocardial infarction (AMI) is challenging due to lack of knowledge about the link bet...
Heat transfer in supercritical fluids: computational approaches & studies
Heat transfer in supercritical fluids: computational approaches & studies
(English) This thesis delves into investigating the complexities of heat transfer in supercritical fluids through the application of advanced theoretical and computational methodol...
Feasibility and Diagnostic Performance of Functional SYNTAX Score Derived From Dynamic CT Myocardial Perfusion Imaging
Feasibility and Diagnostic Performance of Functional SYNTAX Score Derived From Dynamic CT Myocardial Perfusion Imaging
BACKGROUND:
Computed tomography (CT) fractional flow reserve (FFR)–derived functional SYNTAX score (FSS
CT-FFR
) is a valuabl...
Reorientasi Jurusan Manajemen Pendidikan Islam (MPI) Antara Tenaga Kependidikan dan Tenaga Pendidik
Reorientasi Jurusan Manajemen Pendidikan Islam (MPI) Antara Tenaga Kependidikan dan Tenaga Pendidik
Abstrak: This article discusses the problems faced by the majority of students MPI FTIK IAIN Purwokerto. On the one hand, there is the desire of MPI students to become educators, a...
Parallel metaheuristics on GPU
Parallel metaheuristics on GPU
Métaheuristiques parallèles sur GPU
Les problèmes d'optimisation issus du monde réel sont souvent complexes et NP-difficiles. Leur modélisation est en constante évo...
Performance and portability optimisation of HPC applications using PGAS models
Performance and portability optimisation of HPC applications using PGAS models
Optimisation du portage et des performances des applications HPC à mémoire distribuée et adressable globalement
Pour répondre aux besoins croissants en calculs scie...
PGAS-based Parallel Branch-and-Bound for Ultra-Scale GPU-powered Supercomputers
PGAS-based Parallel Branch-and-Bound for Ultra-Scale GPU-powered Supercomputers
Branch-and-Bound parallèle basé sur PGAS pour les supercalculateurs Ultra-Scale dotés de GPUs
Les algorithmes Branch-and-Bound (B&B) sont couramment utilisés po...

