Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Slides:



Advertisements
Similar presentations
Guy Griffiths. General purpose interpreted programming language Widely used by scientists and programmers of all stripes Supported by many 3 rd -party.
Advertisements

Tahir Nawaz Introduction to.NET Framework. .NET – What Is It? Software platform Language neutral In other words:.NET is not a language (Runtime and a.
Beating the odds: winning programming contests Chris K. Young Presentation for 12ISP September 2004.
An Open-Source, Object-Oriented General Cartographic Transformation Program (GCTP) Michael S. Williams, Michael P. Finn*, and Robert A. Buehler** United.
What is a Programming Language? The computer operates using binary numbers. The computer only knows about 1’s and 0’s. Humans can also use 1’s and 0’s,
Open Source WGISS 39. Definition of Open Source Software (OSS)  Open source or open source software (OSS) is any computer software distributed under.
Compilers and Interpreters. Translation to machine language Every high level language needs to be translated to machine code There are different ways.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
Programming Concepts and Languages Chapter 12 – Computers: Understanding Technology, 3 rd edition 1November
Introduction Copyright © Software Carpentry 2011 This work is licensed under the Creative Commons Attribution License See
Python Introduction.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
Alan Edelman, Jeff Bezanson Viral Shah, Stefan Karpinski Jeremy Kepner and the vibrant open-source community Computer Science & AI Laboratories Novel Algebras.
CSC 110 A 1 CSC 110 Introduction to Python [Reading: chapter 1]
Introduction to Programming Language CS105 Programming Language First-generation: Machine language Second-generation: Assembly language Third-generation:
Introduction Purpose This training course introduces the free GNU tools that can be used for debugging embedded system application software in the Renesas.
Parallel Programming in Java with Shared Memory Directives.
Optimizing the trace transform Using OpenMP and CUDA Tim Besard
McLab Tutorial Part 6 – Introduction to the McLab Backends MATLAB-to-MATLAB MATLAB-to-Fortran90 (McFor) McVM with JIT 6/4/2011Backends-
Dr. Chris Musselle – Consultant R Meets Julia Dr Chris Musselle.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
STATUS UPDATE EM SUBCOMMITTEE Friedrich Roth, EM subcommittee chairman SEG 2012, Las Vegas Technical Standards Committee meeting.
Presented By: Avijit Gupta V. SaiSantosh.
Introduction to Julia: Why are we doing this to you? (Fall 2015) Steven G. Johnson, MIT Applied Math MIT classes , 18.06, ,
Compiler BE Panel IDC HPC User Forum April 2009 Don Kretsch Director, Sun Developer Tools Sun Microsystems.
Computer Programming I An Introduction to the art and science of programming with C++
Programming language A programming language is an artificial language designed to communicate instructions to a machine,languageinstructionsmachine particularly.
Programming History. Who was the first programmer?
Scientific Computing Beyond Matlab Nov 19, 2012 Jason Su.
Alan Edelman, Jeff Bezanson Viral Shah, Stefan Karpinski and the vibrant open-source community Computer Science & AI Laboratories
1 Computer Programming (ECGD2102 ) Using MATLAB Instructor: Eng. Eman Al.Swaity Lecture (1): Introduction.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Nick Draper 05/11/2008 Mantid Manipulation and Analysis Toolkit for ISIS data.
Introduction to C & C++ Lecture 10 – library JJCAO.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
SIMO SIMulation and Optimization ”New generation forest planning system” Antti Mäkinen Dept. of Forest Resource Management / University of Helsinki.
Copyright © 2006 Linux Care OÜ 1 “IST programme: new funding and collaboration opportunities” , Tallinn, Estonia Linux in Business use Linux.
Alan Edelman, Jeff Bezanson Viral Shah, Stefan Karpinski students in and the greater community Computer Science & AI Laboratories.
Intro to Python Programming (Part 1) Pamela Moore Zenia Bahorski Eastern Michigan University March 16, 2011 A language to swear by, not at.
SIMO SIMulation and Optimization ”New generation forest planning system” Antti Mäkinen & Jussi Rasinmäki Dept. of Forest Resource Management.
PROGRAMMING LANGUAGES
Programming for GCSE 1.0 Beginning with Python T eaching L ondon C omputing Margaret Derrington KCL Easter 2014.
LLVM Compiler Katie Dew. Lectures High-level overview of LLVM (Katie) Walkthrough of LLVM in context of our project (Jason) –Input requirements –Configuration.
Ch 1. A Python Q&A Session. Why do people use Python? Software Quality Developer productivity Program portability Support Libraries Component integration.
1 R&D via Open Source Software Robert Gentleman. 2 Overview  R&D  is expensive  typically involves many false starts  requires very flexible software.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
A Brief Introduction to the CSDMS Initiative Dr. Scott Peckham Chief Software Architect for CSDMS July 19, 2007 csdms.colorado.edu.
Compilers and Interpreters
Computer Programming Thinking in Code. Intro Computational Thinking Decompose Patterns General and Abstract Algorithms.
1 Programming and problem solving in C, Maxima, and Excel.
Computer Software 1.
Python Scripting for Computational Science CPS 5401 Fall 2014 Shirley Moore, Instructor October 6,
S5.40. Module Structure 30% practical tests / 70% written exam 3h lectures / week (except reading week) 3 x 2h of computer labs (solving problems practicing.
Bradley, Barbare, Wagner
Why don’t programmers have to program in machine code?
16CS202 & Software Engineering
Licenses and Interpreted Languages for DHTC Thursday morning, 10:45 am
Ch 1. A Python Q&A Session Bernard Chen 2007.
New trends in parallel computing
TRANSLATORS AND IDEs Key Revision Points.
Ethics of Free Software
CS105 Introduction to Computer Concepts Intro to programming
FEniCS = Finite Element - ni - Computational Software
Simulation And Modeling
Test Process “V” Diagram
1.3.7 High- and low-level languages and their translators
Introduction to Computer Science
Presentation transcript:

Julia A fast dynamic language for technical computing Tim Besard

Scientific programming is done inefficiently Over 40 domain-specific computing environments – Low program interoperability – High programmer learning effort A general-purpose language could subsume these projects – Has happened before

Julia is a fresh approach to technical computing Free and Open-Source – Code at GitHub – MIT licensed Actively developed – 147 core contributors – 141 accepted packages – > 1000 mailing list-subscribers

Vision behind Julia makes it stand out Familiar yet flexible Performance without compromises Easily extensible High interoperability

Familiar yet flexible Resembles other technical computing environments function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for i = 1:t a = randn(n,n); b = randn(n,n) c = randn(n,n); d = randn(n,n) P = [a b c d] Q = [a b; c d] v[i] = trace((P'*P)^4) w[i] = trace((Q'*Q)^4) end std(v)/mean(v), std(w)/mean(w) end

Familiar yet flexible Resembles other technical computing environments Most functionality isolated in the standard library – Unobtrusive – General-purpose core

Performance without compromises Typical compromise: use of low-level languages – Creates development barriers Julia offers high code-efficiency – Design decisions – LLVM JIT-compiler

Performance without compromises Execution time relative to C Fortran Julia Python MATLAB Take this with a grain of salt: real-life performance can still let down

Julia is extensible Standard library written in Julia Dynamic environment Integrated package manager

High interoperability No boilerplate philosophy t = ccall((:clock, “libc”), Int32, () )

High interoperability No boilerplate philosophy – Reuse is easy – BLAS, LAPACK, SuiteSparse, … Built-in:C, Fortran Contributed:Python, MATLAB

Try it out! Binaries available at Source available at

Tim Besard A step towards general-purpose scientific computing Julia