The Julia Language Seminar Talk. Francisco Vidal Meca

Similar documents
Computational Mathematics with Python

Computational Mathematics with Python

Computational Mathematics with Python

HIGH PERFORMANCE BIG DATA ANALYTICS

Programming Languages & Tools

Scientific Programming, Analysis, and Visualization with Python. Mteor 227 Fall 2015

Introduction to Scientific Computing

Introduction Installation Comparison. Department of Computer Science, Yazd University. SageMath. A.Rahiminasab. October9, / 17

MEng, BSc Computer Science with Artificial Intelligence

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

Fall 2012 Q530. Programming for Cognitive Science

Data Analytics at NERSC. Joaquin Correa NERSC Data and Analytics Services

Part I Courses Syllabus

MEng, BSc Applied Computer Science

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Why (and Why Not) to Use Fortran

Big Data and Big Analytics

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

HPC Wales Skills Academy Course Catalogue 2015

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

1 Bull, 2011 Bull Extreme Computing

Introduction to MATLAB for Data Analysis and Visualization

Numerical Analysis. Professor Donna Calhoun. Fall 2013 Math 465/565. Office : MG241A Office Hours : Wednesday 10:00-12:00 and 1:00-3:00

Python Documentation & Startup

Introduction to Python

EQUATIONS and INEQUALITIES

Data Analysis with MATLAB The MathWorks, Inc. 1

Data Visualization in Julia

High Productivity Computing With Windows

Analytic Modeling in Python

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University

IDL. Get the answers you need from your data. IDL

Spring 2011 Prof. Hyesoon Kim

Session 85 IF, Predictive Analytics for Actuaries: Free Tools for Life and Health Care Analytics--R and Python: A New Paradigm!

Mathematical Libraries on JUQUEEN. JSC Training Course

HSL and its out-of-core solver

SCIENTIFIC COMPUTING AND PROGRAMMING IN THE CLOUD USING OPEN SOURCE PLATFORMS: AN ILLUSTRATION USING WEIGHTED VOTING SYSTEMS

22S:295 Seminar in Applied Statistics High Performance Computing in Statistics

Driving Big Data With Big Compute

Introduction to Python

Rational Developer for IBM i (RDi) Introduction to RDi

High Performance. CAEA elearning Series. Jonathan G. Dudley, Ph.D. 06/09/ CAE Associates

Postprocessing with Python

Availability of the Program A free version is available of each (see individual programs for links).

FDVis: the Interactive Visualization and Steering Environment for the Computational Processes Using the Finite-Difference Method

APPLICATION FOR PART-TIME EMPLOYMENT AS A TUTOR TUTOR IN THE DOLCIANI MATHEMATICS LEARNING CENTER

WESTMORELAND COUNTY PUBLIC SCHOOLS Integrated Instructional Pacing Guide and Checklist Computer Math

Chapter 12. Development Tools for Microcontroller Applications

Parallel Computing using MATLAB Distributed Compute Server ZORRO HPC

An Introduction to Using Python with Microsoft Azure

Modeling, Computers, and Error Analysis Mathematical Modeling and Engineering Problem-Solving

Data Science. Brian Sletten

Madagascar - a powerful software package for multidimensional data analysis and reproducible computational experiments

Collaborative Open Market to Place Objects at your Service

BIOINF 585 Fall 2015 Machine Learning for Systems Biology & Clinical Informatics

Sneaking up on Slope

Programming with the Dev C++ IDE

Matrix Multiplication

Core Curriculum to the Course:

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

Using WestGrid. Patrick Mann, Manager, Technical Operations Jan.15, 2014

Introduction to ACENET Accelerating Discovery with Computational Research May, 2015

Please consult the Department of Engineering about the Computer Engineering Emphasis.

Why Get an M.Eng. in CS or Anything Else? Prof. Charlie Van Loan CS M.Eng. Program Director

Introduction to MATLAB Gergely Somlay Application Engineer

