Julia: A Fresh Approach to Numerical Computing

@article{Bezanson2017JuliaAF,
  title={Julia: A Fresh Approach to Numerical Computing},
  author={Jeff Bezanson and Alan Edelman and Stefan Karpinski and Viral B. Shah},
  journal={SIAM Rev.},
  year={2017},
  volume={59},
  pages={65-98}
}
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 framework.

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.
...

References

SHOWING 1-10 OF 45 REFERENCES

Computing in Operations Research Using Julia

This paper explores how Julia, a modern programming language for numerical computing that claims to bridge this divide by incorporating recent advances in language and compiler design, can be used for implementing software and algorithms fundamental to the field of operations research, with a focus on mathematical optimization.

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.

Abstraction in technical computing

Aion in Technical Computing by Jeffrey Werner Bezanson A.B., Harvard University (2004) S.M., Massachusetts Institute of Technology (2012) andsubmitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy.

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.

Prospectus for the Next LAPACK and ScaLAPACK Libraries

Based on an on-going user survey and research by many people, the following improvements are proposed: Faster algorithms, including better numerical methods, memory hierarchy optimizations, parallelism, and automatic performance tuning to accommodate new architectures.

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.