Julia: A Fresh Approach to Numerical Computing

  title={Julia: A Fresh Approach to Numerical Computing},
  author={Jeff Bezanson and Alan Edelman and Stefan Karpinski and Viral B. Shah},
  journal={SIAM Rev.},
Bridging cultures that have often been distant, Julia combines expertise from the diverse fields of computer science and computational science to create a new approach to numerical computing. Julia is designed to be easy and fast and questions notions generally held to be “laws of nature" by practitioners of numerical computing: \beginlist \item High-level dynamic programs have to be slow. \item One must prototype in one language and then rewrite in another language for speed or deployment… 

Figures and Tables from this paper

Julia Language in Computational Mechanics: A New Competitor

A comprehensive survey on the use of the Julia language in computational mechanics is presented and the existing numerical computing packages developed in the Julialanguage and their relevant applications are introduced.

Julia for Biologists

An analogy to a more standard tool of a biologist – a pipettor – is used to develop some intuition for the important role of abstraction in an abstract programming language.

Fast Flexible Function Dispatch in Julia

The Julia language attempts to provide a more effective structure for technical computing by allowing programmers to express complex polymorphic behaviors using dynamic multiple dispatch over parametric types, and is reported on how this approach has allowed domain experts to express useful abstractions while simultaneously providing a natural path to better performance for high-level technical code.

Bridging HPC Communities through the Julia Programming Language

This work examines the current practice and role of Julia as a common, end-to-end programming model to address major challenges in scientific reproducibility, data-driven AI/machine learning, co-design and workflows, scalability and performance portability in heterogeneous computing, network communication, data management, and community education.

Efficient Stochastic Programming in Julia

The StochasticPrograms.jl framework can reduce the barrier to entry for incoming practitioners of stochastic programming by providing both an intuitive interface for new users and an extensive development environment for expert users by providing strong scaling properties of the distributed algorithms on numerical benchmarks in a multinode setup.

Computer Algebra in JULIA

The aim of this paper is to combine the usage of Julia framework for numerical computations and for symbolic computations in mathematical modeling problems and to conclude that it is possible (and even convenient) to use computer algebra systems within the Julia ecosystem.

Interval Computations in Julia programming language

It is very important for researchers, working in a field of interval analysis, to have fast, efficient and robust publicly available software packages for performing computations with interval arithmetic written in Julia.

LazySets.jl: Scalable Symbolic-Numeric Set Computations

The basic functionality of LazySets is showcased, highlighting some of the key design choices and its scope goes beyond reachability and formal verification to include computations that mix symbolics and numerics.

High-performance symbolic-numerics via multiple dispatch

This work details an underlying abstract term interface which allows for speed without sacrificing generality, and shows that by formalizing a generic API on actions independent of implementation, it can retroactively add optimized data structures to the system without changing the pre-existing term rewriters.

Probabilistic Programming in Julia New Inference Algorithms

The main novel contributions of this thesis are a workable H MC sampler in Turing with acceptable performance as well as an updated version of the compiler which supports this HMC sampler and the further development of a Gibbs sampler combining HMC and PG.



Julia: A Fast Dynamic Language for Technical Computing

Julia is presented, a new dynamic language for technical computing, designed for performance from the beginning by adapting and extending modern programming language techniques, which enables an expressive programming model and successful type inference, leading to good performance for a wide range of programs.

Array Operators Using Multiple Dispatch: A design methodology for array implementations in dynamic languages

This work has come to believe that while multiple dispatch has not been especially popular in most kinds of programming, technical computing is its killer application, and has developed an approach that yields a novel trade-off between flexibility and compile-time analysis.

Star-P: High Productivity Parallel Computing

The focus of Star-P is to improve user productivity in parallel programming, and it is believed that it can dramatically reduce the difficulty of programming parallel computers by reducing the time needed for development and debugging.

Parallel programming and code selection in fortress

This work discusses ideas for using a rich parameterized polymorphic type system to organize multithreading and data distribution on large parallel machines.

Parallel MATLAB: Doing it Right

This work discusses the approaches the projects have taken to parallelize MATLAB, and describes innovative features in some of the parallel MATLAB projects, and gives an example of what it thinks is a "right" parallel MATLab.

Convex Optimization in Julia

Convex translates problems from a user-friendly functional language into an abstract syntax tree describing the problem, which allows Convex to infer whether the problem complies with the rules of disciplined convex programming (DCP), and to pass the problem to a suitable solver.

Engineering and Scientific Computing with Scilab

This book gives a thorough description of SciLab's use, including how to master its environment and programming language, the use of Sci Lab's integrated graphics, the integration of use provided functions, and a tour of its numerous applications toolboxes.

Interactive Supercomputing with PPMatlab

MITMatlab is a system that enables users of supercomputers or networked PCs to work on large data sets within Matlab transparently, which has implications not only in supercomputing, but for Artificial Intelligence applicatons such as Machine Learning, Information Retrieval and Image Processing.

LLVM: a compilation framework for lifelong program analysis & transformation

The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.

Parallel Programmability and the Chapel Language

A candidate list of desirable qualities for a parallel programming language is offered, and how these qualities are addressed in the design of the Chapel language is described, providing an overview of Chapel's features and how they help address parallel productivity.