Quickstart for Desktop Version

Computer Graphics AACHEN AACHEN AACHEN AACHEN. Public Perception of CG. Computer Graphics Research. Methodological Approaches

Introduction to Parallel Programming and MapReduce

Microsoft Research Windows Azure for Research Training

College of Science Department of Mathematics and Computer Science. Assessment Plan Computer Science and Computer Networks

Virtual Disk Drive Design Game with Links to Math, Physics and Dissection Activities

Big Data Analytics. Tools and Techniques

Computing, technology & Data Analysis in the Graduate Curriculum. Duncan Temple Lang UC Davis Dept. of Statistics

Scientific Computing Programming with Parallel Objects

Algebra I Credit Recovery

Microsoft Research Microsoft Azure for Research Training

Chaco: A Plotting Package for Scientists and Engineers. David C. Morrill Enthought, Inc.

Cabrillo College Catalog

Simulation Tools. Python for MATLAB Users I. Claus Führer. Automn Claus Führer Simulation Tools Automn / 65

Minnesota Academic Standards

CSE 233. Database System Overview

Computer Science Information Sheet for entry in What is Computer Science?

FreeFem++-cs, the FreeFem++ Graphical Interface

Open is as Open Does: Lessons from Running a Professional Open Source Company

Transcription:

The Julia Language Seminar Talk Francisco Vidal Meca Languages for Scientific Computing Aachen, January 16, 2014

Why Julia? Many languages, each one a trade-off Multipurpose language: scientific computing machine learning data mining large-scale linear algebra distributed and parallel computing "In short, because we are greedy. (We) want to have it all." [1] The Julia Language 3

Julia and Scientific Computing Julia is "A fresh approach to technical computing" High level and high performance Easy syntax Parallelism & Cloud computing Graphs Free and Open source Developed in the MIT Version 1.0 released February 2012 The Julia Language 4

About Julia Multi-paradigm Homoiconic Dynamic Easy integration with C/Fortran Multiple-dispatch Just-in-time(JIT) LLVM-based compiler Free and open source Core under MIT license Libraries under GPL, LGPL, BSD Environment under GPL Numerical accuracy The Julia Language 6

Parallelism and Cloud computing Key factor in Julia s design Building blocks for distributed computation Multiple worker processes Local Remote Different from other environments such as MPI Built on remote references and remote calls Simplified with macros, e.g., @paralell Example function TicToc(N) tic(); nh = @parallel (+) for i=1:n int(randbool()) end; s=toc(); println("num. Heads: $nh ") println("in $s seconds") end The Julia Language 7

Mathematical functions Extensive Math function library Integrates C and Fortran libraries Linear Algebra Random number generation Signal processing String processing The Julia Language 8

Integration Example Calling external functions in C/Fortran Need to be Shared Library Called directly with ccal ccal((:function,"library"),rettype,inputtypes,inputs) julia> t = ccall( (:clock, "libc"), Int32, ()) 2292761 julia> t 2292761 The Julia Language 9

Performance 10 4 10 3 10 2 10 1 10 0 benchmark rand_mat_mul rand_mat_stat pi_sum printfd mandel quicksort fib parse_int 10-1 Julia Fortran Go JavaScript Python Mathematica R Matlab Octave Figure: Benchmark times [1] relative to C 1. 1 Smaller is better, C performance = 1.0 The Julia Language 10

Plotting with Julia 1 1 0.5 inset 0 Not in the core Julia System Add-on package "Winston" 0.5 0 0.5 0.5 1 0 1 2 3 4 5 6 Julia and GNUplot 1 0 1 2 3 4 5 6 Figure: Error bars and plot composition. The Julia Language 11

title! 1 title 0.5 Θ i 0 0.5 1 0 2 4 6 8 Σx 2 i x label 100 80 a points b points slope top 10 100 1000 1 1 0.5 1/2 60 left 0 0 right 40 0.5 1/2 20 1 1 3 4 5 6 7 8 9 0 bottom 0 20 40 60 80 100 The Julia Language 12

