high performance computing language,julia

19
Presented by D.ANUSHA G.SAILAJA HIGH PERFORMANCE COMPUTING LANGUAGE,JULIA

Upload: anusha-sweety

Post on 12-Jan-2017

538 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: High performance computing language,julia

Presented by

D.ANUSHA

G.SAILAJA

HIGH PERFORMANCE COMPUTING LANGUAGE,JULIA

Page 2: High performance computing language,julia

Introduction Importance of julia Features Julia with other programming languages Sample program on julia Advantages Disadvantages Conclusion

Contents

Page 3: High performance computing language,julia

Introduction

As high-performance computing (HPC) bends to the

needs of "big data" applications, speed remains essential

The programs are getting more and more complex and

time-consuming to develop. A few years ago, when an

HPC startup Edelman was involved in Interactive

Supercomputing .It was acquired by Microsoft and its

group set out to develop a programming language, julia.

Page 4: High performance computing language,julia

Julia is a high-level, high-performance dynamic

programming language for technical computing, with

syntax that is familiar to users of other technical

computing environments.

It provides a sophisticated compiler, distributed parallel

execution, numerical accuracy.

Why Julia

Page 5: High performance computing language,julia

The creators wanted a language that satisfies:

1.The speed of C.

2. With the dynamism of Ruby.

3. Mathematical notations like Matlab.

4. As usable for general programming as Python.

5.As easy for statistics as R.

Page 6: High performance computing language,julia

Multiple dispatchGood performanceBuilt-in package managerCall c functions directlyParallel computing

Special FEATURES of Julia

Page 7: High performance computing language,julia

All arguments are equally responsible to determine a method.In single dispatch the calls cat.run("fast") and cat.run(5) would dispatch to the same method and it is up to the method to do different things with the different types of the second parameter. In Julia run(cat, "fast") and run(cat, 5) dispatch to separate methods.

Multiple dispatch

Page 8: High performance computing language,julia

Julia’s LLVM-based just-in-time (JIT) compiler

combined with the language’s design allow it to

approach and often match the performance of C

Julia’s ability to compile code that reads like

Python into machine code that performs like C

almost entirely derives from Julia’s ability to

specialize function definitions in this way.

High-Performance JIT Compiler

Page 9: High performance computing language,julia

Execution time

Julia with other programming languages

Page 10: High performance computing language,julia

Foreign function interfaces to a number of

languages like C and Fortran, C++ (unfortunately

planned only for Julia 0.5), Python, R, Matlab.

This makes it relatively easy to use code in any of

these languages

Built-in package manager

Page 11: High performance computing language,julia

To allow easy use of this existing code, Julia

makes it simple and efficient to call C and

Fortran functions.

The machine instructions generated by Julia’s

JIT are the same as a native C call would be, so

the resulting overhead is the same as calling a

library function from C code.

Call c functions directly

Page 12: High performance computing language,julia

# julia

function mmult(A,B)

(M,N) = size(A);

C = zeros(M,M);

for i=1:M

for j=1:M

for k=1:M

C[i,j] += A[i,k]*B[k,j];

end

end

end

C;

end

// C

#define M 500

void mmult(double A[M][M],double B[M][M],doubleC[M][M])

{

//double C[M][M];

int i,j,k;

for(i=0; i<M; i++)

for(j=0; j<M; j++){

C[i][j] = 0;

for(k=0; k<M; k++)

C[i][j] += A[i][k]*B[k][j];

}

}

Sample program on julia

Page 13: High performance computing language,julia

Development of Julia

Page 14: High performance computing language,julia

Julia already possesses a mature package ecosystem and

can be used as a feature-complete replacement for R or

Python.

Julia’s compiler is so good that it will make any piece of

code fast – even bad code.

It's touted as a high-level language, which means it's

easier to learn. It's normally faster to write code in a

high-level language. 

Advantages

Page 15: High performance computing language,julia

Julia arrays are 1-indexed, which can really trip you up sometimes when you're used to Python, C/++, Java, etc.

Julia list comprehensions (currently) lack the ability to use conditionals, unlike Python. One can do this with for loops and if/else, though, as normally done.

Julia dictionaries are hashed differently than Python dictionaries, which can make them slower in many cases.

Disadvantages

Page 16: High performance computing language,julia

ConclusionJulia is a flexible dynamic language, appropriate for scientific and numerical computingJulia combines the features of many other programming languages like C, Matlab and Java etc.Existence of JIT Compiler in Julia increases the performance of computuing.

Page 18: High performance computing language,julia

ANY QUERIES???

Page 19: High performance computing language,julia

THANK YOU….