Developer community External packages Built in package manager IJulia Browser-based graphical notebook interface IPython and Julia community E.g.: Prof. Edelman s notes for the Parallel Computing class Active community Mailing list GitHub Youtube channel JuliaLanguage StackOverflow Users meetup (today in San Francisco Bay Area)... The Julia Language 13

Conclusion Multi-purpose language High level and easy syntax High performance Graphs Parallelism & Cloud computing Integration Free and Open Source Uses BigFloats, Combinatorics, Statistics LAPACK for Linear algebra SuiteSparse for Sparse factorizations Provides BLAS functions wrappers Signal processing, FFT functions from FFTW The Julia Language 15

Conclusion Multi-purpose language High level and easy syntax High performance Graphs Parallelism & Cloud computing Integration Free and Open Source Example function mandel(z) c = z maxiter = 80 for n = 1:maxiter if abs(z) > 2 return n-1 end z = z^2 + c end return maxiter end The Julia Language 15

Conclusion Multi-purpose language High level and easy syntax 10 4 High performance 10 3 benchmark Graphs 10 2 rand_mat_mul rand_mat_stat pi_sum printfd Parallelism & Cloud computing 10 1 10 0 10-1 mandel quicksort fib parse_int Integration Julia Fortran Go JavaScript Python Mathematica R Matlab Octave Free and Open Source The Julia Language 15

Conclusion Multi-purpose language High level and easy syntax High performance Graphs Parallelism & Cloud computing Integration Free and Open Source The Julia Language 15

Conclusion Multi-purpose language High level and easy syntax High performance Graphs Parallelism & Cloud computing Integration Free and Open Source Example dzeros(100,100,10) dones(100,100,10) drand(100,100,10) dfill(x, 100,100,10) The Julia Language 15

Conclusion Multi-purpose language High level and easy syntax High performance Graphs Parallelism & Cloud computing Integration Free and Open Source Easy integration with C Fortran Shell Pipes The Julia Language 15

So... what is Julia? Julia has the performance of a statically compiled language while providing the interactive, dynamic experience and productivity that scientists have come to expect.... Julia is a game changer for high performance computing." [4] Try Julia! Online Julia + tutorial http://forio.com/julia/repl/ The Julia Language 16

References Leah Hanson Shah, V.; Edelman, A.; Karpinski, S.; Bezanson, J.; Kepner, J The Julia Language (Last accessed on Jan 2014) http://julialang.org Leah Hanson Learn Julia in Y minutes (Last accessed on Nov 2013) http://learnxinyminutes.com/docs/julia/ Douglas Eadline Parallel Julia (Last accessed on Dec 2013) HPC - ADMIN Magazine http://www.admin-magazine.com/hpc/ Articles/Parallel-Julia-Jumping-Right-In Shah, V.; Edelman, A.; Karpinski, S.; Bezanson, J.; Kepner, J Novel algebras for advanced analytics in Julia High Performance Extreme Computing Conference (HPEC), 2013 The Julia Language 17

Demo and examples See how Julia works: 1 @parallel example and number of processors 2 Alternating harmonic series approximation 3 Plots Feel free to ask! The Julia Language 18

Performance (2) Figure: Benchmark times [1] relative to C. The Julia Language 19

IJulia Figure: IJulia Screenshot The Julia Language 20

Debugging in Julia Debugging is possible in Julia Not integrated (yet) into the core language Only guidelines to debug Julia s C code in the FAQ section 2 Found some documentation about it in GitHub Julia Debugging Procedures using GDB 3 Prototype interactive debugger Debug as external package 4 2 http://docs.julialang.org/en/latest/manual/faq 3 https://gist.github.com/staticfloat/6188418 4 https://github.com/toivoh/debug.jl The Julia Language 21